4.2. クラスターからレジストリーへの直接アクセス
クラスター内からレジストリーにアクセスできる。
手順
内部ルートを使用して、クラスターからレジストリーにアクセスします。
ノードの名前を取得してノードにアクセスします。
$ oc get nodes
$ oc debug nodes/<node_name>
ノードで
oc
やpodman
などのツールへのアクセスを有効にするには、ルートディレクトリーを/host
に変更します。sh-4.2# chroot /host
アクセストークンを使用してコンテナーイメージレジストリーにログインします。
sh-4.2# oc login -u kubeadmin -p <password_from_install_log> https://api-int.<cluster_name>.<base_domain>:6443
sh-4.2# podman login -u kubeadmin -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000
以下のようなログインを確認するメッセージが表示されるはずです。
Login Succeeded!
注記ユーザー名には任意の値を指定でき、トークンには必要な情報がすべて含まれます。コロンが含まれるユーザー名を指定すると、ログインに失敗します。
Image Registry Operator はルートを作成するため、
default-route-openshift-image-registry.<cluster_name>
のようになります。レジストリーに対して
podman pull
およびpodman push
操作を実行します。重要任意のイメージをプルできますが、system:registry ロールを追加している場合は、各自のプロジェクトにあるレジストリーにのみイメージをプッシュすることができます。
次の例では、以下を使用します。
コンポーネント 値 <registry_ip>
172.30.124.220
<port>
5000
<project>
openshift
<image>
image
<tag>
省略 (デフォルトは
latest
)任意のイメージをプルします。
sh-4.2# podman pull <name.io>/<image>
新規イメージに
<registry_ip>:<port>/<project>/<image>
形式でタグ付けします。プロジェクト名は、イメージを正しくレジストリーに配置し、これに後でアクセスできるようにするために OpenShift Container Platform のプル仕様に表示される必要があります。sh-4.2# podman tag <name.io>/<image> image-registry.openshift-image-registry.svc:5000/openshift/<image>
注記指定されたプロジェクトについて
system:image-builder
ロールを持っている必要があります。このロールにより、ユーザーはイメージの書き出しやプッシュを実行できます。そうでない場合は、次の手順のpodman push
が失敗します。これをテストするには、新規プロジェクトを作成し、イメージをプッシュできます。新しくタグ付けされたイメージをレジストリーにプッシュします。
sh-4.2# podman push image-registry.openshift-image-registry.svc:5000/openshift/<image>
注記イメージを内部レジストリーにプッシュする場合は、リポジトリー名に
<project>/<name>
形式を使用する必要があります。リポジトリー名に複数のプロジェクトレベルを使用すると、認証エラーが発生します。