microk8s bitnami/wordpressの構築

Docker

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をインストール

MicroK8s - MicroK8s documentation - home | MicroK8s
MicroK8s is the simplest production-grade upstream K8s. Lightweight and focused. Single command install on Linux, Window...

注意点としては、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のパスワード変更

コメント

タイトルとURLをコピーしました