#初めに
「kubernetes the hard way を PC でやってみる」の8回目、「Generating the Data Encryption Config and Key」についてです。( 目次 )
今回は短いのでちょっと気が楽ですね。 とはいえ、ここまででようやく準備が終わり、次回からはもう...(涙)
ここでは、 etcd に情報を格納する際の暗号化の設定を作成します。
やることは以下の通りです。
- 暗号化のキーとなる文字列の生成 (The Encryption Key)
- 暗号化設定ファイル作成 (The Encryption Config File)
- 各マスターノードへの配布
#暗号化のキーとなる文字列の生成 (The Encryption Key)
暗号のシードとなる文字列は何でもよいので、 Linux のランダム文字列を出してくれる urandom デバイスを使います。
文字列なんですね。 私はずっとランダムな数値を出してくれると思っていました。。。
それだけでは利用できない文字などが含まれるのでしょうね。 base64 エンコードしています。
root@k8smaster0:/data/assam/k8s/ca# ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)
root@k8smaster0:/data/assam/k8s/ca# echo $ENCRYPTION_KEY
77ditR6J(略)pKZL+AQj0=
変数に格納しているのは、次に cat コマンドを使って設定ファイルを出力する際にその変数を使うからです。
このぐらいであればわざわざコマンドを使って出力しなくてもファイルにコピー&ペーストでもよいですが。。
#暗号化設定ファイル作成 (The Encryption Config File)
cat コマンドでファイルを出力します。
root@k8smaster0:/data/assam/k8s/ca# cat > encryption-config.yaml <<EOF
> kind: EncryptionConfig
> apiVersion: v1
> resources:
> - resources:
> - secrets
> providers:
> - aescbc:
> keys:
> - name: key1
> secret: ${ENCRYPTION_KEY}
> - identity: {}
> EOF
上記のコマンドを実行すると、下記の内容のファイルができます。
root@k8smaster0:/data/assam/k8s/ca# cat encryption-config.yaml
kind: EncryptionConfig
apiVersion: v1
resources:
- resources:
- secrets
providers:
- aescbc:
keys:
- name: key1
secret: 77ditR6J(略)pKZL+AQj0=
- identity: {}
#各マスターノードへの配布
作成したファイルを 3台の master に配布します。
(別途各サーバー上で適切な場所に配置しなおすため、ここでは rootのホームディレクトリに配置しました)
配置方法は…お任せで。
( scp 等でどうぞ。私はたまたま暇そうにしていた NFS サーバー経由で受け渡しました。。。)
今回はここまでとして、次回は Bootstrapping the etcd Cluster の部分を実施します。
いよいよ本格的になってきますね!
← 7.k8sConfig
↑ 目次
→ 9.Bootstrapping the etcd Cluster