実は映画金田一耕助シリーズが大好きである。特に石坂浩二バージョン。一番お気に入りなのが「悪魔の手毬唄」という作品。
https://ja.wikipedia.org/wiki/悪魔の手毬唄_(1977年の映画)
「よーしわかった」のおまわりさんも出てくる。場所が違えど、この人どこでも出てくる。
物語最初に、金田一耕助を湯治場に呼びつける刑事を若山富三郎がやっている。湯治場の部屋で話す2人のシーンがめちゃくちゃいい。古くて鄙びた部屋で刑事が金田一に捜査の依頼をする。古い日本。結末は、またとんでもない話で、八つ墓村というか、丑三つの村にも近い。日本はジャニーズや中居さんの問題などが起きているが、この映画を見ているとある意味、彼らは昔の日本の文化から単に抜けてなかったのではと錯覚しそうになる。ちなみに丑三の村はこんな映画。
八つ墓村っぽいが、八つ墓村の元になった実話を映画化したものらしい。
さて、「悪魔の手毬唄」には重要なキーワードが出てくる。
斧(よき)・琴(こと)・菊(きく)
つまり、良きこと聞くという意味。
Kubernetesも、この斧(よき)・琴(こと)・菊(きく)があるのではないかと。つまり、
コンテナ、ネットワーク、ストレージ。
この3つのうちどれかが動かないと使い物にならない。動作確認は、これらセットでやらないと意味がない。ただ自分の世代のようなインフラおじさんのレベルだと全てをそこそこわかっている人がいない。一方、Kubernetesのユーザとしては、これらはすべて抽象化しているので、インフラおじさんばりに知っている必要は必ずしもない。しかし、土台のKubernetesの基盤部分はインフラおじさん並みに知らないと実は作れない。しかし、ここの部分を間違って行き来すると使いにくい環境ができてしまう。例えば、Kubernetes環境なのに、ストレージは、とある特定のストレージを使いたい、利用量で課金をしたいという理由だけで手動でプロビジョニングしているなど。もはやKubernetesを使っている意味はあまりない。
閑話休題
QNAPのCSIドライバーを作ったときに「サクッと簡単にテスト」をしたいと思い、改めて作成してみた。このデプロイが動かない環境であれば、多分何かがおかしいのは明白。Wordpressの構成って、コンテナ、ネットワーク、ストレージが正しく動く環境じゃないとデプロイに失敗する。特にK3sは、デフォルトだとtraefikしかなく、Ingressを使ったとしてもクライアント側で/etc/hostsホスト名の解決をしなければならない。結構面倒。このデプロイメントは、sslipを使うことで、クライアント側で/etc/hostsの修正をしなくてもよくなっている。また、注意事項が1つあって、QNAP SMBでは、起動できない。理由は、QNAP SMBはReadWriteManyしかサポートしないが、Wordpressに含まれるMariaDBは、ReadWriteManyでは動作できないため。
以下の2つを必要に応じて書き換えてコピペ。あとはすべて良きに計らってくれるはず。最後に出てきたURLへアクセス!
WP_NAMESPACE=wordpress
STORAGECLASS=longhorn
#!/usr/bin/env bash
set -euo pipefail
WP_NAMESPACE=wordpress
STORAGECLASS=longhorn
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
NODE_IP=$(kubectl get node -o jsonpath='{.items[0].status.addresses[*].address}' | tr ' ' '\n' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | head -n1)
INGRESS_HOST="${WP_NAMESPACE}.$(echo "$NODE_IP" | tr '.' '-').sslip.io”
helm install my-wp bitnami/wordpress \
--namespace "$WP_NAMESPACE” \
--create-namespace \
--set wordpressUsername=admin \
--set wordpressPassword=YourStrongPassword123 \
--set wordpressBlogName=${WP_NAMESPACE} \
--set ingress.enabled=true \
--set ingress.hostname="$INGRESS_HOST” \
--set ingress.ingressClassName=traefik \
--set service.type=ClusterIP \
--set global.storageClass="$STORAGECLASS” \
--set persistence.storageClass="$STORAGECLASS” \
--set mariadb.primary.persistence.storageClass="$STORAGECLASS” \
--set persistence.accessModes={ReadWriteOnce}
kubectl wait -n "$WP_NAMESPACE" --for=condition=available --timeout=300s deployment/my-wp-wordpress
kubectl wait -n "$WP_NAMESPACE" --for=condition=ready --timeout=300s pod/my-wp-mariadb-0
SUCCESS=0
for i in {1..30}; do
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "http://$INGRESS_HOST”)
if [ "$STATUS" = "200" ]; then
echo "WordPress is responding (HTTP 200).”
SUCCESS=1
break
fi
sleep 2
done
if [ "$SUCCESS" -ne 1 ]; then
echo "ERROR: WordPress did not respond with HTTP 200 within 60 seconds.”
echo " → Please check Traefik, Ingress settings, or application logs.”
exit 1
fi
echo "WordPress will be available at: http://$INGRESS_HOST”
echo "Admin login: http://$INGRESS_HOST/wp-admin (user: admin)”
echo "Username: admin"
echo "Password: $(kubectl get secret -n ${WP_NAMESPACE} my-wp-wordpress -o jsonpath="{.data.wordpress-password}" | base64 -d)"
スクリプト終了時に表示されるURLで手元のブラウザから普通にアクセスができるはず。それにしてもsslip.ioは、プライベートアドレスをホスト名にできるのでこういう検証の時めちゃくちゃ便利。sslip.ioを自ドメインにして、ワイルドカード証明書をいれれば、インターネットに露出していなくてもLets Encrypt証明書が使えてしまう。
ちなみに、金田一耕助シリーズの犯人は、かなりの確率で犯人は女性というケースが多いような気がする。横溝正史自体が当時女性にいろいろ悩まされたからだとか。もしほんとだとしたら恨みはすごいなぁと思った。