microk8sを使ってwordpressを構築してみたので作業メモ
~バージョン情報~
〇仮想OS
ubuntu 20.04 ( bullseye/sid ubuntu-ja-20.04-desktop-amd64.iso)
※インストールはデスクトップ、表計算ソフトなし
〇アプリ類
microk8s 1.18/stable
helm microk8s付属のhelm3(helm version: v3.0.2)
nfs-server stable/nfs-server-provisioner APP VERSION:2.3.0
Wordpress bitnami/wordpress APP VERSION:5.4.2(後にWeb上から5.5にアップグレード)
1.microk8sのインストール
公式サイトを参照し、microk8sをインストール
注意点としては、ubuntuの開発元が開発しているパッケージ管理ソフト、Snappy(snapコマンド)が必要であること。
他のディストリビューションにもインストール可能だが、素直にubuntuを用意することにした。
インストールする際、きっちりaliasまで入れること。helmも追加するし、microk8sはdockerの代わりにcontainerdを直で触るので多少オプション体系が異なるがcontainerdのCLI(CTR)への変換コマンドも入れておくことにした。
~/.bash_aliases
alias kubectl='microk8s kubectl'
alias helm='microk8s helm3'
alias ctr='microk8s.ctr'
2.アドオンの追加
microk8s enable *** で以下アドオンを有効化してみた。
・dns リソース、servicesの内部DNS解決用(microk8s推奨)
・helm3 kubernetesのパッケージ管理ソフト。
・storage リソース、hostpath有効化用(microk8s推奨)
・ingress 外からEXTERNAL-IPにアクセスできるように。
・metallb TYPEがLoadBalancerの場合、ロードバランサーがないとEXTERNAL-IPがずっと”pending”状態のままとなる。microk8s enableを実行した後、既存のネットワーク内から 192.168.1.200-192.168.1.210という割り当て可能範囲を指定してみた。
3.Persistent Volumeを作成
ホスト上にデータを保存するため、単純なhostpathを使ったPVを作成。
参考)https://github.com/helm/charts/tree/master/stable/nfs-server-provisioner
data-nfs-server-provisioner-0.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: data-nfs-server-provisioner-0
spec:
capacity:
storage: 200Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /srv/volumes/data-nfs-server-provisioner-0
claimRef:
namespace: kube-system
name: data-nfs-server-provisioner-0
確認するには、”kubectl get pv”でdata-nfs-server-provisioner-0がBoundやAvailableとなっているはず。
3.データ配置用NFSサーバを立てる
参考)https://github.com/bitnami/charts/tree/master/bitnami/wordpress/
helm install nfs-server stable/nfs-server-provisioner --set persistence.enabled=true,persistence.size=10Gi
確認するには、
①kubectl get pvc
data-nfs-server-nfs-server-provisioner-0のStatusがBoundとなっているはずだ。
②kubectl get pod
nfs-server-nfs-server-provisioner-0のSTATUSがRunningとなっていること。
※障害が発生した場合、kubectl logs “pod名”でログを確認する。
4.Wordpressをインストール
helm install b-wordpress bitnami/wordpress
確認するには、
①kubectl get pod
b-wordpress-XXXXXXXXXXと、
b-wordpress-mariadb-0のSTATUSがRunningになるまで待つ。
※障害が発生した場合、kubectl logs “pod名”でログを確認する。
なお、helm delete b-wordpress nfs-server で削除して最初から行う場合、b-wordpress data-b-wordpress-mariadb-0のPVCも残っていないか確認すること。
また、最初に作成したPVを削除する場合、保護オプション(pvc-protection)を外してからkubectl delete pv data-nfs-server-provisioner-0をやらないと、いつまでもDeletingなどの表示のままになってしまう。
参考)https://qiita.com/devs_hd/items/8cbf834c504e57fbe1ff
確認)
kubectl describe pvc nfs-data-volume | grep Finalizers
保護外し)
kubectl patch pvc data-nfs-server-nfs-server-provisioner-0 -p '{"metadata":{"finalizers": []}}' --type=merge
5.外部アクセス許可
helm install b-wordpress bitnami/wordpressコマンドを打った後に表示されるNotesに従って実施する。
NOTES:
1. Get the WordPress URL:
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc --namespace default -w knotted-molly-wordpress'
export SERVICE_IP=$(kubectl get svc --namespace default knotted-molly-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
echo "WordPress URL: http://$SERVICE_IP/"
echo "WordPress Admin URL: http://$SERVICE_IP/admin"
2. Login with the following credentials to see your blog
echo Username: user
echo Password: $(kubectl get secret --namespace default knotted-molly-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)
WordPressを立てた後はアップデート、プラグインのアップデート、テーマのアップデート。
ユーザ、userのパスワード変更
コメント