Azure Red Hat OpenShift (ARO) で Azure Container Registry を使用する

Azure Container Registry (ACR) は、geo レプリケーションなどのエンタープライズ機能を備えたプライベート Docker コンテナー イメージを格納するために使用できる、マネージド コンテナー レジストリ サービスです。 ARO クラスターから ACR にアクセスするために、クラスターは、Docker ログイン資格情報を Kubernetes シークレットに格納して ACR で認証できます。 同様に、ARO クラスターは、ポッド仕様の imagePullSecret を使用して、イメージをプルするときにレジストリに対して認証を行うことができます。 この記事では、プライベート Docker コンテナー イメージを格納およびプルするために、Azure Red Hat OpenShift クラスターで Azure Container Registry を設定する方法について説明します。

前提条件

このガイドでは、既存の Azure Container Registry があることを前提としています。 そうでない場合、Azure portal または Azure CLI の手順を使用して、コンテナー レジストリを作成します。

また、この記事では、既存の Azure Red Hat OpenShift クラスターがあり、oc CLI がインストールされていることを前提としています。 そうでない場合、ARO クラスターの作成に関するチュートリアルの指示に従ってください。

プル シークレットを取得する

ARO クラスターからレジストリにアクセスするには、ACR のプル シークレットが必要です。

プル シークレット資格情報を取得するには、Azure portal または Azure CLI のいずれかを使用できます。

Azure portal を使用する場合は、ACR インスタンスに移動し、[アクセス キー] を選択します。 docker-username は、お使いのコンテナー レジストリの名前です。docker-passwordには password または password2 のいずれかを使用します。

Access Keys

代わりに、Azure CLI を使用してこれらの資格情報を取得できます。

az acr credential show -n <your registry name>

Kubernetes シークレットを作成する

ここでは、これらの資格情報を使用して、Kubernetes シークレットを作成します。 自分の ACR 資格情報を使用して次のコマンドを実行します。

oc create secret docker-registry \
    --docker-server=<your registry name>.azurecr.io \
    --docker-username=<your registry name> \
    --docker-password=******** \
    --docker-email=unused \
    acr-secret

Note

このシークレットは、現在の OpenShift プロジェクト (Kubernetes 名前空間) に格納され、そのプロジェクトで作成されたポッドによってのみ参照可能になります。 クラスター全体のプル シークレットを作成する手順については、こちらのドキュメントを参照してください。

次に、ポッドがコンテナー レジストリに到達できるように、ポッドで使用されるサービス アカウントにシークレットをリンクします。 サービス アカウントの名前は、ポッドで使用されるサービス アカウントの名前と一致する必要があります。 default は既定のサービス アカウントです。

oc secrets link default <pull_secret_name> --for=pull

プライベート レジストリ イメージを使用してポッドを作成する

ARO クラスターを ACR に接続したので、ACR からイメージをプルしてポッドを作成してみましょう。

まず podSpec を使用して、作成したシークレットを imagePullSecret として指定します。

apiVersion: v1
kind: Pod
metadata:
  name: hello-world
spec:
  containers:
  - name: hello-world
    image: <your registry name>.azurecr.io/hello-world:v1
  imagePullSecrets:
  - name: acr-secret

ポッドが起動して実行されていることをテストするには、このコマンドを実行し、状態が [実行中] になるまで待ちます。

$ oc get pods --watch
NAME         READY   STATUS    RESTARTS   AGE
hello-world  1/1     Running   0          30s

次のステップ