HTMLで作ったnekogoyaをKubernetesで公開してConfigMap化したので備忘録
ConfigMapとは
ConfigMapは、アプリケーションの設定情報をKubernetesで管理するための仕組み。
コンテナイメージを書き換えずに、設定ファイルや環境変数を外から渡すことができる。
Dockerイメージ作成
cd nekogoya
docker build -t nekogoya:1.0 .
Deployment作成
kubectl create deployment nekogoya --image=nekogoya:1.0
確認
kubectl get deployments
kubectl get pods
Service公開
kubectl expose deployment nekogoya --type=NodePort --port=80
確認
kubectl get svc
port-forwardでアクセス
kubectl port-forward service/nekogoya 8080:80
確認
http://localhost:8080
Replica増築
kubectl scale deployment nekogoya --replicas=3
確認
kubectl get pods
ConfigMap作成
kubectl create configmap nekogoya-html \
--from-file=index.html
確認
kubectl describe configmap nekogoya-html
Deployment YAML取得
kubectl get deployment nekogoya -o yaml > deployment.yaml
yaml追加
spec:
containers:
- image: nekogoya:1.0
imagePullPolicy: IfNotPresent
name: nekogoya
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- name: html-volume
mountPath: /usr/share/nginx/html
volumes:
- name: html-volume
configMap:
name: nekogoya-html
Pod詳細確認
Configmap更新が上手くいかなかった時に確認した項目
kubectl describe pod <pod名>
Mounts確認
/usr/share/nginx/html from html-volume
結論
Deployment反映でエラーが出ていた。
yamlを修正して
kubectl apply -f deployment.yaml
をしたらできた。
エラーはちゃんと読みましょう。
Deployment反映
kubectl apply -f deployment.yaml
Deployment再起動
kubectl rollout restart deployment nekogoya
Pod内のHTML確認
kubectl exec -it <pod名> -- cat /usr/share/nginx/html/index.html
ConfigMap更新
kubectl create configmap nekogoya-html \
--from-file=index.html \
--dry-run=client -o yaml | kubectl apply -f -
curl確認
curl http://localhost:8080