3.4.6 DockerレジストリにアクセスするためのKubernetesシークレットの作成

Helmを使用してアプリケーションをインストールする場合は、Kubernetesシークレットを使用して、リモート・リポジトリからイメージをプルするための認証詳細を指定します。

指定したすべてのログイン詳細がKubernetesシークレットに含まれるのは、資格証明を含むdocker loginコマンドを使用してリモートDockerレジストリに手動でログインした場合です。

  1. 次のコマンドを使用してコマンドラインに資格証明を指定することで、シークレットを作成します。
    kubectl create secret docker-registry NAME --docker-server=SERVER --docker-username=USERNAME --docker-password=PASSWORD --docker-email=EMAIL --namespace=NAMESPACE

    説明

    • NAME: 作成するKubernetesシークレットの名前。この名前を書き留めておきます。後からシークレットを参照するためにマニフェスト・ファイルでこの名前を使用するためです。
    • SERVER: プライベートDockerレジストリの名前。形式は、Kubernetesプラットフォームによって異なります。たとえば、Oracle Cloud Infrastructure環境でのユーザー名の形式は<region-key>.ocir.ioです。
    • USERNAME: リモートDockerレジストリにアクセスするためのユーザー名。形式は、Kubernetesプラットフォームによって異なります。たとえば、Oracle Cloud Infrastructure環境でのユーザー名の形式は<tenancy-namespace>/<oci-username>です。
    • PASSWORD: リモートDockerレジストリにアクセスするためのパスワード。
    • EMAIL: Dockerレジストリの電子メールID。
    • NAMESPACE: MicroTxをデプロイするネームスペース。

    次のコマンドを使用して、otmmネームスペースにregcredという名前のKubernetesシークレットを作成します。

    kubectl create secret docker-registry regcred --docker-server=iad.ocir.io --docker-username=mytenancy/myuser --docker-password=pwd --docker-email=myuser@example.com --namespace=otmm
  2. 作成したシークレットの名前を書き留めます。この値は後で指定する必要があります。
  3. ターミナルを閉じます。
    コマンドラインにシークレットを入力すると、そのシークレットが保護されていないシェル履歴に格納されることがあります。kubectlの実行中にこのシークレットがPCの他のユーザーにも表示される可能性があります。この問題を解消するには、シークレットを作成した後にターミナルを閉じてください。

既存の資格証明に基づいてシークレットを作成することもできます。https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentialsを参照してください。