初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト(Secret)編
背景
個人的にインフラの知識以上にこれからのアプリケーションが動く環境を作ってデプロイしたりしてこれからの知識を身に着けたい。そしてより一層、自分の知識のアップデートをしたいと思いました。
その中でこの本に出会い、これから少しずつやったことを残し、未来の自分への手紙としてもあり、見つめ直せればと思いました。
引用や参考と今回の自分の勉強用の書籍の紹介
技術評論社『Kubernetes実践入門』のサンプルコード
Kubernetes実践入門 プロダクションレディなコンテナ&アプリケーションの作り方
実際の学びについて
書籍を読みながら、章ごとに少しずつ進めていきたいと思います。
GitHub のソースコードも使いながら学んで行きたいと思います。
この章の勉強は本当に書籍の写経が主になるかもしれません・・・
勉強開始
Secret を使って秘密情報を取り扱う
- ConfigMap で設定することもできるけど、秘密情報には向いていない
- ConfigMap だったら秘密情報も見れてしまう
- そうか、だから Secret があるということだと思います。
cm.yamlからMYSQL_PASSWORDを削除する
apiVersion: v1
data:
MYSQL_DATABASE: mattermost
MYSQL_USER: myuser
kind: ConfigMap
Secret 情報のマニュフェストを作成する
$ kubectl create secret generic common-env -o yaml --dry-run \
--from-literal MYSQL_ROOT_PASSWORD=rootpassword \
--from-literal MYSQL_PASSWORD=mypassword > secret.yaml
$ cat secret.yaml
apiVersion: v1
data:
MYSQL_PASSWORD: bXlwYXNzd29yZA==
MYSQL_ROOT_PASSWORD: cm9vdHBhc3N3b3Jk
kind: Secret
metadata:
creationTimestamp: null
name: common-env
Secret の安全性
apiVersion: v1
data:
MYSQL_DATABASE: mattermost
MYSQL_USER: myuser
kind: ConfigMap
$ kubectl create secret generic common-env -o yaml --dry-run \
--from-literal MYSQL_ROOT_PASSWORD=rootpassword \
--from-literal MYSQL_PASSWORD=mypassword > secret.yaml
$ cat secret.yaml
apiVersion: v1
data:
MYSQL_PASSWORD: bXlwYXNzd29yZA==
MYSQL_ROOT_PASSWORD: cm9vdHBhc3N3b3Jk
kind: Secret
metadata:
creationTimestamp: null
name: common-env
書籍にもあるけど value 部分は Base64 エンコーディングされているよって!
確認してみます
$ echo bXlwYXNzd29yZA== | base64 -d
mypassword # 上記のコマンドで設定した値になっていることを確認
Secret の値を Pod テンプレートから呼び出す
- name: MM_PASSWORD
valueFrom:
secretKeyRef: #configMapKeyRef -> secretKeyRef に変更
name: common-env
key: MYSQL_PASSWORD
spec:
containers:
- image: k8spracticalguide/mysql:5.7.22
name: mysql
envFrom:
- configMapRef:
name: common-env
- secretRef: # 追加
name: common-env # 追加
$ kubectl describe po mattermost-7fd45dcf9f-pm6tc
〜省略〜
Environment:
MM_USERNAME: <set to the key 'MYSQL_USER' of config map 'common-env'> Optional: false
MM_PASSWORD: <set to the key 'MYSQL_PASSWORD' in secret 'common-env'> Optional: false
DB_NAME: <set to the key 'MYSQL_DATABASE' of config map 'common-env'> Optional: false
DB_HOST:
MYSQL_PASSWORD
が secret になっているので大丈夫そう
$ kubectl describe po db-7f9fbfcc6-clpxn
〜省略〜
Environment Variables from:
common-env ConfigMap Optional: false
common-env Secret Optional: false
次は 3.5 章をやっていきます。
- アプリケーション同士の通信する方法を学びます
最後に
本書を読むにあたってには2つのアイコンがあるけど、今回、錨アイコン のコラム「ConfigMap と Secret 値のロード」の部分の①がなるほどと思いました。
どうやって値が反映されるか、最後の確認を見る方法ってと思って Deployment を更新したらできたので嬉しかったのと、それが活字で説明してくれるところの話だなぁ〜と改めてしみじみ感じました。
- ②ConfigMap の更新を検知して Pod を再作成するコントローラを追加する
- ③マウントしたファイルの更新を検知してリロードする
この2つについては、写経では一旦おいておこうと思います。
今までの投稿
- 初心者の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 実践入門の写経から学ぶ)マニュフェスト編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト(ConfigMap)編
Author And Source
この問題について(初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト(Secret)編), 我々は、より多くの情報をここで見つけました https://qiita.com/nodokaodayaka/items/feb12cf7c366c5de3f5e著者帰属:元の著者の情報は、元の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 .