Azure Red Hat OpenShift 4 の組み込みのコンテナー レジストリを構成する

Azure Red Hat OpenShiftには統合コンテナー イメージ レジストリが用意されているため、必要に応じて新しいイメージ リポジトリを自動的にプロビジョニングできます。 このレジストリを使用すると、結果のイメージをプッシュするアプリケーション ビルドの組み込み場所を取得できます。

この記事では、Azure Red Hat OpenShift 4 クラスターの組み込みコンテナー イメージ レジストリを構成します。 あなたは次のことを学びます:

  • ID にレジストリへのアクセスを許可する
  • クラスター内から組み込みのコンテナー イメージ レジストリにアクセスする
  • クラスターの外部から組み込みのコンテナー イメージ レジストリにアクセスする

開始する前に

この記事では、既存のクラスターがあることを前提としています ( 「Azure Red Hat OpenShift 4 クラスターの作成」を参照)。 Microsoft Entra 統合を構成する場合は、az aro create--pull-secret 引数を指定してクラスターを作成してください。

Tip

クラスターの外部から内部レジストリを操作する最も簡単な方法は、お使いのクラスターに Microsoft Entra 認証を構成することです。

クラスターを作成したら、 ユーザーとして認証してkubeadmin

レジストリへの認証を構成する

内部レジストリにアクセスするには、クラスター ユーザー、Microsoft Entra ユーザー、Azure Red Hat OpenShift サービス アカウントなど、任意の ID にクラスター内のアクセス許可を付与する必要があります。

kubeadminとして、次のコマンドを実行します。

# Note: replace "<user>" with the identity you need to access the registry
oc policy add-role-to-user -n openshift-image-registry registry-viewer <user>
oc policy add-role-to-user -n openshift-image-registry registry-editor <user>

クラスター ユーザーと Microsoft Entra ユーザーの場合、この名前はクラスターへの認証に使用する名前と同じです。 Azure Red Hat OpenShiftサービス アカウントの場合は、名前をsystem:serviceaccount:<project>:<name>として書式設定します。

レジストリにアクセスする

レジストリの認証を構成したら、それを操作できます。 以下のセクションで詳細情報を説明します。

クラスターの内部から

レジストリにイメージをプッシュしたり、レジストリからイメージをプルしたりするポッドとして、継続的インテグレーション/継続的デリバリー(CI/CD)プラットフォームを実行しているとします。 クラスター内からレジストリにアクセスする必要がある場合は、完全修飾ドメイン名 image-registry.openshift-image-registry.svc.cluster.local:5000のクラスター IP サービスを介してレジストリにアクセスできます。 クラスター内のすべてのポッドがこのレジストリにアクセスできます。

クラスターの外部から

開発者のノート PC、外部 CI/CD プラットフォーム、または別のクラスターからイメージをプッシュしてプルするとします。 ワークフローでクラスターの外部から内部レジストリにアクセスする必要がある場合は、さらにいくつかの手順を完了する必要があります。

kubeadmin として、ルートを介してクラスター外部に組み込みレジストリを公開するために、次のコマンドを実行します。

oc patch config.imageregistry.operator.openshift.io/cluster --patch='{"spec":{"defaultRoute":true}}' --type=merge
oc patch config.imageregistry.operator.openshift.io/cluster --patch='[{"op": "add", "path": "/spec/disableRedirect", "value": true}]' --type=json

その後、レジストリの外部ルーティング可能な完全修飾ドメイン名を確認できます。

kubeadminとして、次のコマンドを実行します。

oc get route -n openshift-image-registry default-route --template='{{ .spec.host }}'