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

参考資料