オペレータのデプロイメントは、Kubernetesネームスペースを管理するように構成する必要があり、WebLogic Serverインスタンスをオペレータによって正常に起動する前に、多数のKubernetesリソースがネームスペースに存在する必要があります。 これらのKubernetesリソースは、オペレータのHelmチャートのインストールの一部として作成されるか、オペレータによって作成されます。
オペレータは、Kubernetesクラスタのすべてのネームスペース内のすべてのWebLogicドメインを管理したり、ネームスペースの特定のサブセット内のドメインのみを管理したり、オペレータと同じネームスペースにあるドメインのみを管理できます。 オペレータの実行中にオペレータ・デプロイメントが管理するネームスペースを変更できます。 オペレータがまだ実行されている間に、オペレータが管理するネームスペースを作成して準備することもできます。
Kubernetesクラスタには複数のオペレータが存在する場合があり、その場合は、これらのオペレータによって管理されるネームスペースが重複しないようにする必要があります。 ネームスペースは最大で1つのオペレータで管理できます。
オペレータは、自身のネームスペースを含む複数のネームスペースのドメイン・リソースを管理できますが、2つのオペレータは、同じネームスペースにあるドメインを管理できません。 オペレータのインストールHelmチャートdomainNamespaceSelectionStrategy構成設定は、オペレータが管理するネームスペースを制御します。
戦略 | 説明 | 例 |
---|---|---|
LabelSelector |
これはデフォルトです。 オペレータは、Helmチャート構成のdomainNamespaceLabelSelector 属性で定義されたラベル・セレクタに一致するKubernetesラベルを使用してネームスペースを管理します(デフォルトはweblogic-operator=enabled です)。 |
Helmチャートのデフォルト値では、このラベルの値がenabled の場合、オペレータはweblogic-operator というラベルを持つネームスペースを管理します。 コマンドkubectl label namespace sample-domain1-ns weblogic-operator=enabled を使用して、ネームスペースsample-domain1-ns にラベルを付けることができます。 domainNamespaceLabelSelector を使用して、オペレータ・インストールに異なるラベル・セレクタを定義できます(--set "domainNamespaceLabelSelector=environment\=prod" など)。 構文の詳細は、『構成リファレンス』のdomainNamespaceLabelSelectorを参照してください。 |
RegExp |
オペレータは、domainNamespaceRegExp Helmチャート構成属性で設定された正規表現と一致するネームスペースを管理します。 |
オペレータで文字列prod で始まるネームスペースを管理する場合は、オペレータHelm構成設定に--set "domainNamespaceSelectionStrategy=RegExp" を使用し、--set "domainNamespaceRegExp=^prod" を使用してdomainNamespaceRegExp Helmチャート構成属性を設定します。 |
Dedicated |
オペレータは、オペレータと同じネームスペースにあるドメインのみを管理します。 | オペレータがネームスペースmy-operator-ns にデプロイされ、Helmチャート構成で--set "domainNamespaceSelectionStrategy=Dedicated" を使用してインストールされた場合、オペレータはmy-operator-ns ネームスペース内のドメインのみを管理します。 |
List |
このオペレータは、domainNamespaces オペレータ・インストールのHelmチャート構成値(デフォルトは{default} )に含まれるネームスペースを管理します。 |
ネームスペースdefault およびns1 を管理する場合は、オペレータがインストールするHelmチャート構成で、--set "domainNamespaceSelectionStrategy=List" および--set "domainNamespaces={default,ns1}" を使用します。 |
各設定に関する詳細な参照情報については、「WebLogicドメイン管理」を参照してください。
NOTES:
FAILED
Helmリリースがデプロイされ、Error: release op2 failed: rolebindings.rbac.authorization.k8s.io "weblogic-operator-rolebinding-namespace" already exists
のようなエラーが生成されます。 オペレータのHelm enableClusterRoleBinding
構成値がtrue
の場合、オペレータにはネームスペースを管理する権限があり、オペレータが最後にインストールまたはアップグレードされた後に追加されたネームスペースを自動的に管理できます。
オペレータのHelm enableClusterRoleBinding
構成値がfalse
の場合:
オペレータHelmチャートでは、helm install
またはhelm upgrade
のコール中にドメイン・ネームスペースの選択基準に一致する各ネームスペースにRoleBindingsが作成されます。 これらのRoleBindingsは、オペレータのサービス・アカウントにネームスペースで必要な権限を付与します。
Helmチャートでは、チャートのインストールまたはアップグレード時に、オペレータのドメイン・ネームスペース選択基準に一致するネームスペースにのみ、これらのRoleBindingsが作成されます。
List
、LabelSelector
またはRegExp
セレクタに一致するネームスペースを後で作成した場合、Helmリリースをアップグレードするまで、オペレータにはこれらのネームスペースでの権限があり「ません」。 すでにインストールされているオペレータのHelmリリースでhelm upgrade
を実行して、この問題を解決できます。
たとえば、オペレータ・リリース名がweblogic-operator
の場合:
$ helm upgrade weblogic-operator/weblogic-operator --reuse-values
ノート: helm upgrade
を実行して削除および再作成されたネームスペースを再初期化した後も問題が発生する場合は、オペレータの再起動を強制を試すことができます。
オペレータのセキュリティ関連リソースの詳細な説明については、「こちら」に記載されているオペレータのロールベースのアクセス制御(RBAC)の要件を参照してください。
3.1.0より前のバージョンでは、オペレータはリストを介してのみ管理するネームスペースの指定をサポートしていました。 オペレータでは、ネームスペースのリスト、ラベル・セレクタまたはネームスペース名に一致する正規表現がサポートされるようになりました。
ネームスペース・リストを使用する場合
リストでネームスペースを指定するオペレータの場合、helm get values
コマンドを使用してネームスペースのリストを取得できます。 たとえば、次のコマンドでは、オペレータ・リリースweblogic-operator
のすべての値が表示されます。domainNamespaces
リストには、default
およびns1
が含まれます:
$ helm get values weblogic-operator
domainNamespaces:
- default
- ns1
elasticSearchHost: elasticsearch.default.svc.cluster.local
elasticSearchPort: 9200
elkIntegrationEnabled: false
externalDebugHttpPort: 30999
externalRestEnabled: false
externalRestHttpsPort: 31001
image: ghcr.io/oracle/weblogic-kubernetes-operator:4.2.8
imagePullPolicy: IfNotPresent
internalDebugHttpPort: 30999
javaLoggingLevel: INFO
logStashImage: logstash:6.6.0
remoteDebugNodePortEnabled: false
serviceAccount: default
suspendOnDebugStartup: false
オペレータのリリース名がわからない場合は、helm list
を使用して、指定したネームスペースまたはすべてのネームスペースのすべてのリリースをリストできます:
$ helm list --namespace <namespace>
$ helm list --all-namespaces
ラベル・セレクタを使用する場合
セレクタを使用してネームスペースを選択するオペレータの場合は、そのセレクタを使用してネームスペースを一覧表示します:
$ kubectl get ns --selector="weblogic-operator=enabled"
すべてのネームスペースのラベルは、次のようにコールすることで確認できます:
$ kubectl get ns --show-labels
正規表現一致を使用する場合
正規表現に一致する名前を持つネームスペースを選択するオペレータに対しては、kubectl
と、grep
などの正規表現を処理できる任意のコマンドライン・ツールの組合せを使用できます:
$ kubectl get ns -o go-template='{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | grep "^weblogic"
この項では、実行中のオペレータによって管理されるネームスペースを追加、削除または再作成するステップについて説明します。
実行中のオペレータによって管理されるネームスペースを追加するステップを次に示します。
ネームスペース・リストを使用する場合
オペレータがネームスペースのリストを管理するように構成されている場合に、オペレータで追加のネームスペースを管理するには、オペレータのdomainNamespaces
リストにネームスペースを追加する必要があります。 このネームスペースは、たとえばkubectl create
コマンドを使用して、すでに存在している必要があります。
domainNamespaces
リストにネームスペースを追加すると、オペレータは必要なKubernetesリソースを初期化して、そのネームスペース内のWebLogic Serverインスタンスを管理できるようになります。
オペレータがdefault
ネームスペースを管理している場合、次の例のHelmコマンドは、ネームスペースns1
をdomainNamespaces
リストに追加します(weblogic-operator
はオペレータのリリース名です):
$ helm upgrade \
weblogic-operator/weblogic-operator \
--reuse-values \
--set "domainNamespaces={default,ns1}" \
--wait
必要なconfigmap
リソースの存在を確認することで、オペレータがネームスペースを初期化したことを確認できます。
$ kubetctl get cm -n <namespace>
たとえば、次の例は、ドメインconfigmap
リソースがネームスペースns1
に存在することを示しています。
$ kubectl get cm -n ns1
NAME DATA AGE
weblogic-scripts-cm 14 12m
ラベル・セレクタまたは正規表現を使用する場合
ラベル・セレクタまたは正規表現を使用して管理対象ネームスペースを選択するように構成されたオペレータの場合、適切なラベルまたは式に一致する名前を持つネームスペースをそれぞれ作成する必要があります。
オペレータのHelm enableClusterRoleBinding
構成値がfalse
の場合、オペレータのHelmリリースをアップグレードするまで、実行中のオペレータには、新しく追加されたネームスペースを管理する権限がありません。 「オペレータにネームスペースを管理する権限があることの確認」を参照してください。
実行中のオペレータによって管理されるネームスペースを削除するステップは、次のとおりです。
ネームスペース・リストを使用する場合
オペレータがネームスペースのリストを管理するように構成されており、オペレータによってネームスペースを管理する必要がなくなった場合は、次のことを行う必要があります:
domainNamespaces
リストからネームスペースを削除します。オペレータがdefault
およびns1
ネームスペースを実行および管理している間に、次のHelmコマンドを実行すると、ネームスペースns1
がdomainNamespaces
リストから削除されます(weblogic-operator
はオペレータのリリース名です):
$ helm upgrade \
weblogic-operator/weblogic-operator \
--reuse-values \
--set "domainNamespaces={default}" \
--wait
ラベル・セレクタまたは正規表現を使用する場合
ラベル・セレクタまたは正規表現を使用して管理対象ネームスペースを選択するように構成されたオペレータの場合、ネームスペースを削除する必要があります。 ラベル・セレクタ・オプションでは、ネームスペースがセレクタと一致しなくなるようにネームスペースのラベルを調整することもできます。
次に、実行中のオペレータによって管理される、以前に削除されたネームスペースを再作成するステップを示します。
ネームスペース・リストを使用する場合
ネームスペース(およびその中のリソース)を削除してから再作成する場合:
kubectl create
コマンドを使用して、ネームスペースを戻し(再作成)します。helm upgrade
コマンド「以前」を使用して、ネームスペースをdomainNamespaces
リストに追加します。ネームスペースの準備が整う前にドメイン・カスタム・リソースが作成された場合、イントロスペクタ・ジョブ・ポッドの説明を確認すると、次のような警告とともに起動に失敗することがあります。 domain1
は、次の出力例のドメインの名前であることに注意してください。
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 1m default-scheduler Successfully assigned domain1-introspector-bz6rw to slc16ffk
Normal SuccessfulMountVolume 1m kubelet, slc16ffk MountVolume.SetUp succeeded for volume "weblogic-credentials-volume"
Normal SuccessfulMountVolume 1m kubelet, slc16ffk MountVolume.SetUp succeeded for volume "default-token-jzblm"
Warning FailedMount 27s (x8 over 1m) kubelet, slc16ffk MountVolume.SetUp failed for volume "weblogic-scripts-cm-volume" : configmaps "weblogic-scripts-cm" not found
helm upgrade
を実行して削除および再作成されたネームスペースを再初期化した後も問題が発生する場合は、「オペレータの再起動を強制」を試すことができます。
ラベル・セレクタまたは正規表現を使用する場合
オペレータのHelm enableClusterRoleBinding
構成値がfalse
の場合、オペレータのHelmリリースをアップグレードするまで、新しく再作成されたネームスペースを管理する権限があり「ません」。 「オペレータにネームスペースを管理する権限があることの確認」を参照してください。