Kubernetes-秘密
シークレットは、暗号化されたユーザー名やパスワードなどの機密データを保存するために使用されるKubernetesオブジェクトとして定義できます。
Kubernetesでシークレットを作成する方法は複数あります。
- txtファイルから作成します。
- yamlファイルから作成しています。
テキストファイルから作成
ユーザー名やパスワードなどのテキストファイルからシークレットを作成するには、まずそれらをtxtファイルに保存し、次のコマンドを使用する必要があります。
$ kubectl create secret generic tomcat-passwd –-from-file = ./username.txt –fromfile = ./.
password.txt
Yamlファイルから作成する
apiVersion: v1
kind: Secret
metadata:
name: tomcat-pass
type: Opaque
data:
password: <User Password>
username: <User Name>
シークレットの作成
$ kubectl create –f Secret.yaml
secrets/tomcat-pass
シークレットの使用
シークレットを作成したら、ポッドまたはレプリケーションコントローラーで次のように使用できます。
- 環境変数
- Volume
環境変数として
シークレットを環境変数として使用するために、 env podyamlファイルのspecセクションの下。
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: tomcat-pass
ボリュームとして
spec:
volumes:
- name: "secretstest"
secret:
secretName: tomcat-pass
containers:
- image: tomcat:7.0
name: awebserver
volumeMounts:
- mountPath: "/tmp/mysec"
name: "secretstest"
環境変数としての秘密の構成
apiVersion: v1
kind: ReplicationController
metadata:
name: appname
spec:
replicas: replica_count
template:
metadata:
name: appname
spec:
nodeSelector:
resource-group:
containers:
- name: appname
image:
imagePullPolicy: Always
ports:
- containerPort: 3000
env: -----------------------------> 1
- name: ENV
valueFrom:
configMapKeyRef:
name: appname
key: tomcat-secrets
上記のコードでは、 env 定義では、レプリケーションコントローラーの環境変数としてシークレットを使用しています。
ボリュームマウントとしての秘密
apiVersion: v1
kind: pod
metadata:
name: appname
spec:
metadata:
name: appname
spec:
volumes:
- name: "secretstest"
secret:
secretName: tomcat-pass
containers:
- image: tomcat: 8.0
name: awebserver
volumeMounts:
- mountPath: "/tmp/mysec"
name: "secretstest"