Fedora CoreOSのインストール練習 4 〜podの自動起動〜
前回作ったKubernetesマニフェストで作ったpodをIgnitionで自動起動するように、Fedora CoreOSインストールしてみる。
まずは、Butane config wp-pod.bu
を用意する。
variant: fcos version: 1.3.0 passwd: users: - name: core ssh_authorized_keys: - (ssh公開鍵) systemd: units: - name: wp-pod.service enabled: true contents: | [Unit] Description=Play WordPress pod After=network-online.target Wants=network-online.target [Service] Type=oneshot RemainAfterExit=yes ExecStartPre=-/bin/podman pod kill wp-pod ExecStartPre=-/bin/podman pod rm wp-pod ExecStartPre=/bin/podman build -t pod-wordpress:latest /var/home/wp-pod ExecStart=/bin/podman play kube /var/home/wp-pod/wp-pod.yaml ExecStop=/bin/podman pod stop wp-pod [Install] WantedBy=multi-user.target storage: files: - path: /var/home/wp-pod/Dockerfile contents: inline: | FROM docker.io/library/wordpress:latest ENV WORDPRESS_DB_NAME='wp' WORDPRESS_DB_HOST='127.0.0.1' WORDPRESS_DB_USER='wordpress' WORDPRESS_DB_PASSWORD='wordpress-password' - path: /var/home/wp-pod/wp-pod.yaml contents: inline: | apiVersion: v1 kind: Pod metadata: labels: app: wp-pod name: wp-pod spec: containers: - name: web image: localhost/pod-wordpress:latest ports: - containerPort: 80 hostPort: 80 protocol: TCP securityContext: allowPrivilegeEscalation: true capabilities: drop: - CAP_MKNOD - CAP_NET_RAW - CAP_AUDIT_WRITE privileged: false readOnlyRootFilesystem: false seLinuxOptions: {} - name: db image: docker.io/library/mariadb:latest env: - name: MYSQL_ROOT_PASSWORD value: mysql-root-password - name: MYSQL_DATABASE value: wp - name: MYSQL_USER value: wordpress - name: MYSQL_PASSWORD value: wordpress-password securityContext: allowPrivilegeEscalation: true capabilities: drop: - CAP_MKNOD - CAP_NET_RAW - CAP_AUDIT_WRITE privileged: false readOnlyRootFilesystem: false seLinuxOptions: {} volumeMounts: - mountPath: /var/lib/mysql name: wp-mysql-pvc restartPolicy: Always volumes: - name: wp-mysql-pvc persistentVolumeClaim: claimName: wp-mysql
pod
を自動起動させるsystemdサービスwp-pod.service
を定義している。
podman play kube
はpodが起動するとコマンドが終了するので、 Type=oneshot
とRemainAfterExit=yes
を指定する。
ExecStartPre
で独自コンテナイメージをビルドさせている。
Butane config wp-pod.bu
をIgnition config wp-pod.ign
に変換する。
host$ docker run -i --rm quay.io/coreos/butane:release < wp-pod.bu > wp-pod.ign
生成されたwp-pod.ign
を使ってFedora CoreOSをインストールする。
インストールが終了したらログインして、podが起動するまで少し待ってから、podの起動を確認してみる。
$ systemctl status wp-pod.service ● wp-pod.service - Play WordPress pod Loaded: loaded (/etc/systemd/system/wp-pod.service; enabled; vendor preset> Active: active (exited) since Wed 2021-06-16 08:08:23 UTC; 6s ago Process: 1944 ExecStartPre=/bin/podman pod kill wp-pod (code=exited, status> Process: 2000 ExecStartPre=/bin/podman pod rm wp-pod (code=exited, status=1> Process: 2026 ExecStartPre=/bin/podman build -t pod-wordpress:latest /var/h> Process: 2210 ExecStart=/bin/podman play kube /var/home/wp-pod/wp-pod.yaml > Main PID: 2210 (code=exited, status=0/SUCCESS) Tasks: 6 (limit: 2280) Memory: 1.0G CGroup: /system.slice/wp-pod.service ├─2429 /usr/bin/conmon --api-version 1 -c a0017f7e8221da59cd409527> ├─2435 /usr/bin/conmon --api-version 1 -c 4d71c1b65740a07e2b8fca3f> └─2463 /usr/bin/conmon --api-version 1 -c 7b4edae69fe2dbbace2b2ab2> Jun 16 08:08:23 localhost podman[2210]: 2021-06-16 08:08:23.270676058 +0000 UTC> Jun 16 08:08:23 localhost podman[2210]: 2021-06-16 08:08:23.460813506 +0000 UTC> Jun 16 08:08:23 localhost podman[2210]: 2021-06-16 08:08:23.466814111 +0000 UTC> Jun 16 08:08:23 localhost podman[2210]: 2021-06-16 08:08:23.466855117 +0000 UTC> Jun 16 08:08:23 localhost podman[2210]: Pod: Jun 16 08:08:23 localhost podman[2210]: 2b836abed04bc8069f5186b64b01b19d3cc2bee> Jun 16 08:08:23 localhost podman[2210]: Containers: Jun 16 08:08:23 localhost podman[2210]: 7b4edae69fe2dbbace2b2ab2c44dd01b3d50ab9> $ sudo podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS 2b836abed04b wp-pod Running 36 seconds ago a0017f7e8221 3 $ sudo podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a0017f7e8221 k8s.gcr.io/pause:3.5 39 seconds ago Up 23 seconds ago 0.0.0.0:80->80/tcp 2b836abed04b-infra 7b4edae69fe2 localhost/pod-wordpress:latest apache2-foregroun... 39 seconds ago Up 23 seconds ago 0.0.0.0:80->80/tcp wp-pod-web 4d71c1b65740 docker.io/library/mariadb:latest mysqld 23 seconds ago Up 23 seconds ago 0.0.0.0:80->80/tcp wp-pod-db
無事wp-pod
が起動している。
ブラウザでもWordPressが起動していることを確認。
いちおうサービス停止も確認しておく。
$ sudo systemctl stop wp-pod.service $ sudo podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS 2b836abed04b wp-pod Exited 3 minutes ago a0017f7e8221 3 $ sudo podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Kubernetesマニフェストを使ってPodmanでpodを自動起動するようにFedora CoreOSを構成できた!