6.11.4. VMware 仮想マシンまたはテンプレートのインポート
単一の VMware 仮想マシンまたはテンプレートを OpenShift Container Platform クラスターにインポートできます。
VMware テンプレートをインポートする場合、ウィザードはテンプレートに基づいて仮想マシンを作成します。
VMware 仮想マシンまたはテンプレートのインポートはテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲についての詳細は、https://access.redhat.com/ja/support/offerings/techpreview/ を参照してください。
インポートプロセスでは、VMware Virtual Disk Development Kit (VDDK) を使用して VMware 仮想ディスクをコピーします。VDDK SDK をダウンロードし、VDDK イメージをビルドし、イメージレジストリーにイメージをアップロードしてからこれを v2v-vmware
ConfigMap に追加できます。
仮想マシンウィザードで VMware 仮想マシンをインポートしてから、仮想マシンのネットワーク名を更新することができます。
6.11.4.1. VDDK イメージのイメージレジストリーの設定
内部 OpenShift Container Platform イメージレジストリーまたは VDDK イメージのセキュアな外部イメージレジストリーのいずれかを設定できます。
VDDK イメージをパブリックリポジトリーに保存すると、VMware ライセンスの条件に違反する可能性があります。
6.11.4.1.1. 内部イメージレジストリーの設定
イメージレジストリー Operator 設定を更新して、ベアメタルに内部 OpenShift Container Platform イメージレジストリーを設定できます。
6.11.4.1.1.1. イメージレジストリーの管理状態の変更
イメージレジストリーを起動するには、イメージレジストリー Operator 設定の managementState
を Removed
から Managed
に変更する必要があります。
手順
ManagementState
イメージレジストリー Operator 設定をRemoved
からManaged
に変更します。以下は例になります。$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
6.11.4.1.1.2. ベアメタルの場合のレジストリーストレージの設定
クラスター管理者は、インストール後にレジストリーをストレージを使用できるように設定する必要があります。
前提条件
- クラスター管理者のパーミッション。
- ベアメタル上のクラスター。
Red Hat OpenShift Container Storage などのクラスターのプロビジョニングされた永続ストレージ。
重要OpenShift Container Platform は、1 つのレプリカのみが存在する場合にイメージレジストリーストレージの
ReadWriteOnce
アクセスをサポートします。2 つ以上のレプリカで高可用性をサポートするイメージレジストリーをデプロイするには、ReadWriteMany
アクセスが必要です。- 100Gi の容量が必要です。
手順
レジストリーをストレージを使用できるように設定するには、
configs.imageregistry/cluster
リソースのspec.storage.pvc
を変更します。注記共有ストレージを使用する場合は、外部からアクセスを防ぐためにセキュリティー設定を確認します。
レジストリー Pod がないことを確認します。
$ oc get pod -n openshift-image-registry
注記ストレージタイプが
emptyDIR
の場合、レプリカ数が1
を超えることはありません。レジストリー設定を確認します。
$ oc edit configs.imageregistry.operator.openshift.io
出力例
storage: pvc: claim:
claim
フィールドを空のままにし、image-registry-storage
PVC の自動作成を可能にします。clusteroperator
ステータスを確認します。$ oc get clusteroperator image-registry
6.11.4.1.2. 内部イメージレジストリーへのアクセスの設定
レジストリーをルートで公開して、クラスター内から OpenShift Container Platform 内部レジストリーに直接アクセスできます。
6.11.4.1.2.1. クラスターからレジストリーへの直接アクセス
クラスター内からレジストリーにアクセスすることができます。
手順
内部ルートを使用して、クラスターからレジストリーにアクセスします。
ノードのアドレスを取得することにより、ノードにアクセスします。
$ oc get nodes $ oc debug nodes/<node_address>
ノード上で
oc
やpodman
などのツールにアクセスするには、以下のコマンドを実行します。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!
注記ユーザー名には任意の値を指定でき、トークンには必要な情報がすべて含まれます。コロンが含まれるユーザー名を指定すると、ログインに失敗します。
イメージレジストリー 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
)任意のイメージをプルします。
$ podman pull name.io/image
新規イメージに
<registry_ip>:<port>/<project>/<image>
形式でタグ付けします。プロジェクト名は、イメージを正しくレジストリーに配置し、これに後でアクセスできるようにするために OpenShift Container Platform のプル仕様に表示される必要があります。$ podman tag name.io/image image-registry.openshift-image-registry.svc:5000/openshift/image
注記指定されたプロジェクトについて
system:image-builder
ロールを持っている必要があります。このロールにより、ユーザーはイメージの書き出しやプッシュを実行できます。そうでない場合は、次の手順のpodman push
は失敗します。テストするために、新規プロジェクトを作成してイメージをプッシュできます。新しくタグ付けされたイメージをレジストリーにプッシュします。
$ podman push image-registry.openshift-image-registry.svc:5000/openshift/image
6.11.4.1.2.2. セキュアなレジストリーの手動による公開
クラスター内から OpenShift Container Platform レジストリーにログインするのではなく、外部からレジストリーにアクセスできるように、このレジストリーをルートに公開します。この方法を使うと、ルートアドレスを使ってクラスターの外部からレジストリーにログインし、ルートのホストを使ってイメージにタグ付けしたり、イメージをプッシュしたりできます。
前提条件:
以下の前提条件は自動的に実行されます。
- レジストリー Operator のデプロイ。
- Ingress Operator のデプロイ。
手順
configs.imageregistry.operator.openshift.io
リソースで DefaultRoute
パラメーターを使用するか、またはカスタムルートを使用してルートを公開することができます。
DefaultRoute
を使用してレジストリーを公開するには、以下を実行します。
DefaultRoute
をTrue
に設定します。$ oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge
podman
でログインします。$ HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}') $ podman login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false $HOST 1
- 1
--tls-verify=false
は、ルートのクラスターのデフォルト証明書が信頼されない場合に必要になります。Ingress Operator で、信頼されるカスタム証明書をデフォルト証明書として設定できます。
カスタムルートを使用してレジストリーを公開するには、以下を実行します。
ルートの TLS キーでシークレットを作成します。
$ oc create secret tls public-route-tls \ -n openshift-image-registry \ --cert=</path/to/tls.crt> \ --key=</path/to/tls.key>
この手順はオプションです。シークレットを作成しない場合、ルートは Ingress Operator からデフォルトの TLS 設定を使用します。
レジストリー Operator では、以下のようになります。
spec: routes: - name: public-routes hostname: myregistry.mycorp.organization secretName: public-route-tls ...
注記レジストリーのルートのカスタム TLS 設定を指定している場合は
secretName
のみを設定します。
6.11.4.1.3. 外部イメージレジストリーへのアクセスの設定
VDDK イメージの外部イメージレジストリーを使用する場合、外部イメージレジストリーの認証局を OpenShift Container Platform クラスターに追加できます。
オプションで、Docker 認証情報からプルシークレットを作成し、これをサービスアカウントに追加できます。
6.11.4.1.3.1. クラスターへの認証局の追加
以下の手順でイメージのプッシュおよびプル時に使用する認証局 (CA) をクラスターに追加することができます。
前提条件
- クラスター管理者の権限があること。
-
レジストリーの公開証明書 (通常は、
/etc/docker/certs.d/
ディレクトリーにあるhostname/ca.crt
ファイル)。
手順
自己署名証明書を使用するレジストリーの信頼される証明書が含まれる ConfigMap を
openshift-config
namespace に作成します。それぞれの CA ファイルについて、 ConfigMap のキーがhostname[..port]
形式のレジストリーのホスト名であることを確認します。$ oc create configmap registry-cas -n openshift-config \ --from-file=myregistry.corp.com..5000=/etc/docker/certs.d/myregistry.corp.com:5000/ca.crt \ --from-file=otherregistry.com=/etc/docker/certs.d/otherregistry.com/ca.crt
クラスターイメージの設定を更新します。
$ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-cas"}}}' --type=merge
6.11.4.1.3.2. Pod が他のセキュリティー保護されたレジストリーからイメージを参照できるようにする設定
Docker クライアントの .dockercfg
$HOME/.docker/config.json
ファイルは、セキュア/非セキュアなレジストリーに事前にログインしている場合に認証情報を保存する Docker 認証情報ファイルです。
OpenShift Container Platform の内部レジストリーにないセキュリティー保護されたコンテナーイメージをプルするには、Docker 認証情報でプルシークレットを作成し、これをサービスアカウントに追加する必要があります。
手順
セキュリティー保護されたレジストリーの
.dockercfg
ファイルがすでにある場合は、以下を実行してそのファイルからシークレットを作成できます。$ oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfg
または、
$HOME/.docker/config.json
ファイルがある場合は以下を実行します。$ oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
セキュアなレジストリーについての Docker 認証情報ファイルがまだない場合には、以下のコマンドを実行してシークレットを作成することができます。
$ oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>
Pod のイメージをプルするためのシークレットを使用するには、そのシークレットをサービスアカウントに追加する必要があります。この例では、サービスアカウントの名前は、Pod が使用するサービスアカウントの名前に一致している必要があります。
default
はデフォルトのサービスアカウントです。$ oc secrets link default <pull_secret_name> --for=pull