HelmでWordPressのインストールに失敗
はじめに
HelmチャートでWordPressをインストールした.
helm install wp23 bitnami/wordpress
その結果,WordPressのPodが起動せずMariaDBのPodは起動した.
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
wp23-mariadb-0 0/1 Running 0 10s
DeploymentとReplicaSetを確認する. 必要なPodが起動していないためReadyでないことがわかる.
$ kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
wp23-wordpress 0/1 0 0 100s
$ kubectl get rs
NAME DESIRED CURRENT READY AGE
wp23-wordpress-55ff649dd9 1 0 0 2m49s
Persistent VolumeとPersistent Volume Claimを確認する.Pendingのままになっている.
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-b4d49e4d-2d64-42c8-bc41-a6c2723c43e7 1Gi RWO Delete Bound koyama/data-wp23-mariadb-0 local-path 15s
$ kubectl get pvc -o wide
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE VOLUMEMODE
data-wp23-mariadb-0 Bound pvc-b4d49e4d-2d64-42c8-bc41-a6c2723c43e7 1Gi RWO local-path 2m35s Filesystem
wp23-wordpress Pending local-path 2m35s Filesystem
環境
$ uname -a
Darwin xxx.local 22.3.0 Darwin Kernel Version 22.3.0: Thu Jan 5 20:49:43 PST 2023; root:xnu-8792.81.2~2/RELEASE_ARM64_T8103 arm64
$ helm version
version.BuildInfo{Version:"v3.9.0", GitCommit:"7ceeda6c585217a19a1131663d8cd1f7d641b2a7", GitTreeState:"clean", GoVersion:"go1.18.2"}
$ kubectl get node
NAME STATUS ROLES AGE VERSION
node001 Ready control-plane,etcd,master 392d v1.22.6+rke2r1
node002 Ready control-plane,etcd,master 392d v1.22.6+rke2r1
node003 Ready control-plane,etcd,master 391d v1.22.6+rke2r1
原因
ReplicaSetをkubectl describeしたところ次の結果が得られた.
$ kubectl describe rs wp23-wordpress-55ff649dd9
Error creating: pods "wp23-wordpress-55ff649dd9-" is forbidden: PodSecurityPolicy: unable to admit pod: [pod.metadata.annotations[seccomp.security.alpha.kubernetes.io/pod]: Forbidden: seccomp may not be set pod.metadata.annotations[container.seccomp.security.alpha.kubernetes.io/wordpress]: Forbidden: seccomp may not be set]
以下の部分がヒントになる.PodSecurityPolicyによりコンテナの作成がエラーになっている.seccompがセットされていないことで拒否されている.
Error creating: pods "wp23-wordpress-55ff649dd9-" is forbidden: PodSecurityPolicy: unable to admit pod:
...
Forbidden: seccomp may not be set
解決策
Googleで検索したところ以下のIssueが見つかった.IssueではPodSecurityPolicyを外すと解決すると書かれていた.
Forbidden: seccomp may not be set pod.metadata.annotations · Issue #5516 · cert-manager/cert-manager
PodSecurityPolicyはKubernetes 1.21から非推奨になっているため無効にして問題がない.
なぜ Pod Security Policy (PSP) は Kubernetes 1.21 から非推奨になったのか? - Qiita
HelmチャートのValueを上書きする.
helm show values bitnami/wordpress > values.yml
values.ymlの変更前
podSecurityContext:
enabled: true # この行を書き換える
fsGroup: 1001
seccompProfile:
type: "RuntimeDefault"
values.ymlの変更後
podSecurityContext:
enabled: false
fsGroup: 1001
seccompProfile:
type: "RuntimeDefault"
以下のコマンドでvalues.ymlを使いWordPressをインストールする.
helm install wp20 bitnami/wordpress -f values.yml
kubectlでPodの起動を確かめる.起動していることがわかる.
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
wp20-mariadb-0 1/1 Running 0 33h
wp20-wordpress-5b7f86d5fb-wpnbm 1/1 Running 0 33h