Oracle Cloud Infrastructureドキュメント

Kubernetesデプロイメント中にレジストリからイメージをプル

Kubernetesクラスタへのアプリケーションのデプロイメント中に、通常、1つ以上のイメージをDockerレジストリから取得する必要があります。 アプリケーション・マニフェスト・ファイルでは、プルするイメージ、プルするレジストリ、イメージをプルするときに使用する資格証明を指定します。 マニフェスト・ファイルは、通常、ポッド仕様、またはdeployment.yamlファイルとも呼ばれます(他のファイル名も使用できます)。

アプリケーションでOracle Cloud Infrastructure Registryにあるイメージをプルするには、次の2つのステップを実行する必要があります:

  • kubectlを使用してDockerレジストリ・シークレットを作成する必要があります。 シークレットには、イメージをプルするときに使用するOracle Cloud Infrastructure資格証明が含まれています。 秘密を作成するときは、最新バージョンのkubectlを使用することを強くお薦めします(kubectl documentationを参照)。
  • アプリケーション・マニフェスト・ファイルで使用するリポジトリのロケーションとDockerレジストリ・シークレットを含め、Oracle Cloud Infrastructure Registryからプルするイメージを指定する必要があります。

Dockerレジストリ・シークレットを作成するには:

  1. まだ行っていない場合は、cluster kubeconfig構成ファイルをダウンロードし、そのファイルを指すようにKUBECONFIG環境変数を設定します。 「クラスタ・アクセスを有効にするためのkubeconfigファイルのダウンロード」を参照してください。
  2. 端末ウィンドウで、次のように入力します:

    $ kubectl create secret docker-registry <secret-name> --docker-server=<region-code>.ocir.io --docker-username='<tenancy-name>/<oci-username>' --docker-password='<oci-auth-token>' --docker-email='<email-address>'

    説明:

    • <secret-name>は、マニフェスト・ファイルで秘密を参照するために使用する、選択した名前です。 たとえば、ocirsecret
    • <region-code>は、使用しているOracle Cloud Infrastructure Registryリージョンのコードです。 たとえば、iadです。 リージョン・コードのリストは、「リージョン名およびリージョン・コード別の可用性」を参照してください。
    • ocir.ioOracle Cloud Infrastructure Registryの名前です。
    • <tenancy-name>は、アプリケーションがイメージをプルするリポジトリを含むテナンシです。 たとえば、acme-dev
    • <oci-username>は、イメージをプルするときに使用するユーザー名です。 ユーザー名は、<tenancy-name>で指定されたテナンシにアクセスできる必要があります。 たとえば、jdoe@acme.comです。 テナンシがOracle Identity Cloud Serviceでフェデレーテッド化されている場合は、次の形式を使用しますoracleidentitycloudservice/<oci-username>
    • <oci-auth-token>は、<oci-username>で指定されたユーザーの認証トークンです。 たとえば、k]j64r{1sJSSF-;)K8
    • <email-address>は電子メール・アドレスです。 電子メール・アドレスは必須ですが、指定する内容は関係ありません。 たとえば、jdoe@acme.com

    特殊文字を含む文字列を一重引用符で囲むことに注意してください。

    たとえば、前の例を組み合わせて、次のように入力します:

    $ kubectl create secret docker-registry ocirsecret --docker-server=phx.ocir.io --docker-username='acme-dev/jdoe@acme.com' --docker-password='k]j64r{1sJSSF-;)K8' --docker-email='jdoe@acme.com'

    Dockerシークレットを作成したら、これをアプリケーション・マニフェスト・ファイルで参照できるようになりました。

Oracle Cloud Infrastructure Registryからプルするイメージと、アプリケーションをクラスタにデプロイする際に使用するDockerシークレットを指定するには、次のようにします:

  1. アプリケーション・マニフェスト・ファイルをテキスト・エディタで開きます。
  2. マニフェスト・ファイルに次のセクションを追加します:

    1. Oracle Cloud Infrastructure Registryから取得するコンテナの名前とロケーションを指定するcontainersセクションを追加し、他のデプロイメントの詳細も追加します。
    2. imagePullSecretsセクションをマニフェスト・ファイルに追加し、Oracle Cloud Infrastructure Registryにアクセスするために作成したDockerシークレットの名前を指定します。

    containersセクションとimagePullSecretsセクションを追加したときのマニフェストの表示例を次に示します:

    apiVersion: v1
    kind: Pod
    metadata:
      name: ngnix-image
    spec:
      containers:
        - name: ngnix
          image: phx.ocir.io/acme-dev/project01/ngnix-lb:latest
          imagePullPolicy: Always
          ports:
          - name: nginx
            containerPort: 8080
            protocol: TCP
      imagePullSecrets:
        - name: ocirsecret
  3. マニフェスト・ファイルを保存して閉じます。