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を構成できた!