2.4. 制限された環境での odo の使用
2.4.1. 制限された環境での odo について リンクのコピーリンクがクリップボードにコピーされました!
odo を非接続の OpenShift Container Platform クラスター、または制限された環境でプロビジョニングされたクラスターで実行するには、クラスター管理者がミラーリングされたレジストリーでクラスターを作成していることを確認する必要があります。
非接続クラスターで作業を開始するには、まず odo init イメージをクラスターのレジストリーにプッシュし、ODO_BOOTSTRAPPER_IMAGE 環境変数を使用して odo init イメージパスを上書きする必要があります。
odo init image のプッシュ後に、レジストリーからサポートされているビルダーイメージをミラーリングし、ミラーレジストリーを上書きした後にアプリケーションを作成する必要があります。ビルダーイメージは、アプリケーションのランタイム環境を設定するために必要であり、これにはアプリケーションのビルドに必要なビルドツールが含まれます (例: Node.js の場合は npm、Java の場合は Maven)。ミラーレジストリーには、アプリケーションに必要なすべての依存関係が含まれます。
2.4.2. odo init イメージの制限されたクラスターレジストリーへのプッシュ リンクのコピーリンクがクリップボードにコピーされました!
クラスターおよびオペレーティングシステムの設定に応じて、odo init イメージをミラーレジストリーにプッシュするか、または内部レジストリーに直接プッシュできます。
2.4.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
クライアントオペレーティングシステムに
ocをインストールします。 -
odoをクライアントオペレーティングシステムにインストールします。 - 内部レジストリーまたはミラーレジストリーが設定された OpenShift Container Platform の制限付きクラスターへのアクセス。
2.4.2.2. odo init イメージのミラーレジストリーへのプッシュ リンクのコピーリンクがクリップボードにコピーされました!
オペレーティングシステムによっては、以下のように odo init イメージをミラーレジストリーを持つクラスターにプッシュできます。
2.4.2.2.1. init イメージを Linux のミラーレジストリーにプッシュする リンクのコピーリンクがクリップボードにコピーされました!
手順
base64を使用してミラーレジストリーのルート認証局 (CA) コンテンツをエンコードします。$ echo <content_of_additional_ca> | base64 -d > disconnect-ca.crtエンコーディングされたルート CA 証明書を適切な場所にコピーします。
$ sudo cp ./disconnect-ca.crt /etc/pki/ca-trust/source/anchors/<mirror-registry>.crtクライアントプラットフォームで CA を信頼し、OpenShift Container Platform ミラーレジストリーにログインします。
$ sudo update-ca-trust enable && sudo systemctl daemon-reload && sudo systemctl restart / docker && docker login <mirror-registry>:5000 -u <username> -p <password>odo initイメージをミラーリングします。$ oc image mirror registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>ODO_BOOTSTRAPPER_IMAGE環境変数を設定してデフォルトのodo initイメージパスを上書きします。$ export ODO_BOOTSTRAPPER_IMAGE=<mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>
2.4.2.2.2. init イメージを MacOS のミラーレジストリーにプッシュする リンクのコピーリンクがクリップボードにコピーされました!
手順
base64を使用してミラーレジストリーのルート認証局 (CA) コンテンツをエンコードします。$ echo <content_of_additional_ca> | base64 -d > disconnect-ca.crtエンコーディングされたルート CA 証明書を適切な場所にコピーします。
- Docker UI を使用して Docker を再起動します。
以下のコマンドを実行します。
$ docker login <mirror-registry>:5000 -u <username> -p <password>
odo initイメージをミラーリングします。$ oc image mirror registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>ODO_BOOTSTRAPPER_IMAGE環境変数を設定してデフォルトのodo initイメージパスを上書きします。$ export ODO_BOOTSTRAPPER_IMAGE=<mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>
2.4.2.2.3. Windows のミラーレジストリーに init イメージをプッシュする リンクのコピーリンクがクリップボードにコピーされました!
手順
base64を使用してミラーレジストリーのルート認証局 (CA) コンテンツをエンコードします。PS C:\> echo <content_of_additional_ca> | base64 -d > disconnect-ca.crt管理者として、以下のコマンドを実行して、エンコーディングされたルート CA 証明書を適切な場所にコピーします。
PS C:\WINDOWS\system32> certutil -addstore -f "ROOT" disconnect-ca.crtクライアントプラットフォームで CA を信頼し、OpenShift Container Platform ミラーレジストリーにログインします。
- Docker UI を使用して Docker を再起動します。
以下のコマンドを実行します。
PS C:\WINDOWS\system32> docker login <mirror-registry>:5000 -u <username> -p <password>
odo initイメージをミラーリングします。PS C:\> oc image mirror registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>ODO_BOOTSTRAPPER_IMAGE環境変数を設定してデフォルトのodo initイメージパスを上書きします。PS C:\> $env:ODO_BOOTSTRAPPER_IMAGE="<mirror-registry>:5000/openshiftdo/odo-init-image-rhel7:<tag>"
2.4.2.3. odo init イメージを内部レジストリーに直接プッシュする リンクのコピーリンクがクリップボードにコピーされました!
クラスターでイメージを内部レジストリーに直接プッシュできる場合、以下のように odo init イメージをレジストリーにプッシュします。
2.4.2.3.1. init イメージを Linux 上で直接プッシュする リンクのコピーリンクがクリップボードにコピーされました!
手順
デフォルトのルートを有効にします。
$ oc patch configs.imageregistry.operator.openshift.io cluster -p '{"spec":{"defaultRoute":true}}' --type='merge' -n openshift-image-registryワイルドカードルート CA を取得します。
$ oc get secret router-certs-default -n openshift-ingress -o yaml apiVersion: v1 data: tls.crt: ************************** tls.key: ################## kind: Secret metadata: [...] type: kubernetes.io/tlsbase64を使用してミラーレジストリーのルート認証局 (CA) コンテンツをエンコードします。$ echo <tls.crt> | base64 -d > ca.crtクライアントプラットフォームで CA を信頼します。
$ sudo cp ca.crt /etc/pki/ca-trust/source/anchors/externalroute.crt && sudo update-ca-trust enable && sudo systemctl daemon-reload && sudo systemctl restart docker内部レジストリーにログインします。
$ oc get route -n openshift-image-registry NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD default-route <registry_path> image-registry <all> reencrypt None $ docker login <registry_path> -u kubeadmin -p $(oc whoami -t)odo initイメージをプッシュします。$ docker pull registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> $ docker tag registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <registry_path>/openshiftdo/odo-init-image-rhel7:<tag> $ docker push <registry_path>/openshiftdo/odo-init-image-rhel7:<tag>ODO_BOOTSTRAPPER_IMAGE環境変数を設定してデフォルトのodo initイメージパスを上書きします。$ export ODO_BOOTSTRAPPER_IMAGE=<registry_path>/openshiftdo/odo-init-image-rhel7:1.0.1
2.4.2.3.2. init イメージを MacOS 上で直接プッシュする リンクのコピーリンクがクリップボードにコピーされました!
手順
デフォルトのルートを有効にします。
$ oc patch configs.imageregistry.operator.openshift.io cluster -p '{"spec":{"defaultRoute":true}}' --type='merge' -n openshift-image-registryワイルドカードルート CA を取得します。
$ oc get secret router-certs-default -n openshift-ingress -o yaml apiVersion: v1 data: tls.crt: ************************** tls.key: ################## kind: Secret metadata: [...] type: kubernetes.io/tlsbase64を使用してミラーレジストリーのルート認証局 (CA) コンテンツをエンコードします。$ echo <tls.crt> | base64 -d > ca.crtクライアントプラットフォームで CA を信頼します。
$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt内部レジストリーにログインします。
$ oc get route -n openshift-image-registry NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD default-route <registry_path> image-registry <all> reencrypt None $ docker login <registry_path> -u kubeadmin -p $(oc whoami -t)odo initイメージをプッシュします。$ docker pull registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> $ docker tag registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <registry_path>/openshiftdo/odo-init-image-rhel7:<tag> $ docker push <registry_path>/openshiftdo/odo-init-image-rhel7:<tag>ODO_BOOTSTRAPPER_IMAGE環境変数を設定してデフォルトのodo initイメージパスを上書きします。$ export ODO_BOOTSTRAPPER_IMAGE=<registry_path>/openshiftdo/odo-init-image-rhel7:1.0.1
2.4.2.3.3. init イメージを Windows 上で直接プッシュする リンクのコピーリンクがクリップボードにコピーされました!
手順
デフォルトのルートを有効にします。
PS C:\> oc patch configs.imageregistry.operator.openshift.io cluster -p '{"spec":{"defaultRoute":true}}' --type='merge' -n openshift-image-registryワイルドカードルート CA を取得します。
PS C:\> oc get secret router-certs-default -n openshift-ingress -o yaml apiVersion: v1 data: tls.crt: ************************** tls.key: ################## kind: Secret metadata: [...] type: kubernetes.io/tlsbase64を使用してミラーレジストリーのルート認証局 (CA) コンテンツをエンコードします。PS C:\> echo <tls.crt> | base64 -d > ca.crt管理者として、以下のコマンドを実行して、クライアントプラットフォームの CA を信頼します。
PS C:\WINDOWS\system32> certutil -addstore -f "ROOT" ca.crt内部レジストリーにログインします。
PS C:\> oc get route -n openshift-image-registry NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD default-route <registry_path> image-registry <all> reencrypt None PS C:\> docker login <registry_path> -u kubeadmin -p $(oc whoami -t)odo initイメージをプッシュします。PS C:\> docker pull registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> PS C:\> docker tag registry.access.redhat.com/openshiftdo/odo-init-image-rhel7:<tag> <registry_path>/openshiftdo/odo-init-image-rhel7:<tag> PS C:\> docker push <registry_path>/openshiftdo/odo-init-image-rhel7:<tag>ODO_BOOTSTRAPPER_IMAGE環境変数を設定してデフォルトのodo initイメージパスを上書きします。PS C:\> $env:ODO_BOOTSTRAPPER_IMAGE="<registry_path>/openshiftdo/odo-init-image-rhel7:<tag>"
2.4.3. コンポーネントの作成および非接続クラスターへのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
ミラーリングされたレジストリーを持つクラスターに init イメージをプッシュした後に、アプリケーションでサポートされるビルダーイメージを oc ツールでミラーリングし、環境変数を使用してミラーレジストリーを上書きし、コンポーネントを作成する必要があります。
2.4.3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
クライアントオペレーティングシステムに
ocをインストールします。 -
odoをクライアントオペレーティングシステムにインストールします。 - 内部レジストリーまたはミラーレジストリーが設定された OpenShift Container Platform の制限付きクラスターへのアクセス。
-
odo initイメージをクラスターレジストリーにプッシュします。
2.4.3.2. サポートされるビルダーイメージのミラーリング リンクのコピーリンクがクリップボードにコピーされました!
Node.js の依存関係に npm パッケージを使用し、Java の依存関係に Maven パッケージを使用し、アプリケーションのランタイム環境を設定するには、ミラーレジストリーから適切なビルダーイメージをミラーリングする必要があります。
手順
必要なイメージタグがインポートされていないことを確認します。
$ oc describe is nodejs -n openshift Name: nodejs Namespace: openshift [...] 10 tagged from <mirror-registry>:<port>/rhoar-nodejs/nodejs-10 prefer registry pullthrough when referencing this tag Build and run Node.js 10 applications on RHEL 7. For more information about using this builder image, including OpenShift considerations, see https://github.com/nodeshift/centos7-s2i-nodejs. Tags: builder, nodejs, hidden Example Repo: https://github.com/sclorg/nodejs-ex.git ! error: Import failed (NotFound): dockerimage.image.openshift.io "<mirror-registry>:<port>/rhoar-nodejs/nodejs-10:latest" not found About an hour ago 10-SCL (latest) tagged from <mirror-registry>:<port>/rhscl/nodejs-10-rhel7 prefer registry pullthrough when referencing this tag Build and run Node.js 10 applications on RHEL 7. For more information about using this builder image, including OpenShift considerations, see https://github.com/nodeshift/centos7-s2i-nodejs. Tags: builder, nodejs Example Repo: https://github.com/sclorg/nodejs-ex.git ! error: Import failed (NotFound): dockerimage.image.openshift.io "<mirror-registry>:<port>/rhscl/nodejs-10-rhel7:latest" not found About an hour ago [...]サポートされるイメージタグをプライベートレジストリーに対してミラーリングします。
$ oc image mirror registry.access.redhat.com/rhscl/nodejs-10-rhel7:<tag> <private_registry>/rhscl/nodejs-10-rhel7:<tag>イメージをインポートします。
$ oc tag <mirror-registry>:<port>/rhscl/nodejs-10-rhel7:<tag> nodejs-10-rhel7:latest --scheduledイメージを定期的に再インポートする必要があります。
--scheduledフラグは、イメージの自動再インポートを有効にします。指定されたタグを持つイメージがインポートされていることを確認します。
$ oc describe is nodejs -n openshift Name: nodejs [...] 10-SCL (latest) tagged from <mirror-registry>:<port>/rhscl/nodejs-10-rhel7 prefer registry pullthrough when referencing this tag Build and run Node.js 10 applications on RHEL 7. For more information about using this builder image, including OpenShift considerations, see https://github.com/nodeshift/centos7-s2i-nodejs. Tags: builder, nodejs Example Repo: https://github.com/sclorg/nodejs-ex.git * <mirror-registry>:<port>/rhscl/nodejs-10-rhel7@sha256:d669ecbc11ac88293de50219dae8619832c6a0f5b04883b480e073590fab7c54 3 minutes ago [...]
2.4.3.3. ミラーレジストリーの上書き リンクのコピーリンクがクリップボードにコピーされました!
Node.js の依存関係用の npm パッケージおよび Java の依存関係用の Maven パッケージをプライベートミラーレジストリーからダウンロードするには、クラスター上にミラー npm または Maven レジストリーを作成し、設定する必要があります。その後、既存のコンポーネントで、または新規コンポーネントの作成時にミラーレジストリーを上書きできます。
手順
既存のコンポーネントでミラーレジストリーを上書きするには、以下を実行します。
$ odo config set --env NPM_MIRROR=<npm_mirror_registry>コンポーネントの作成時にミラーレジストリーを上書きするには、以下を実行します。
$ odo component create nodejs --env NPM_MIRROR=<npm_mirror_registry>
2.4.3.4. odo を使用した Node.js アプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
Node.js コンポーネントを作成するには、Node.js アプリケーションをダウンロードし、odoでソースコードをクラスターにプッシュします。
手順
現在のディレクトリーをアプリケーションのあるディレクトリーに切り替えます。
$ cd <directory name>Node.js タイプのコンポーネントをアプリケーションに追加します。
$ odo create nodejs注記デフォルトで、最新イメージが使用されます。また、
odo create openshift/nodejs:8を使用してイメージのバージョンを明示的に指定できます。初期ソースコードをコンポーネントにプッシュします。
$ odo pushこれで、コンポーネントは OpenShift Container Platform にデプロイされます。
URL を作成し、以下のようにローカル設定ファイルにエントリーを追加します。
$ odo url create --port 8080変更をプッシュします。これにより、URL がクラスターに作成されます。
$ odo pushコンポーネントに必要な URL を確認するために URL を一覧表示します。
$ odo url list生成された URL を使用してデプロイされたアプリケーションを表示します。
$ curl <URL>