ローカルAnsible GalaxyをKubernetes上へデプロイ
はじめに
前回Docker ComposeでAnsible Galaxyをローカル環境に立ち上げましたが、ボリュームの永続化には対応しておらず、あくまで試用にしか使えませんでした。
今回はボリュームの永続化がてら、Docker ComposeからKubernetes(k3s)環境へ置き換えをします。
環境
Ubuntu Server 20.04
k3s v1.18.2+k3s1
Ansible Galaxy 3.4.4
コンテナイメージビルド用にMacOSX+Docker Desktopも使います。
Dockerイメージのビルド
リポジトリをクローンして、
$ git clone https://github.com/ansible/galaxy.git
$ cd galaxy/
$ git checkout refs/tags/v3.4.4
Docker ComposeのYAMLファイルを見てみます。
---
version: '3'
services:
galaxy:
image: galaxy-dev:latest
volumes:
- ${PWD}:/galaxy:z
ports:
- '8000:8000'
depends_on:
- postgres
- influxdb
- rabbitmq
- redis
postgres:
image: postgres:9.5
ports:
- '2345:5432'
environment:
- POSTGRES_DB=galaxy
- POSTGRES_USER=galaxy
- POSTGRES_PASSWORD=galaxy
influxdb:
image: influxdb:latest
ports:
- '8086:8086'
environment:
- INFLUXDB_REPORTING_DISABLED=true
- INFLUXDB_DB=galaxy
- INFLUXDB_ADMIN_USER=admin
- INFLUXDB_ADMIN_PASSWORD=admin
- INFLUXDB_WRITE_USER=galaxy
- INFLUXDB_WRITE_USER_PASSWORD=galaxy
rabbitmq:
image: rabbitmq:latest
environment:
- RABBITMQ_DEFAULT_USER=galaxy
- RABBITMQ_DEFAULT_PASS=galaxy
- RABBITMQ_DEFAULT_VHOST=galaxy
redis:
image: redis:latest
「${PWD}:/galaxy:z」の部分でリポジトリ全体を/galaxyにマウントさせています。
開発時の効率を考慮してのものと思われますが、このディレクトリ自体は永続化させる必要がなさそうなのでコンテナイメージに最初から含めてしまいましょう。
Dockerfileのパスはscripts/docker/dev/Dockerfileです。
以下のようにCOPY句を追加します。
--- scripts/docker/dev/Dockerfile.org 2020-06-14 20:32:54.000000000 +0900
+++ scripts/docker/dev/Dockerfile 2020-06-11 18:02:23.000000000 +0900
@@ -58,6 +58,8 @@
COPY scripts/docker/galaxy-importer.cfg /etc/galaxy-importer/galaxy-importer.cfg
+COPY ./ /galaxy/
+
WORKDIR /galaxy
ENTRYPOINT ["/entrypoint"]
CMD ["start", "tmux"]
編集したらイメージをビルド。
$ make dev/build
完了すると、以下のように「galaxy-dev:latest」というイメージが出来上がっています。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
galaxy-dev latest 100b9daef703 7 minutes ago 970MB
k3sクラスタが読み出し可能なコンテナレジストリにPushしておきましょう。
今回はGitlabのレジストリを使ってみました。
$ docker tag galaxy-dev:latest registry.gitlab.com/ussvgr/ansible-galaxy-k8s/galaxy-dev:3.4.4
$ docker push registry.gitlab.com/ussvgr/ansible-galaxy-k8s/galaxy-dev:3.4.4
k8s用YAML作成
Docker Compose用のYAMLファイルからk8s用のYAMLを作成していきます。
いろいろ触ってみた結果、ファイルの永続化が必要な対象は以下だと思われます。
- galaxy-devコンテナの/var/lib/galaxy
- PostgreSQLの/var/lib/postgresql/data
- InfluxDBの/var/lib/influxdb
これらをPVCで永続化したYAMLをこちらに置きました。
ansible-galaxyというNamespaceを作成し、その配下に必要なリソースを作成するようにしています。
$ kubectl apply -f ansible-galaxy.yml
としてデプロイ、
$ kubectl logs -f galaxy-0 -c galaxy -n ansible-galaxy
で進捗を確認し、
Starting tmux...
となればOKです。
管理者ユーザー作成
以下コマンドで作成します。
$ kubectl exec -it galaxy-0 -c galaxy -n ansible-galaxy -- /usr/share/galaxy/venv/bin/python ./manage.py createsuperuser
Username: <管理ユーザー名>
Email address: <Githubに登録している以外のメールアドレス>
Password: <パスワード>
Password (again): <パスワード再入力>
Superuser created successfully.
あとの使い方は前回と同様です。
Author And Source
この問題について(ローカルAnsible GalaxyをKubernetes上へデプロイ), 我々は、より多くの情報をここで見つけました https://qiita.com/ussvgr/items/ccb6dea0727a8da869e4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .