すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:Pod で Secret を使用するように構成する

最終更新日:Dec 27, 2024

ワークロードがバックエンドデータベースに接続したり、クライアントのIDを確認したりする必要がある場合は、ユーザー名、パスワード、証明書などの機密情報をクラスターに保存する必要があります。データ漏洩を防ぐために、Alibaba Cloud Container Compute Service (ACS) が提供する Secret に機密情報を保存することをお勧めします。このトピックでは、ACS コンソールで Secret を作成する方法について説明します。また、Secret を Pod にボリュームとしてマウントする方法と、Secret を Pod の環境変数として公開する方法についても説明します。

前提条件

Secret を作成する

次の例は、secret-test という名前の Secret を作成する方法を示しています。

  1. ACS コンソール にログインします。左側のナビゲーションペインで、クラスター をクリックします。

  2. クラスター ページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、ワークロード > デプロイメント を選択します。

  3. デプロイメント ページで、右上隅にある YAML から作成 をクリックします。

  4. テンプレートまたはカスタムを選択し、次の YAML コンテンツをエディターにコピーして、作成 をクリックします。

    次の YAML コンテンツは、secret-test という名前の Secret を作成するために使用されます。

    apiVersion: v1
    kind: Secret
    metadata:
      name: secret-test
    type: Opaque
    data:
      username: YWRtaW4=  # Base64 エンコードされた暗号文。平文は admin です。
      password: MTIzNDU=  # Base64 エンコードされた暗号文。平文は 12345 です。

ACS コンソールで Secret を作成することもできます。詳細については、Secret を作成する を参照してください。

Secret を Pod にボリュームとしてマウントする

次の方法を使用して、Secret を Pod にボリュームとしてマウントできます。

CLI を使用する

マウントされた Secret は、Pod 内のファイルとして使用できます。この例では、ユーザー名とパスワード情報を含む Secret secret-test が /srt ディレクトリにファイルとして保存されます。

  1. 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
  2. 次のコマンドを実行して、Secret secret-test がマウントされた Pod を作成します。

    kubectl apply -f example0.yaml
  3. 次のコマンドを実行して、Secret が Pod にマウントされているかどうかを確認します。

    kubectl describe pod pod0 | grep -A 4 Volumes

    予期される出力:

    Volumes:
      srt:
        Type:        Secret (a volume populated by a Secret)
        SecretName:  secret-test
        Optional:    false

ACS コンソールを使用する

  1. ACS コンソール にログインします。左側のナビゲーションペインで、クラスター をクリックします。

  2. クラスター ページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、ワークロード > デプロイメント を選択します。

  3. デプロイメント ページで、イメージから作成 をクリックします。

    説明

    詳細については、デプロイメントを使用してステートレスアプリケーションを作成する を参照してください。

  4. 基本情報 ウィザードページで、パラメーターを構成し、次へ をクリックします。

  5. コンテナ ウィザードページで、ローカル ストレージを追加ボリューム セクションの PV タイプシークレットマウントソースシークレットを作成するコンテナー パス次へ をクリックします。 を に設定し、 を で作成した Secret に設定し、 をコンテナ内でアクセスされるパスに設定します。構成が完了したら、 をクリックします。

    次の図は、ボリュームを構成する方法の例を示しています。

    配置数据卷

  6. 詳細設定 ウィザードページで、パラメーターを構成し、作成 をクリックします。

Secret を Pod の環境変数として公開する

次の方法を使用して、Secret を Pod の環境変数として公開できます。

CLI を使用する

この例では、Secret secret-test に保存されているユーザー名とパスワードが、Pod の環境変数で参照されます。

  1. 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
  2. 次のコマンドを実行して、Secret secret-test がマウントされた Pod を作成します。

    kubectl apply -f example1.yaml
  3. 次のコマンドを実行して、Secret が Pod にマウントされているかどうかを確認します。

    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 コンソールを使用する

  1. ACS コンソール にログインします。左側のナビゲーションペインで、クラスター をクリックします。

  2. クラスター ページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、ワークロード > デプロイメント を選択します。

  3. デプロイメント ページで、右上隅にある イメージから作成 をクリックします。

    説明

    詳細については、デプロイメントを使用してステートレスアプリケーションを作成する を参照してください。

  4. 基本情報 ウィザードページで、パラメーターを構成し、次へ をクリックします。

  5. コンテナ ウィザードページで、环境变量環境 セクションの 種類シークレット値/ValueFromシークレットを作成する をクリックします。 を に設定し、変数の名前を入力し、 を で作成した Secret と、Secret 内のユーザー名またはパスワードフィールドに設定します。

    次の図は、環境変数を構成する方法の例を示しています。

    变量名称