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

Azure Red Hat OpenShift には、新しいイメージ リポジトリを自動的にプロビジョニングする機能を追加する統合されたコンテナー イメージ レジストリが用意されています。 これにより、結果のイメージをプッシュするためのアプリケーション ビルドの組み込みの場所がユーザーに提供されます。

この記事では、Azure Red Hat OpenShift (ARO) 4 クラスター用の組み込みのコンテナー イメージ レジストリを構成します。 学習内容は次のとおりです。

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

開始する前に

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

Note

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

クラスターを作成したら、kubeadmin ユーザーとして認証してクラスターに接続します。

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

ID (クラスター ユーザー、Microsoft Entra ユーザー、または ServiceAccount) が内部レジストリにアクセスできるようにするには、クラスター内のアクセス許可を付与する必要があります。

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>

Note

クラスター ユーザーと Microsoft Entra ユーザーの場合、これはクラスターへの認証に使用する名前と同じになります。 OpenShift ServiceAccounts の場合は、名前を次のように書式設定します。 system:serviceaccount:<project>:<name>

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

レジストリの認証を構成したので、次の操作を行うことができます。

クラスターの内部から

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

クラスターの外部から

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

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 }}'

次のステップ

組み込みのコンテナー イメージ レジストリを設定したので、OpenShift でアプリケーションをデプロイすることから始めることができます。 Java アプリケーションの場合は、「Azure Red Hat OpenShift 4 クラスターに Open Liberty/WebSphere Liberty を使用する Java アプリケーションをデプロイする」を参照してください。