機械翻訳について

ネームスペース管理

目次

概要

オペレータのデプロイメントは、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:

  • セキュリティ計画によって、選択する必要があるネームスペース計画が決定される場合があります。「セキュリティ方針の選択」を参照してください。
  • 前述のとおり、2つのオペレータは同じネームスペースにあるドメインを管理できません。 2つのオペレータが同じネームスペースを管理するように構成されている場合、その動作は未定義ですが、2番目のオペレータのインストールによって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が作成されます。

  • ListLabelSelectorまたは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"

実行中のオペレータのネームスペースの変更

この項では、実行中のオペレータによって管理されるネームスペースを追加、削除または再作成するステップについて説明します。

実行中のオペレータへのKubernetesネームスペースの追加

実行中のオペレータによって管理されるネームスペースを追加するステップを次に示します。

ネームスペース・リストを使用する場合

オペレータがネームスペースのリストを管理するように構成されている場合に、オペレータで追加のネームスペースを管理するには、オペレータのdomainNamespacesリストにネームスペースを追加する必要があります。 このネームスペースは、たとえばkubectl createコマンドを使用して、すでに存在している必要があります。

domainNamespacesリストにネームスペースを追加すると、オペレータは必要なKubernetesリソースを初期化して、そのネームスペース内のWebLogic Serverインスタンスを管理できるようになります。

オペレータがdefaultネームスペースを管理している場合、次の例のHelmコマンドは、ネームスペースns1domainNamespacesリストに追加します(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リリースをアップグレードするまで、実行中のオペレータには、新しく追加されたネームスペースを管理する権限がありません。 「オペレータにネームスペースを管理する権限があることの確認」を参照してください。

実行中のオペレータからのKubernetesネームスペースの削除

実行中のオペレータによって管理されるネームスペースを削除するステップは、次のとおりです。

ネームスペース・リストを使用する場合

オペレータがネームスペースのリストを管理するように構成されており、オペレータによってネームスペースを管理する必要がなくなった場合は、次のことを行う必要があります:

  • まず、オペレータのdomainNamespacesリストからネームスペースを削除します。
  • 次に、ネームスペースを削除します。

オペレータがdefaultおよびns1ネームスペースを実行および管理している間に、次のHelmコマンドを実行すると、ネームスペースns1domainNamespacesリストから削除されます(weblogic-operatorはオペレータのリリース名です):

$ helm upgrade \
  weblogic-operator/weblogic-operator \
  --reuse-values \
  --set "domainNamespaces={default}" \
  --wait

ラベル・セレクタまたは正規表現を使用する場合

ラベル・セレクタまたは正規表現を使用して管理対象ネームスペースを選択するように構成されたオペレータの場合、ネームスペースを削除する必要があります。 ラベル・セレクタ・オプションでは、ネームスペースがセレクタと一致しなくなるようにネームスペースのラベルを調整することもできます。

実行中のオペレータを使用して、以前に削除されたKubernetesネームスペースを再作成

次に、実行中のオペレータによって管理される、以前に削除されたネームスペースを再作成するステップを示します。

ネームスペース・リストを使用する場合

ネームスペース(およびその中のリソース)を削除してから再作成する場合:

  • まず、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リリースをアップグレードするまで、新しく再作成されたネームスペースを管理する権限があり「ません」 「オペレータにネームスペースを管理する権限があることの確認」を参照してください。