シークレットを使用して、Kubernetesクラスターに機密情報を保存することを推奨します。 情報には、パスワードと証明書が含まれます。 このトピックでは、Container Service for Kubernetes (ACK) コンソールでシークレットを作成する方法について説明します。 このトピックでは、シークレットをボリュームとしてポッドにマウントし、シークレットをポッドの環境変数として公開する方法についても説明します。 コンソールまたはCLIを使用して操作を実行できます。
前提条件
シークレットをボリュームとしてポッドにマウントするには、シークレットとポッドが同じクラスターと名前空間に属していることを確認します。
背景情報
次のシナリオでは、ポッドでシークレットを使用できます。
シークレットをポッドのボリュームとしてマウントします。
シークレットをポッドの環境変数として公開します。
Secretsの詳細については、「Secrets」をご参照ください。
シークレットの作成
次の例は、Secret-testという名前のシークレットを作成する方法を示しています。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
On theデプロイメントページをクリックします。YAMLから作成する右上隅にあります。
テンプレートまたはカスタムを選択し、次のYAMLコンテンツをエディターにコピーして、作成.
次のYAMLコンテンツを使用して、Secret-testという名前のシークレットを作成します。
apiVersion: v1 kind: Secret metadata: name: secret-test type: Opaque data: username: admin password: 12345 #The value must be encoded in Base64.
webインターフェイスを使用してシークレットを作成することもできます。 詳細については、「シークレットの管理」をご参照ください。
秘密をポッドにボリュームとしてマウントする
次の方法を使用して、シークレットをボリュームとしてポッドにマウントできます。
CLIの使用
マウントされたシークレットは、ポッド内のファイルとして使用できます。 この例では、ユーザー名とパスワード情報を含むSecret secret-testは、/srtディレクトリにファイルとして保存されます。
example0.yamlという名前のファイルを作成し、次のコンテンツをファイルにコピーします。
apiVersion: v1 kind: Pod metadata: name: pod0 spec: containers: - name: redis image: redis volumeMounts: - name: srt mountPath: "/srt" readOnly: true volumes: - name: srt secret: secretName: secret-test
次のコマンドを実行して、Secret secret-testがマウントされるポッドを作成します。
kubectl apply -f example0.yaml
説明example0.yamlを、使用するYAMLファイルの名前に置き換えます。
コンソールの使用
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
On theデプロイメントページをクリックします。イメージから作成.
詳細については、「デプロイを使用したステートレスアプリケーションの作成」をご参照ください。
On the基本情報ウィザードページで、パラメーターを設定し、次へ.
[コンテナー] ウィザードページで、[ボリューム] セクションの [ローカルストレージの追加] をクリックします。 [PVタイプ] を [シークレット] に、[ソースのマウント] を [シークレットの作成] で作成したシークレットに、[コンテナパス] をコンテナでアクセスするパスに設定します。 設定が完了したら、[次へ] をクリックします。
次の図は、ボリュームの設定方法の例を示しています。
On the高度なウィザードページで、パラメーターを設定し、作成.
シークレットをポッドの環境変数として公開します。
次の方法を使用して、シークレットをポッドの環境変数として公開できます。
CLIの使用
この例では、Secret secret-testに格納されているユーザー名とパスワードは、ポッドの環境変数で参照されます。
example1.yamlという名前のファイルを作成し、次のコンテンツをファイルにコピーします。
apiVersion: v1 kind: Pod metadata: name: pod1 spec: containers: - name: redis image: redis env: - name: USERNAME valueFrom: secretKeyRef: name: secret-test key: username - name: PASSWORD valueFrom: secretKeyRef: name: secret-test key: password
次のコマンドを実行して環境変数を設定します。
kubectl apply -f example1.yaml
説明example1.yamlを、使用するYAMLファイルの名前に置き換えます。
コンソールの使用
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
On theデプロイメントページをクリックします。イメージから作成右上隅にあります。
詳細については、「デプロイを使用したステートレスアプリケーションの作成」をご参照ください。
On the基本情報ウィザードページで、パラメーターを設定し、次へ.
[コンテナー] ウィザードページで、[環境] セクションの [
] をクリックします。 [Type] を [Secrets] に設定し、変数の名前を入力し、[Create a Secret] で作成したシークレットとシークレットに保存されているユーザー名またはパスワードに [Value/ValueFrom] を設定します。
環境変数の設定例を次の図に示します。