ほとんどのオペレータ・サンプルでは、Kubernetesクラスタに1つのワーカー・ノードがあり、そのノードに必要なイメージは、そのノード上で作成されているか、レジストリから外部(docker pull
を使用して)ノードにプルされていることが想定されています。 これは、ほとんどのデモンストレーションの目的で適切であり、この前提が正しい場合は、Kubernetesがイメージにアクセスできるようにするための追加のステップは必要ありません。 それ以外の場合は、通常、Kubernetesクラスタがドメイン・イメージにアクセスできるように、追加のステップが必要です。
たとえば、Kubernetesクラスタの本番デプロイメントでは、通常、リモートで複数のワーカー・ノードを持ち、認証が必要な中央リポジトリにドメイン・イメージを格納します。
このようなデプロイメントにドメイン・イメージを提供する場合の2つの一般的なシナリオを次に示します:
オプション1: イメージを中央レジストリに格納し、各ドメイン・リソースにイメージ・プル・シークレットを設定
オプション2: イメージを中央レジストリに格納し、各ドメイン・ネームスペースにイメージ・プル・シークレットを使用してKubernetesサービス・アカウントを設定
最もよく使用されるオプションは、イメージを中央レジストリに格納し、ドメイン・リソースのイメージ・プル・シークレットを設定することです:
レジストリ資格証明を含むKubernetes docker-registry
シークレットは、イメージを参照するdomain.spec.image
属性を持つドメイン・リソースと同じネームスペースに作成する必要があります。 たとえば、OCR資格証明を使用してシークレットを作成するには:
$ kubectl create secret docker-registry SECRET_NAME \
-n NAMESPACE_WHERE_YOU_DEPLOY_DOMAINS \
--docker-server=container-registry.oracle.com \
--docker-username=YOUR_USERNAME \
--docker-password=YOUR_PASSWORD \
--docker-email=YOUR_EMAIL
シークレットの名前は、domain.spec.imagePullSecrets
フィールドを使用してこれらのドメイン・リソースに追加する必要があります。 例えば:
...
spec:
...
imagePullSecrets:
- name: SECRET_NAME
...
Oracle Container Registryを使用している場合は、webインタフェースを使用して、デプロイするOracleソフトウェア・イメージのOracle Standard用語および制限を受け入れる必要があります。 これは、特定のイメージに対して1回のみ実行する必要があります。 「Oracle Container Registryからのイメージの取得」を参照してください。
レジストリにアクセスするためのKubernetesシークレットの作成の詳細は、Kubernetesのドキュメント「プライベート・レジストリからイメージをプル」を参照してください。
プライベート・レジストリに格納されているイメージにアクセスするオプションは、イメージ・プル・シークレットのセットを使用してWebLogicドメインを実行しているネームスペースにKubernetes ServiceAccount
を設定することで、作成される各Domain
リソースに対してimagePullSecrets
を設定する必要がなくなります(各リソース・インスタンスは、オペレータが管理しているWebLogicドメインを表すため):
「オプション1」に示すように、Kubernetes docker-registry
シークレットを作成します。
このイメージ・プル・シークレットを含めるように、ドメイン・リソースと同じネームスペースにあるServiceAccount
を変更します:
$ kubectl patch serviceaccount default -n domain1-ns \
-p '{"imagePullSecrets": [{"name": "my-registry-pull-secret"}]}'
このパッチ・コマンドは、イメージ・プル・シークレットの現在のリスト(存在する場合)を完全に置き換えることに注意してください。 複数のシークレットを含めるには、次の形式を使用: -p '{"imagePullSecrets": [{"name": "my-registry-pull-secret"}, {"name": "my-registry-pull-secret2"}]}'
。
レジストリにアクセスするためのKubernetes ServiceAccount
の更新の詳細は、Kubernetesのドキュメント「ポッドのサービス・アカウントの構成」を参照してください。