初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト(ConfigMap)編
背景
個人的にインフラの知識以上にこれからのアプリケーションが動く環境を作ってデプロイしたりしてこれからの知識を身に着けたい。そしてより一層、自分の知識のアップデートをしたいと思いました。
その中でこの本に出会い、これから少しずつやったことを残し、未来の自分への手紙としてもあり、見つめ直せればと思いました。
引用や参考と今回の自分の勉強用の書籍の紹介
技術評論社『Kubernetes実践入門』のサンプルコード
Kubernetes実践入門 プロダクションレディなコンテナ&アプリケーションの作り方
実際の学びについて
書籍を読みながら、章ごとに少しずつ進めていきたいと思います。
GitHub のソースコードも使いながら学んで行きたいと思います。
この章の勉強は本当に書籍の写経が主になるかもしれません・・・
勉強開始
-
マニュフェスト作成するまで
-
マニフェスト作成結果になるまで
ConfigMap に保存下キーと値を Pod テンプレートの env から呼び出す
$ kubectl create cm common-env -o yaml --dry-run \
--from-literal MYSQL_USER=myuser \
--from-literal MYSQL_PASSWORD=mypassword \
--from-literal MYSQL_DATABASE=mattermost > cm.yaml
$ cat cm.yaml
apiVersion: v1
data:
MYSQL_DATABASE: mattermost
MYSQL_PASSWORD: mypassword
MYSQL_USER: myuser
kind: ConfigMap
metadata:
creationTimestamp: null
name: common-env
mattermost-deploy.yamlでConfigMapの値を参照させる
containers:
- image: k8spracticalguide/mattermost:4.10.2
name: mattermost
env:
- name: MM_USERNAME
valueFrom:
configMapKeyRef:
name: common-env
key: MYSQL_USER
- name: MM_PASSWORD
valueFrom:
configMapKeyRef:
name: common-env
key: MYSQL_PASSWORD
- name: DB_NAME
valueFrom:
configMapKeyRef:
name: common-env
key: MYSQL_DATABASE
-
MM_USERNAME / MM_PASSWORD / DB_NAME
を ConfigMap を参照するように修正した
db-deploy.yamlのConfigMapの値を参照させる
env:
- name: MYSQL_ROOT_PASSWORD
value: rootpassword
envFrom:
- configMapRef:
name: common-env
-
MYSQQL_ROOT_PASSWORD
以外を CoinfigMap を参照するように修正した
mattermost-deployの環境変数を確認
Environment:
MM_USERNAME: <set to the key 'MYSQL_USER' of config map 'common-env'> Optional: false
MM_PASSWORD: <set to the key 'MYSQL_PASSWORD' of config map 'common-env'> Optional: false
DB_NAME: <set to the key 'MYSQL_DATABASE' of config map 'common-env'> Optional: false
DB_HOST:
db-deployの環境変数を確認
Environment Variables from:
common-env ConfigMap Optional: false
Environment:
MYSQL_ROOT_PASSWORD: rootpassword
Pod 内で data の中身をファイルとして読み込む
config.jsonの内容が多いので中身割愛してコマンドのみとします
$ curl -L -O https://raw.githubusercontent.com/kubernetes-practical-guide/examples/master/ch3.4.2.2/config.json
$ kubectl create cm mm-config-file -o yaml --dry-run --from-file config.json > cm-file.yaml
mattermost-deploy.yamlのConfigMapはファイルとして読み込むように設定
volumeMounts:
- name: cm-volume
mountPath: /mm/config #マウントするボリューム名を指定
volumes:
- name: cm-volume
configMap:
name: mm-config-file
items:
- key: config.json
path: config.json
- config.json ファイルが Volume に保存されているのを確認
$ kubectl exec -it mattermost-846bf547c-zfwld -- ls /mm/config/
config.json
次は 次は 3.4.2 章をやっていきます。
- Secret を使って今回設定した設定値を管理する方法を学びます
最後に
マニュフェスト作成するまで
マニフェスト作成結果になるまで
$ kubectl create cm common-env -o yaml --dry-run \
--from-literal MYSQL_USER=myuser \
--from-literal MYSQL_PASSWORD=mypassword \
--from-literal MYSQL_DATABASE=mattermost > cm.yaml
$ cat cm.yaml
apiVersion: v1
data:
MYSQL_DATABASE: mattermost
MYSQL_PASSWORD: mypassword
MYSQL_USER: myuser
kind: ConfigMap
metadata:
creationTimestamp: null
name: common-env
containers:
- image: k8spracticalguide/mattermost:4.10.2
name: mattermost
env:
- name: MM_USERNAME
valueFrom:
configMapKeyRef:
name: common-env
key: MYSQL_USER
- name: MM_PASSWORD
valueFrom:
configMapKeyRef:
name: common-env
key: MYSQL_PASSWORD
- name: DB_NAME
valueFrom:
configMapKeyRef:
name: common-env
key: MYSQL_DATABASE
MM_USERNAME / MM_PASSWORD / DB_NAME
を ConfigMap を参照するように修正した env:
- name: MYSQL_ROOT_PASSWORD
value: rootpassword
envFrom:
- configMapRef:
name: common-env
MYSQQL_ROOT_PASSWORD
以外を CoinfigMap を参照するように修正した Environment:
MM_USERNAME: <set to the key 'MYSQL_USER' of config map 'common-env'> Optional: false
MM_PASSWORD: <set to the key 'MYSQL_PASSWORD' of config map 'common-env'> Optional: false
DB_NAME: <set to the key 'MYSQL_DATABASE' of config map 'common-env'> Optional: false
DB_HOST:
Environment Variables from:
common-env ConfigMap Optional: false
Environment:
MYSQL_ROOT_PASSWORD: rootpassword
$ curl -L -O https://raw.githubusercontent.com/kubernetes-practical-guide/examples/master/ch3.4.2.2/config.json
$ kubectl create cm mm-config-file -o yaml --dry-run --from-file config.json > cm-file.yaml
volumeMounts:
- name: cm-volume
mountPath: /mm/config #マウントするボリューム名を指定
volumes:
- name: cm-volume
configMap:
name: mm-config-file
items:
- key: config.json
path: config.json
$ kubectl exec -it mattermost-846bf547c-zfwld -- ls /mm/config/
config.json
ちょっと、現在までの章を振り返ってやっと 1/3 ぐらいかなというところですが、これからもっと面白くなっていく部分だと思い、ConfigMap をもう少し次回までに腹落ちさせていきたいと思います。
今までの投稿
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Pod編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)NameSpace 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Label 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)ReplicaSet 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Deployment 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Service 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)ConfigMap 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Secret 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)操作編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編パート2
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編パート3(Label操作)
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編パート3(OwnerReference 操作)
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト編
Author And Source
この問題について(初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト(ConfigMap)編), 我々は、より多くの情報をここで見つけました https://qiita.com/nodokaodayaka/items/7dd2f3885d8e957ffaad著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .