ワークロードがバックエンドデータベースに接続したり、クライアントのIDを確認したりする必要がある場合は、ユーザー名、パスワード、証明書などの機密情報をクラスターに保存する必要があります。データ漏洩を防ぐために、Alibaba Cloud Container Compute Service (ACS) が提供する Secret に機密情報を保存することをお勧めします。このトピックでは、ACS コンソールで Secret を作成する方法について説明します。また、Secret を Pod にボリュームとしてマウントする方法と、Secret を Pod の環境変数として公開する方法についても説明します。
前提条件
Secret を Pod にボリュームとしてマウントするには、Secret と Pod が同じクラスターと名前空間に属していることを確認してください。
kubectl クライアントがクラスターに接続されていること。詳細については、クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する を参照してください。
Secret を作成する
次の例は、secret-test という名前の Secret を作成する方法を示しています。
ACS コンソール にログインします。左側のナビゲーションペインで、クラスター をクリックします。
クラスター ページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、
を選択します。デプロイメント ページで、右上隅にある YAML から作成 をクリックします。
テンプレートまたはカスタムを選択し、次の 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 ディレクトリにファイルとして保存されます。
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 がマウントされた Pod を作成します。
kubectl apply -f example0.yaml
次のコマンドを実行して、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 コンソールを使用する
ACS コンソール にログインします。左側のナビゲーションペインで、クラスター をクリックします。
クラスター ページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、
を選択します。デプロイメント ページで、イメージから作成 をクリックします。
説明詳細については、デプロイメントを使用してステートレスアプリケーションを作成する を参照してください。
基本情報 ウィザードページで、パラメーターを構成し、次へ をクリックします。
コンテナ ウィザードページで、ローカル ストレージを追加ボリューム セクションの PV タイプシークレットマウントソースシークレットを作成するコンテナー パス次へ をクリックします。 を に設定し、 を で作成した Secret に設定し、 をコンテナ内でアクセスされるパスに設定します。構成が完了したら、 をクリックします。
次の図は、ボリュームを構成する方法の例を示しています。
詳細設定 ウィザードページで、パラメーターを構成し、作成 をクリックします。
Secret を Pod の環境変数として公開する
次の方法を使用して、Secret を Pod の環境変数として公開できます。
CLI を使用する
この例では、Secret secret-test に保存されているユーザー名とパスワードが、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
次のコマンドを実行して、Secret secret-test がマウントされた Pod を作成します。
kubectl apply -f example1.yaml
次のコマンドを実行して、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 コンソールを使用する
ACS コンソール にログインします。左側のナビゲーションペインで、クラスター をクリックします。
クラスター ページで、管理するクラスターを見つけ、その ID をクリックします。クラスター詳細ページの左側のナビゲーションペインで、
を選択します。デプロイメント ページで、右上隅にある イメージから作成 をクリックします。
説明詳細については、デプロイメントを使用してステートレスアプリケーションを作成する を参照してください。
基本情報 ウィザードページで、パラメーターを構成し、次へ をクリックします。
コンテナ ウィザードページで、環境 セクションの 種類シークレット値/ValueFromシークレットを作成する をクリックします。 を に設定し、変数の名前を入力し、 を で作成した Secret と、Secret 内のユーザー名またはパスワードフィールドに設定します。
次の図は、環境変数を構成する方法の例を示しています。