単一のオペレータ・インスタンスは、構成方法に応じて複数のドメインを複数のネームスペースで管理できます。 Kubernetesクラスタは複数のオペレータをホストできますが、ネームスペースごとに1つしかホストできません。
オペレータをインストールする前に、次の前提条件要件が満たされていることを確認してください:
「オペレータの前提条件」を確認して、Kubernetesクラスタがオペレータをサポートしていることを確認します。
サポートされている環境の中には、オペレータに固有の追加のヘルプやサンプルや、制限、特別なチューニング要件、特別なライセンス要件、制限の対象となるものがあることに注意してください。 詳細は、「サポートされている環境」を参照してください。
環境にKubernetesが設定されていない場合は、「Kubernetesの設定」を参照してください。
インストールされていない場合は、Helmをインストールします。 オペレータをインストールするには、KubernetesクラスタにHelmをインストールする必要があります。 オペレータは、Helmを使用して必要なリソースを作成し、そのオペレータをKubernetesクラスタにデプロイします。
すでにHelmが使用可能かどうかを確認するには、helm version
コマンドを試してください。
Helmのインストールの詳細は、「GitHub Helmリポジトリ」を参照してください。
オプションで、Istioを有効にします。
オペレータをインストールする前に、オペレータHelmチャートが使用可能である必要があります。 オペレータのHelmチャートには次のものが含まれます:
チャート・リポジトリを使用して、オペレータのHelmチャートへのアクセスを設定できます。
https://oracle.github.io/weblogic-kubernetes-operator/charts
にあるオペレータHelmチャート・リポジトリまたはユーザーが制御するカスタム・リポジトリを使用します。
https://oracle.github.io/weblogic-kubernetes-operator/charts
リポジトリにアクセスできるようにHelmインストールを設定し、リポジトリ参照にweblogic-operator
という名前を付けるには、次のコマンドhelm repo add <helm-chart-repo-name> <helm-chart-repo-url>
を使用します :
$ helm repo add weblogic-operator https://oracle.github.io/weblogic-kubernetes-operator/charts --force-update
Helmチャート・リポジトリが正しく追加されたか、既存のリポジトリをリストするには:
$ helm repo list
NAME URL
weblogic-operator https://oracle.github.io/weblogic-kubernetes-operator/charts
たとえば、リポジトリにweblogic-operator
という名前を付けた場合、チャートのロケーションを指定するときにHelmコマンドでweblogic-operator/weblogic-operator
を使用するだけです。
Helmチャート・リポジトリからインストールできるオペレータのバージョンをリストするには:
$ helm search repo weblogic-operator/weblogic-operator --versions
helm pull
およびhelm install
コマンドを指定したHelmチャートおよびオペレータの指定したバージョンでは、--version <value>
オプションを使用して必要なバージョンを選択し、latest
値がデフォルトになります。
helm show
コマンドを使用して、オペレータHelmチャートでサポートされる構成値およびデフォルト値を確認できます。
$ helm show values weblogic-operator/weblogic-operator
または、./kubernetes/charts/weblogic-operator/values.yaml
ファイルのオペレータ・ソースで、ほとんどの構成値とそのデフォルトを表示できます。
使用可能な構成値は、オペレータ構成リファレンスの「Helmのオペレータ構成値」セクションでカテゴリ別に説明します。
Helmコマンドの詳細は、「有用なHelm操作」を参照してください。
各オペレータには、ネームスペースの実行およびネームスペース内のKubernetesサービス・アカウントが必要です。 サービス・アカウントは、オペレータのセキュリティ権限をホストするために使用されます。 特定のネームスペースで実行できるオペレータは1つのみです。
オペレータの管理とモニタリングを簡素化するために、Oracleでは次のことを推奨しています:
default
サービス・アカウントに依存するかわりに、各オペレータ専用のサービス・アカウントを作成します。次に、それぞれの例を示します:
$ kubectl create namespace sample-weblogic-operator-ns
$ kubectl create serviceaccount -n sample-weblogic-operator-ns sample-weblogic-operator-sa
オペレータのインストール・ステップでは、Helmインストール・コマンドラインで--namespace MY-NAMESPACE
オペレータのHelmチャート構成設定を使用してネームスペースを指定します。 指定しない場合、デフォルトでdefault
に設定されます。 ネームスペースがまだ存在しない場合は、Helmによって自動的に作成されます(Kubernetesによって、新しいネームスペースにdefault
サービス・アカウントが作成されます)。 後でオペレータをアンインストールした場合、Helmは指定されたネームスペースを削除しません。 これらは、Helmの標準的な動作です。
同様に、Helm installコマンドラインでserviceAccount=MY-SERVICE-ACCOUNT
オペレータのHelmチャート構成設定を指定して、オペレータが使用するオペレータのネームスペースにサービス・アカウントを指定します。 指定しない場合、デフォルトでdefault
に設定されます。 オペレータをアンインストールしても、このサービス・アカウントは自動的に削除されません。
オペレータ・イメージは、Kubernetesクラスタのすべてのノードで使用可能である必要があります。
オペレータの様々なサポートされているバージョンの本番対応のオペレータ・イメージは、オペレータ「GitHubコンテナ・レジストリ」に公開されています。 オペレータのGitHubコンテナ・レジストリ・イメージは、ghcr.io/oracle/weblogic-kubernetes-operator:N.N.N
のようなイメージ名を使用して直接参照できます。N.N.N
はオペレータのバージョン、ghcr.io
はGitHubコンテナ・レジストリのDNS名です。 オプションで、独自のオペレータ・イメージをビルドすることもできます。「開発者ガイド」を参照してください。
各Helmチャート・バージョンは、一致するバージョンのオペレータ・イメージを使用してデフォルト設定されます。 オペレータのインストール時に使用されるデフォルトのイメージ名を検索するには、「オペレータのHelmチャートを調べる」を参照し、image
値を検索します。 値は、ghcr.io/oracle/weblogic-kubernetes-operator:N.N.N
のようになります。
ほとんどの場合、Kubernetesは必要に応じて、クラスタ・ノードのマシンにオペレータ・イメージを自動的にダウンロード(プル)します。
特定のマシンのコンテナ・イメージ・プールにオペレータ・イメージを手動で配置するか、イメージへのアクセスをテストする場合は、docker pull
をコールします。 例えば:
$ docker pull ghcr.io/oracle/weblogic-kubernetes-operator:4.2.13
使用しているイメージ・レジストリがイメージ・プル資格証明を必要とするプライベート・レジストリである場合、docker pull
をコールする前にdocker login my-registry-dns-name.com
をコールする必要があります。
カスタム・オペレータ・イメージ名またはイメージ・プル・シークレットを指定する場合があります。 たとえば、「デフォルト・オペレータ・イメージ名」とは異なるバージョンをデプロイする場合や、独自のプライベート・イメージ・レジストリにオペレータ・イメージを配置する場合があります。
プライベート・イメージ・レジストリでは、名前の最初の部分がレジストリのDNSのロケーションであり、残りの部分はレジストリ内のイメージのロケーションを指すオペレータに、カスタム・イメージ名を使用する必要があります。 プライベート・イメージ・レジストリでは、セキュリティ資格証明を提供するためにイメージ・プル・レジストリ・シークレットが必要になる場合もあります。
image=
オペレータのHelmチャート構成設定を指定します(例:--set "image=my-image-registry.io/my-operator-image:1.0"
)。imagePullSecrets
の指定」の説明に従って、オペレータをデプロイするネームスペースにdocker-registry
タイプのKubernetesシークレットを作成します。imagePullSecrets
オペレータのHelmチャート構成設定を使用します。 例については、imagePullSecretsを参照してください。 オペレータのインストール時に、kubernetesPlatform
Helmチャート構成設定に正しい値を設定することが重要です。
特に、オペレータ・バージョン3.3.2以降では、OpenShift
Kubernetesプラットフォームを使用する場合は、オペレータkubernetesPlatform
Helmチャート設定を値OpenShift
で指定します(例: --set "kubernetesPlatform=OpenShift"
)。 これは、OpenShiftセキュリティ要件に対応します。
詳細は、kubernetesPlatformを参照してください。
オペレータのデプロイには、一般的に使用される3つのセキュリティ計画があります:
オペレータのセキュリティ関連リソースの詳細な説明については、オペレータのロールに基づくアクセス制御(RBAC)の要件(「こちら」を参照)を参照してください。
オペレータにネームスペースへのアクセス権限を付与する場合は、ほとんどのユースケースで、オペレータのインストール時にenableClusterRoleBinding
オペレータのHelmチャート構成設定をtrue
に設定します。
たとえば、--set "enableClusterRoleBinding=true"
です。 この設定のデフォルトはtrue
です。
最も一般的なセキュリティ戦略です。
オペレータのHelm enableClusterRoleBinding
構成値がfalse
の場合、オペレータは複数のネームスペースを管理できますが、オペレータのHelmリリースをアップグレードするまで、実行中のオペレータは、そのネームスペース選択基準に一致する新規に追加されたネームスペースを管理する権限を持ちません。 「オペレータにネームスペースを管理する権限があることの確認」を参照してください。
ノート: enableClusterRoleBinding
がtrue
に設定されておらず、CRDのインストールにはクラスタ・ロール・バインディング権限が必要であるため、ドメインおよびクラスタCRDを手動でインストールする必要があります。 「ドメインおよびクラスタのカスタム・リソース定義(CRD)を手動でインストールする方法」を参照してください。
ローカル・ネームスペースのリソースのみにアクセスできるようにオペレータを制限する場合は、次を実行します:
Dedicated
ネームスペース選択戦略を選択します。 「ドメイン・ネームスペースの選択方法の選択」を参照してください。 operatorOnly=true
を使用したwebフック・デプロイメントのインストールを省略します。 これは、webフック・デプロイメントでドメインCRDを変更してスキーマ変換Webフック・エンドポイントを登録するか、検証Webフック・エンドポイントを登録する必要があるためです。これらのエンドポイントにはクラスタ・レベルのリソースが含まれます。 enableClusterRoleBinding
がtrue
に設定されておらず、CRDをインストールするにはクラスタ・ロール・バインディング権限が必要であるため、ドメインおよびクラスタCRDを手動でインストールする必要があります。 「ドメインおよびクラスタのカスタム・リソース定義(CRD)を手動でインストールする方法」を参照してください。 これは、OpenShiftプラットフォームで発生する場合や、Dedicated
ネームスペース戦略でオペレータを実行する場合など、オペレータがクラスタ・スコープの権限を持てない環境で必要になる場合があります。
サードパーティまたはインフラストラクチャ・チームのいずれかがクラスタの管理を担当するため、多くの顧客にはKubernetesクラスタに対する管理権限がありません。 このような場合、アプリケーション・チームなどの顧客は、1つのネームスペースにのみ権限を持ちます。 前述のように、オペレータがKubernetesクラスタ・レベルでこれらのCRDドキュメントのライフサイクルを管理するための十分な権限を持っていない場合は、CRDドキュメントを事前にインストールする必要があります。 したがって、サード・パーティまたはインフラストラクチャ・チームは、アプリケーション・チームがオペレータをインストールする前に、CRDドキュメントのkubectl create
を完了する必要があります。
少なくとも、インフラストラクチャ・チームはCRDドキュメントをインストールし、オペレータのネームスペースを作成する必要があります:
$ kubectl create -f https://raw.githubusercontent.com/oracle/weblogic-kubernetes-operator/refs/heads/release/4.2/kubernetes/crd/domain-crd.yaml
$ kubectl create -f https://raw.githubusercontent.com/oracle/weblogic-kubernetes-operator/refs/heads/release/4.2/kubernetes/crd/cluster-crd.yaml
$ kubectl create ns weblogic-operator
これにより、アプリケーション・チームは、webフックやその他のクラスタ・レベルのリソースを使用せずに、ネームスペース専用バージョンのオペレータをインストールできます:
helm repo add weblogic-operator https://oracle.github.io/weblogic-kubernetes-operator/charts
helm install weblogic-operator weblogic-operator/weblogic-operator --namespace weblogic-operator --set enableClusterRoleBinding=false --set domainNamespaceSelectionStrategy=Dedicated --set operatorOnly=true
このオプションの組合せではwebフック・デプロイメントのインストールが省略されるため、お客様はドメイン・リソースにv9
スキーマ・バージョンを使用し、3.xバージョンのオペレータからv8
リソースを手動で更新する必要があります。
オペレータをインストールする前に、domainNamespaceSelectionStrategy
Helmチャート構成設定とその関連設定(ある場合)の値を選択します。 「ドメイン・ネームスペースのセクション戦略の選択」を参照してください。
「セキュリティ方針の選択」を参照してください。
ネームスペース管理の一般的な問題については、「よくある間違いと解決策」を参照してください。 参照方法については、「WebLogicドメイン管理」を参照してください。
オペレータにはインストールにHelmが必要です。Helmでは、インストールされた各オペレータにリリース名を割り当てる必要があります。 Helmリリース名は、異なるネームスペースにデプロイされている場合は同じにできますが、特定のネームスペース内で一意である必要があります。
一般的なHelmリリース名はweblogic-operator
です。 オペレータのサンプルとドキュメントでは、多くの場合sample-weblogic-operator
が使用されます。
「構成リファレンス」の設定で、特定のユース・ケースに適用される可能性がある、あまり使用されていない拡張または微調整のHelmチャート構成オプションを確認します。 これには、ノード・セレクタ、ノード・アフィニティ、Elastic Stack統合、オペレータREST API、オペレータ・ポッド・ラベルの設定、オペレータ・ポッド注釈の設定、およびIstioが含まれます。
該当する場合は、次の特殊なユースケースを確認してください。
上位レベルでは、helm pull
を使用してリリースされたバージョンのHelmチャートをダウンロードし、インターネット・アクセスなしでマシンに移動すると、helm install
を実行してオペレータをインストールできます。
ステップは次のとおりです。
$ helm pull weblogic-operator --repo https://oracle.github.io/weblogic-kubernetes-operator/charts --destination .
helm pull
およびhelm install
が指定されたHelmチャートの指定したバージョンの場合、--version <value>
オプションを使用して必要なバージョンを選択し、latest
値がデフォルトになります。 Helmチャート・リポジトリからインストールできるオペレータのバージョンをリストするには、次を実行します:
$ helm repo add weblogic-operator https://oracle.github.io/weblogic-kubernetes-operator/charts --force-update
$ helm search repo weblogic-operator/weblogic-operator --versions
weblogic-operator-<version>.tgz
ファイルを移動します。$ tar zxf weblogic-operator-<version>.tgz
を実行します。 これにより、Helmチャート・ファイルがローカル・ディレクトリ./weblogic-operator
に配置されます。 $ kubectl create namespace weblogic-operator
を実行します。
オペレータの専用ネームスペースの作成は、最も一般的な方法ですが、必ずしも正しいか十分なものではありません。 詳細については、ステップ3から始まる前提条件のステップを参照してください。 「オペレータのHelmチャートを調べる」。 必ず、ステップ10で終わる、前述のすべての前提条件ステップに従ってください。 詳細なオペレータ構成オプションに注意してください。
$ helm install weblogic-operator ./weblogic-operator --namespace weblogic-operator
を実行します。ドメインおよびクラスタ・リソース・タイプは、Kubernetes CustomResourceDefinition (CRD)リソースによって定義されます。 ドメインおよびクラスタCRDは、KubernetesにWebLogic関連リソースのスキーマを提供し、これら2つのCRDは、オペレータをホストする各Kubernetesクラスタにインストールする必要があります。 同じKubernetesクラスタに複数のオペレータをインストールすると、それらはすべて同じCRDを共有します。
ドメインおよびクラスタCRDを手動でインストールする必要があるのはいつですか。
通常、オペレータのwebフック・デプロイメントは、最初に起動したときに自動的にCRDをインストールします。 ただし、webフックにCRDをインストールするための十分な権限がない場合は、提供されたYAMLファイルを使用して、事前にCRDドキュメントを手動でインストールすることを選択する必要があります。 CRDを手動で事前にインストールすると、CRDドキュメントまたはその他のクラスタ・スコープのリソースにアクセスまたは更新するための権限を(Kubernetesロールおよびバインディングを介して)付与せずに、オペレータを実行できます。 これは、Dedicated
ネームスペース戦略でオペレータを実行する場合など、オペレータがクラスタ・スコープのセキュリティ権限を持てない環境で必要になる場合があります。 「セキュリティ方針の選択」を参照してください。
ドメインおよびクラスタCRDを手動でインストールする方法。
CRDを手動でインストールするには、次のステップを実行します:
$ kubectl create -f https://raw.githubusercontent.com/oracle/weblogic-kubernetes-operator/refs/heads/release/4.2/kubernetes/crd/domain-crd.yaml
$ kubectl create -f https://raw.githubusercontent.com/oracle/weblogic-kubernetes-operator/refs/heads/release/4.2/kubernetes/crd/cluster-crd.yaml
ドメインおよびクラスタCRDがインストールされているかどうかを確認する方法。
ドメインCRDが正しくインストールされていることを確認するには、次を使用します:
$ kubectl get crd domains.weblogic.oracle
または、次のようにコールします:
$ kubectl explain domain.spec
kubectl explain
コールは成功し、ドメインCRDに定義されているドメイン・リソースのdomain.spec
属性をリストする必要があります。
同様に、次のコマンドを使用して、クラスタCRDが正しくインストールされていることを確認できます:
$ kubectl get crd clusters.weblogic.oracle
または、次のようにコールします:
$ kubectl explain cluster.spec
kubectl explain
コールは成功し、クラスタCRDに定義されているクラスタ・リソースのcluster.spec
属性をリストする必要があります。