5.4.2.2. ワークロードでのプルシークレットの使用
プルシークレットを使用すると、ワークロードが次のいずれかの方法でプライベートレジストリーからイメージをプルできるようになります。
-
シークレットを
ServiceAccountにリンクする。これにより、そのサービスアカウントを使用するすべての Pod にシークレットが自動的に適用されます。 -
ワークロード設定で
imagePullSecretsを直接定義する。これは GitOps や ArgoCD などの環境に役立ちます。
手順
サービスアカウントにシークレットを追加することで、Pod のイメージをプルするためのシークレットを使用できます。サービスアカウントの名前は、Pod が使用するサービスアカウントの名前と一致する必要があることに注意してください。デフォルトのサービスアカウントは
defaultです。次のコマンドを入力してプルシークレットを
ServiceAccountにリンクします。$ oc secrets link default <pull_secret_name> --for=pull変更を確認するために、次のコマンドを入力します。
$ oc get serviceaccount default -o yaml出力例
apiVersion: v1 imagePullSecrets: - name: default-dockercfg-123456 - name: <pull_secret_name> kind: ServiceAccount metadata: annotations: openshift.io/internal-registry-pull-secret-ref: <internal_registry_pull_secret> creationTimestamp: "2025-03-03T20:07:52Z" name: default namespace: default resourceVersion: "13914" uid: 9f62dd88-110d-4879-9e27-1ffe269poe3 secrets: - name: <pull_secret_name>
シークレットをサービスアカウントにリンクする代わりに、Pod またはワークロード定義で直接参照することもできます。これは ArgoCD などの GitOps ワークフローに役立ちます。以下に例を示します。
Pod 仕様の例
apiVersion: v1 kind: Pod metadata: name: <secure_pod_name> spec: containers: - name: <container_name> image: quay.io/my-private-image imagePullSecrets: - name: <pull_secret_name>ArgoCD ワークフローの例
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: <example_workflow> spec: entrypoint: <main_task> imagePullSecrets: - name: <pull_secret_name>