Kolla-ansible 배포 레지스트리 구축: rocky



 

오픈스택 공식 홈페이지에 있는 있는 순서대로 진행을 하면 kolla-ansible precheck 부분에서 진행이 안되는 경우가 발생합니다.

docker registry 부분이 설정이 맞지 않아 docker SDK 버전 체크 부분에서 진행 되지 않습니다.

또, 공홈에는 Controller 노드에서 배포를 진행 하는데, Deploy 서버를 구축해서 Control, compute 따로 따로 진행 할 수 도 있습니다.

그래서 배포 서버를 구축을 해보겠습니다.

 

Deploy Node

기본적인 설치 항목들

$ yum -y install epel-release
$ yum -y update
$ yum -y install python2-pip wget 
$ pip install -U pip
$ yum install ansible
$ pip install -U ansible

Docker의 설치

Docker로 Private registry를 구축 할 예정이기 때문에, 우선 도커를 설치 합니다.

$ curl -sSL https://get.docker.io | bash
$ mkdir -p /etc/systemd/system/docker.service.d

$ tee /etc/systemd/system/docker.service.d/kolla.conf <<-'EOF'
[Service]
MountFlags=shared
EOF

$ systemctl daemon-reload
$ systemctl restart docker

Docker Run

레지스트리 컨테이너를 가지고 도커 레지스트리를 구축하는 과정입니다.

$ mkdir -p /app/docker/registry
$ docker run -d -p 4000:5000 -v /app/docker/registry:/var/lib/registry --restart=always --name registry registry:2.7.1
$ docker ps -a

Kolla 설치

$ pip install kolla --ignore-installed PyYAML
$ pip install kolla-ansible
$ cp -r /usr/share/kolla/etc_examples/kolla /etc/

$ git clone https://github.com/openstack/kolla
$ git clone https://github.com/openstack/kolla-ansible

$ pip install -r kolla/requirements.txt
$ pip install -r kolla-ansible/requirements.txt

$ cd kolla-ansible
$ python setup.py install
$ cd ..
$ cp -r kolla-ansible/etc/kolla/* /etc/kolla

컨테이너 내려 받기

내려받기 전에 /etc/kolla/ 밑에 globals.yml 파일을 수정 해줍니다. 수정 해야하는 부분만 표기 해보겠습니다.

kolla_base_distro: "centos"
kolla_install_type: "source"
openstack_release: "rocky"
network_interface: "enp6s0"   <-배포서버의 네트워크 인터페이스 이름으로 수정합니다.

위 부분들은 반드시 수정을 해주셔야, kolla-ansible을 통해 컨테이너를 pulling 할 수 있습니다.

$ kolla-ansible pull -vvv
$ docker images

pull을 하고나서 images를 조회 해보면 오픈스택에서 사용하는 컨테이너들이 도커 레지스트리에 올라옵니다.

아래와 같은 명령으로 tag를 수정해서 push 합니다.

$ docker images | grep kolla | grep -v local | awk '{print $1,$2}' | while read -r image tag; do
docker tag ${image}:${tag} localhost:4000/${image}:${tag}
docker push localhost:4000/${image}:${tag}
done

$ curl -XGET http://localhost:4000/v2/_catalog
{"repositories":["kolla/centos-binary-chrony","kolla/centos-binary-cron","kolla/centos-binary-fluentd","kolla/centos-binary-glance-api","kolla/centos-binary-haproxy","kolla/centos-binary-heat-api","kolla/centos-binary-heat-api-cfn","kolla/centos-binary-heat-engine","kolla/centos-binary-horizon","kolla/centos-binary-keepalived","kolla/centos-binary-keystone","kolla/centos-binary-keystone-fernet","kolla/centos-binary-keystone-ssh","kolla/centos-binary-kolla-toolbox","kolla/centos-binary-mariadb","kolla/centos-binary-memcached","kolla/centos-binary-neutron-dhcp-agent","kolla/centos-binary-neutron-l3-agent","kolla/centos-binary-neutron-metadata-agent","kolla/centos-binary-neutron-openvswitch-agent","kolla/centos-binary-neutron-server","kolla/centos-binary-nova-api","kolla/centos-binary-nova-compute","kolla/centos-binary-nova-conductor","kolla/centos-binary-nova-consoleauth","kolla/centos-binary-nova-libvirt","kolla/centos-binary-nova-novncproxy","kolla/centos-binary-nova-placement-api","kolla/centos-binary-nova-scheduler","kolla/centos-binary-nova-ssh","kolla/centos-binary-openvswitch-db-server","kolla/centos-binary-openvswitch-vswitchd","kolla/centos-binary-rabbitmq","kolla/centos-source-chrony","kolla/centos-source-cron","kolla/centos-source-fluentd","kolla/centos-source-glance-api","kolla/centos-source-haproxy","kolla/centos-source-heat-api","kolla/centos-source-heat-api-cfn","kolla/centos-source-heat-engine","kolla/centos-source-horizon","kolla/centos-source-keepalived","kolla/centos-source-keystone","kolla/centos-source-keystone-fernet","kolla/centos-source-keystone-ssh","kolla/centos-source-kolla-toolbox","kolla/centos-source-mariadb","kolla/centos-source-memcached","kolla/centos-source-neutron-dhcp-agent","kolla/centos-source-neutron-l3-agent","kolla/centos-source-neutron-metadata-agent","kolla/centos-source-neutron-openvswitch-agent","kolla/centos-source-neutron-server","kolla/centos-source-nova-api","kolla/centos-source-nova-compute","kolla/centos-source-nova-conductor","kolla/centos-source-nova-consoleauth","kolla/centos-source-nova-libvirt","kolla/centos-source-nova-novncproxy","kolla/centos-source-nova-placement-api","kolla/centos-source-nova-scheduler","kolla/centos-source-nova-ssh","kolla/centos-source-openvswitch-db-server","kolla/centos-source-openvswitch-vswitchd","kolla/centos-source-rabbitmq"]}

이런 식으로 카타로그를 불러 올 수 있으면 구축에 성공한겁니다. 저 같은 경우는 source와 binary를 모두 구축해서 리스트가 길어졌습니다.

 

Target Node

배포 받는 서버에도 Docker를 설치합니다. 타겟 노드의 docker의 옵션은 아래와 같이 설정합니다.

$curl -sSL https://get.docker.io | bash
$echo 'INSECURE_REGISTRY="--insecure-registry 192.168.122.71:4000"' > /etc/sysconfig/docker

$ tee /etc/systemd/system/docker.service <<-'EOF'
# CentOS
[Service]
MountFlags=shared
EnvironmentFile=/etc/sysconfig/docker
ExecStart=/usr/bin/docker daemon $INSECURE_REGISTRY
EOF

$ systemctl daemon-reload
$ systemctl restart docker

INSECURE_REGISTRY=”–insecure-registry” 의 ip 주소는 배포서버의 IP입니다.

$ docker pull kolla/centos-binary-kolla-toolbox:3.0.1

위와 같이 명령어를 넣으면 해당 노드에 컨테이너를 Pull 할 수 있습니다.

오픈스택을 사용하면서 필요한 컨테이너를 그때 그때 추가 할 수 있습니다.



You may also like...

5 Responses

  1. openstack says:

    안녕하세요 포스팅 잘 봤습니다.

    저 같은 경우는 도커이미지를 pull 하면 kolla/centos-binary-nova-placement-api 이미지가 다운이 안되는데 혹시 해결할 방법이 있을까요?
    도커 허브에서 검색하면 보이는데 다운로드만 하려고 하면 에러가 발생하네요

    • openstack says:

      kolla/centos-source-placement-api:queens 이 이미지 입니다. kolla/centos-source-placement-api:rocky 도 마찬가지로 다운로드가 안되네요

    • Rasta Lion says:

      레포지토리 구축한 것을 kolla 의 ansible 플레이북을 수정해서 연결해줘야 합니다. ansible 을 열면 레포지토리에 연결해서 도커를 가져오는 부분이 있는데, 그 부분을 자체 구축한 도커레포에 연결해주시면 됩니다. 근데 지금 rocky 버전은 공식 레포에서 정상적으로 가져올텐데요?

      • openstack says:

        kolla-ansible 멀티 노드로 설치시도 하고 있는데요, 설치 중간에
        kolla/centos-binary-nova-placement-api 가 아닌
        kolla/centos-binary-placement-api 이미지를 다운로드시도를 하려고 하는데요, 도커 허브에서는 kolla/centos-binary-placement-api 이미지가 있긴하지만 다운로드가 안되고 에러 나네요. rocky, queens 버전 둘다 안됩니다. 혹시 같은 경험 있으신지요?

        kolla/centos-binary-nova-placement-api 와 kolla/centos-binary-placement-api 이미지가 같은거라 태그만 바꿔주면 되는건지 알 수가 없네요;

Leave a Reply

Your email address will not be published. Required fields are marked *