ワークロードでは、バックエンドデータベースへの接続やクライアントリクエストの認証のために、ユーザー名、パスワード、証明書などの機密情報を保存する必要がある場合があります。Alibaba Cloud Container Compute Service (ACS) クラスターで Secret を使用してこの情報を管理し、公開されるのを防ぐことができます。このトピックでは、ACS コンソールで Secret を作成し、それをボリュームまたは環境変数として使用する方法について説明します。
前提条件
Pod と Secret は、同じクラスターおよび名前空間にある必要があります。
kubectl クライアントがクラスターに接続されていること。詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」をご参照ください。
Secret の作成
この例では、secret-test という名前の Secret を作成する方法を示します。
ACS コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけてその ID をクリックします。クラスター詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[デプロイメント] ページで、[YAML から作成] をクリックします。
サンプルテンプレートを選択するか、[カスタム] を選択します。次に、YAML コンテンツをコピーして [作成] をクリックします。
次のサンプル YAML テンプレートは、Secret を作成する方法を示しています。
apiVersion: v1 kind: Secret metadata: name: secret-test type: Opaque data: username: YWRtaW4= # admin の Base64 エンコード値。 password: MTIzNDU= # 12345 の Base64 エンコード値。
ACS コンソールで Secret を作成することもできます。詳細については、「Secret の作成」をご参照ください。
Secret をボリュームとして使用する
kubectl の使用
Secret を Pod 内のファイルとして使用できます。この例では、secret-test Secret の username キーと password キーが /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-testPod を作成します。
kubectl apply -f example0.yamlSecret がマウントされていることを確認します。
kubectl describe pod pod0 | grep -A 4 Volumes期待される出力:
Volumes: srt: Type: Secret (a volume populated by a Secret) SecretName: secret-test Optional: false
コンソールの使用
ACS コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけてその ID をクリックします。クラスター詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[デプロイメント] ページで、[イメージから作成] をクリックします。
説明パラメーターの詳細については、「ステートレスアプリケーション (Deployment) の作成」をご参照ください。
[基本情報] タブでパラメーターを設定し、[次へ] をクリックします。
[コンテナー設定] タブの [ボリューム] セクションで、[ローカルストレージの追加] をクリックします。ボリュームタイプ を [Secret] に設定します。マウントソース には、「Secret の作成」セクションで作成した Secret を選択します。コンテナーパス には、コンテナー内のアクセスパスを指定します。パラメーターを設定したら、[次へ] をクリックします。
次の図に設定例を示します。

[高度な設定] タブでパラメーターを設定し、[作成] をクリックします。
Secret を環境変数として使用する
次のいずれかの方法を使用できます。
kubectl の使用
この例では、secret-test Secret の username キーと password キーを Pod の環境変数として設定します。
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: passwordPod を作成します。
kubectl apply -f example1.yaml環境変数が設定されていることを確認します。
kubectl describe pod pod1 | grep -A 2 Environment期待される出力:
Environment: USERNAME: <set to the key 'username' in secret 'secret-test'> Optional: false PASSWORD: <set to the key 'password' in secret 'secret-test'> Optional: false
コンソールの使用
ACS コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけてその ID をクリックします。クラスター詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[デプロイメント] ページで、[イメージから作成] をクリックします。
説明詳細については、「ステートレスアプリケーション (Deployment) の作成」をご参照ください。
[基本情報] タブでパラメーターを設定し、[次へ] をクリックします。
[コンテナー設定] タブの [環境変数] セクションで、[追加] をクリックします。タイプ を [Secret] に設定します。変数/参照 には、「Secret の作成」セクションで作成した Secret を選択します。次に、参照するキーを選択し、変数の名前を入力します。