Closed9

k8sに入門した(その5)「Helmを使ってwordpressを動かす」

PONTAPONTA

ThinkpadにインストールしたUbuntu Server 20.04上のmicrok8sを使う。

今回はhelmのversion 3を利用してそのへんのapplicationを実際に動かすことを目標にする。

まずインストール

snap install microk8s  --classic
snap install helm  --classic

--classicってのはsnapのセキュリティを無効化する?みたいなオプションらしい。これをつけないとインストール出来ない。

これでmicrok8sが使えるようになる。ただ、kubectlmicrok8s kubectlと長々打たなきゃいけない。そのため以下のようにaliasを設定する。

snap alias microk8s.kubectl kubectl

これでk8s環境は準備完了。microk8sの機能でmicrok8s resetを使うと全てをリセット出来るので勉強環境としては最適。

次に、Helmを使うためにconfigを指定する必要がある。

microk8s config > .kube/config
chmod o-r ~/.kube/config
chmod g-r ~/.kube/config

これは、Helmにこちらのk8s環境を教えるために設定だと思う。

PONTAPONTA

repoを追加する。

helm repo add stable https://charts.helm.sh/stable

これが必要なのかはよくわかってない。

wordpressをinstallしてみる。

helm install stable/wordpress --generate-name

bitnamiのwordpressがインストールされる。

動いてるか確認する。

kubectl get all 

deploymentsやらservicesは作成されているがStatusはPendingになっている。

詳細情報を確認すると

kubectl describe pod/wordpress-1645767693-5c985cdf66-ctcc5

0/1 nodes are available: 1 pod has unbound immediate PersistentVolumeClaims.と書いてある。状態を持つApplicationはPersistentVolumeを設定しないとだめらしい。
k8sのvolume周りが良くわからん。

PONTAPONTA

一旦削除

helm delete wordpress-1645767693

よくわからないけど、microk8sのstorageアドオンを有効化してないのげ原因な気がする。

microk8s enable storage 

有効化した後にinstallしたら動いた。

helm install stable/wordpress --generate-name
kubectl get all

ただLoadBalancerがPendingになってるからアクセス出来ない。
k8sのLoadBalancer周りも良くわからん。

PONTAPONTA

microk8s statusを見たらLoadBalancerと関係ありそうなmetalibが有効になってない。有効にしてみる。

microk8s enable metallb

ip adressのrangeを設定する必要がある。適当に使われてないIPのrangeを指定。

再度起動してみる。

helm install stable/wordpress --generate-name
kubectl get all

LoadBalancerにIPが割り当てられてるように見える。
でもなんか、pod/wordpress-1645770777-798d4b6cff-lnhcq 0/1 Running 1 (2m53s ago) 6m23sとなってて正常ではない。

状態を確認。

kubectl describe pod/wordpress-1645770777-798d4b6cff-lnhcq

なんかClusterIPのエラーで接続が出来てないとか言われてる?
k8sのClusterIP周りも良くわからん。

PONTAPONTA

勘でdns addonを有効化してみる。

microk8s enable dns

再起動してみる。

helm install stable/wordpress --generate-name
kubectl get all

全部動いてるように見える。
LoadBalancerに割り当てられたIPにブラウザからhttpでアクセスしてみるとどうやら動いてる。
とりあえずdeployに成功した。

PONTAPONTA

http://[LoadBalancer IP]/wp-login.phpにアクセスする。
usernameはuserで、passwdは以下のコマンドで取得できる。

echo $(kubectl get secret --namespace default wordpress-1645771303 -o jsonpath="{.data.wordpress-password}" | base64 --decode)

https://zenn.dev/derbuihan/scraps/512cd99a4feb15 で勉強したsecretが使われてる。こういうふうに使うんだ。
とりあえずLoginは出来た。

PONTAPONTA

まとめると、microk8sだけで使える知識だけど、

  1. PersistentVolumeClaimsのエラー → microk8s enable storage
  2. LoadBalancerのエラー → microk8s enable metallb
  3. ClusterIPのエラー → microk8s enable dns

が必要らしい。あと、microk8sにはhelm3ってアドオンがあるからsnapのじゃなくてこっち使うのが正しいのかもしれない。あとあと、毎回describeって打ってerror探すの面倒だからdashboard的なGUI管理ツールは使いこなせないとだめだな。

成果としてvolumeとLoadBalancerとClusterIP周りの勉強もしないといけないことがわかった。

PONTAPONTA

何度かdeployしたからvolumeとか無駄なデータが残ってるはず。一旦環境を綺麗にしてから設定し直す。あとsnapでインストールしたhelmも削除する

microk8s reset
snap remove helm

アドオンを有効化する。

microk8s enable dns storage metallb

helmもmicrok8sのやつを用いる。

microk8s enable  helm3
snap alias microk8s.helm3 helm 
chmod o-r /var/snap/microk8s/current/credentials/client.config
chmod g-r /var/snap/microk8s/current/credentials/client.config

helm listでエラー出来ないことを確認する。

さてwordpressをインストールしてみる。

helm install stable/wordpress --generate-name

kubectl get allで動いてることが確認出来る。(repoの追加とかはいらなかったようだ)

非常に簡単だ。

PONTAPONTA

helmfileとかいうツールもあるのか。
helmでinstallする際の環境変数の設定をfileにするみたいなツールなのかな?

すごいなぁ

何万個のコンテナをdocker-composeで管理するのとか無理

k8sならmanifestにyamlで書けば理想の状態を定義して自動的にその状態を維持してくれる。

yamlの設定が複雑だからhelmというpackage maneger作って設定をみんなで共有出来るようにしよう。

package mangerからinstallするときに設定をファイルとして残せるようにhelmfileを書こう。

みたいな感じかな。

本番環境と開発環境のmanifestを分けるためにkustomize.yamlとかいうツールもあるみたいだし、色々混沌としてるなぁ。

このスクラップは2022/02/25にクローズされました