多くのビジネスシナリオでは、ワークロードのバックエンドデータベースへの接続やクライアントリクエストの検証などで、ユーザー名、パスワード、証明書などの機密情報を保存する必要があります。データ漏洩を防ぐために、お使いの Alibaba Cloud Container Compute Service (ACS) クラスターで Secret を使用してこの情報を管理することを推奨します。このトピックでは、Container Compute Service コンソールで Secret を作成し、ボリュームとしてマウントするか、環境変数として公開することで Secret を使用する方法を説明します。
前提条件
-
Pod と Secret は、同じクラスターおよび名前空間に存在する必要があります。
-
kubectl クライアントがクラスターに接続されていること。詳細については、クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する を参照してください。
Secret の作成
この例では、secret-test という名前の Secret を作成します。
-
ACS コンソール にログインします。左側のナビゲーションペインで、クラスター をクリックします。
-
クラスター ページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、 を選択します。
-
Deployments ページで、Create from YAML をクリックします。
-
サンプルテンプレートを選択するか、YAML コンテンツをカスタマイズして、Create をクリックします。
次の YAML テンプレートは、Secret を作成する例です。
apiVersion: v1 kind: Secret metadata: name: secret-test type: Opaque data: username: YWRtaW4= # プレーンテキストは「admin」です。Base64 でエンコードされています。 password: MTIzNDU= # プレーンテキストは「12345」です。Base64 でエンコードされています。
YAML ではなくコンソールの UI を使用して 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-test -
Pod を作成します。
kubectl apply -f example0.yaml -
Secret がマウントされていることを確認します。
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 をクリックします。クラスター詳細ページの左側のナビゲーションペインで、 を選択します。
-
Deployments ページで、Create from Image をクリックします。
説明パラメーターの詳細については、「ステートレスワークロード (Deployment) の作成」をご参照ください。
-
Basic Information タブで、必要に応じてパラメーターを設定し、Next をクリックします。
-
Container タブの Volume セクションで、Add Local Storage をクリックします。PV タイプ を secret に設定します。マウントソース には、作成した secret を選択します。コンテナーパス には、コンテナー内のアクセスパスを入力します。情報を設定したら、Next をクリックします。
次に設定例を示します。
[マウントソース] で
secret-testを選択します。[コンテナーパス] に/srtを入力します。 -
Advanced タブで、パラメーターを設定し、Create をクリックします。
Secret の環境変数としての使用
次のいずれかの方法を使用できます。
kubectl
この例では、Secret「secret-test」の 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: password -
Pod を作成します。
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 をクリックします。クラスター詳細ページの左側のナビゲーションペインで、 を選択します。
-
Deployments ページで、Create from Image をクリックします。
説明詳細については、「ステートレスワークロード (Deployment) の作成」をご参照ください。
-
Basic Information タブで、必要に応じてパラメーターを設定し、Next をクリックします。
-
Container タブの Environments セクションで、Add をクリックします。type を Secret に設定します。value/value from には、作成した Secret を選択します。次に、参照するキーを選択し、変数の名前を入力します。