16 WebLogic Kubernetes Operatorのインストールと構成

WebLogic Operator for Kubernetesは、Kubernetesクラスタ内のWebLogicドメインの作成と管理を容易にします。

WebLogic Operatorは、異なるネームスペースの複数の異なるドメインを管理できます。WebLogic Operator for Kubernetesは、専用のネームスペースにインストールされます。

この章の内容は次のとおりです。

製品固有の作業ディレクトリの設定

インストールを開始する前に、Oracle Access Managerコンテナ・イメージおよびサンプル・コード・リポジトリをダウンロードしてステージングしておく必要があります。

「エンタープライズ・デプロイメント用のソフトウェア・ディストリビューションの特定と取得」を参照してください。

また、「WebLogic Kubernetes Operatorのインストール」の説明に従って、Oracle WebLogic Operatorをデプロイしている必要があります。

この項では、ダウンロードしたサンプル・デプロイメント・スクリプトをOAMの構成ホストの一時作業ディレクトリにコピーする手順について説明します。

  1. インストール・ユーザーとして一時作業ディレクトリを作成します。インストール・ユーザーには、Kubenetesクラスタへのkubectlアクセス権が必要です。
    mkdir -p <WORKDIR>
    たとえば:
    mkdir -p /workdir/OPER
  2. ディレクトリをこの場所に変更します:
    cd /workdir/OPER

    ノート:

    このガイドでは、複数の製品で同じサンプル・ファイル・セットが使用されています。毎回ダウンロードする必要がないように、ファイルは製品固有でない作業ディレクトリにステージングされます。

    WebLogic Operatorファイルは、Oracle Access ManagerとOracle Identity Governanceで同じです。したがって、サンプルのすべてのバージョンを使用できます。

  3. サンプル・スクリプトを作業ディレクトリにコピーします。
    cp -R <WORKDIR>/fmw-kubernetes/OracleAccessManagement/kubernetes <WORKDIR>/samples
    たとえば:
    cp -R /workdir/OPER/fmw-kubernetes/OracleAccessManagement/kubernetes /workdir/OPER/samples

この章で使用される変数

この章の以降の各項では、ファイルを作成する手順を示します。これらのサンプル・ファイルには、デプロイメントに適用可能な値に置換する必要がある変数が含まれています。

変数の形式は<VARIABLE_NAME>です。次の表に、これらの各変数に設定する必要がある値を示します。

表16-1 変更する必要がある変数

変数 サンプル値 説明

<WORKDIR>

/workdir/OPER

Kubernetes Operatorの作業ディレクトリを作成する場所。

<OPERNS>

opns

Operatorオブジェクトを保持するためのKubernetesネームスペース。

<OPER_VER>

4.1.8

Kubernetes Operatorのバージョン。

<OPER_ACT>

operadmin

Kubernetes Operatorのサービス・アカウント。

<USE_ELK>

false

Elasticsearch/Kibanaの監視を使用している場合は、trueに設定します。

<ELK_PROTO>

https

Elasticsearchクラスタへのアクセスに使用されるhttpまたはhttpsプロトコル。

<ELK_HOST>

elasticsearch-es-http.elkns.svc

Elasticsearchログの送信先となるホスト。これは、Kubernetesクラスタの中と外のどちらでもかまいません。

<ELK_PORT>

9200

ログ情報の受信に使用されるElasticsearchのポート。

<ELK_VER>

8.11.0

使用するElasticsearchのバージョン。

既存のカスタム・リソース定義の削除

WebLogicのカスタム・リソース定義が存在する場合は削除します。

次のコマンドを使用して、カスタム・リソース定義が存在するかどうかを判断し、存在する場合はそれを削除します:
kubectl get crd
NAME                               AGE 
domains.weblogic.oracle            5d
kubectl delete crd domains.weblogic.oracle
customresourcedefinition.apiextensions.k8s.io "domains.weblogic.oracle" deleted

WebLogic Kubernetes Operatorのインストール

WebLogic Kubernetes Operatorをインストールする手順は、ネームスペースおよびKubernetesサービス・アカウントの作成で構成されます。インストール後にOperatorを起動します。

ネームスペースの作成

すべてのWebLogic Operator Kubernetesオブジェクトを含むネームスペースを作成します。
kubectl create namespace <OPERNS>
たとえば:
kubectl create namespace opns
出力は次のようになります:
namespace/opns created

コンテナ・レジストリ・シークレットの作成

独自のコンテナ・レジストリを使用して、オンデマンドでOracleコンテナ・イメージをプルする場合は、コンテナ・レジストリのログイン詳細を含むシークレットを作成する必要があります。

コンテナ・イメージをローカルにステージングした場合、またはそれらをパブリック・リポジトリからプルする場合、次のコマンドを実行する必要はありません。

次のコマンドを使用して、コンテナ・レジストリ・シークレットを作成します:

kubectl create secret -n <OPERNS> docker-registry <REGISTRY_SECRET_NAME> --docker-server=<REGISTRY_ADDRESS> --docker-username=<REG_USER> --docker-password=<REG_PWD>

例:

kubectl create secret -n opns docker-registry regcred --docker-server=iad.ocir.io/mytenancy --docker-username=mytenancy/oracleidentitycloudservice/myemail@email.com --docker-password=<password>

Kubernetesサービス・アカウントの作成

WebLogic OperatorのKubernetesサービス・アカウントを作成します。このアカウントは、ネームスペース内に作成されます。
kubectl create serviceaccount -n <OPERNS> <OPER_ACT>
たとえば:
kubectl create serviceaccount -n opns operadmin

出力は次のようになります:

serviceaccount/op-sa created

Elasticsearchのシークレットの作成

Elasticsearchを使用していて、ElasticsearchでSSLを使用するために接続が必要な場合は、Elasticsearch証明書をKubernetesシークレットに配置する必要があります。

KubernetesでElasticsearchを使用している場合は、次のコマンドを使用して証明書を取得できます:
kubectl cp <ELKNS>/elasticsearch-es-default-0:/usr/share/elasticsearch/config/http-certs/..data/ca.crt <WORKDIR>/ca.crt

Kubernetes内でElasticsearchを使用していない場合は、ca.crtファイルをElasticsearchインストールから作業ディレクトリにコピーする必要があります。

Elasticsearch証明書からシークレットを作成するには、次のコマンドを使用します:
kubectl create secret generic logstash-certs-secret --from-file=<WORKDIR>/ca.crt -n $<OPERNS>

WebLogic Operatorのインストールおよび起動

WebLogic Operatorをインストールして起動するには:
  1. 次のコマンドを使用します。
    cd <WORKDIR>/samples
    helm install kubernetes/charts/weblogic-operator \
     --namespace <OPERNS> \ 
     --set image=weblogic-kubernetes-operator:<OPER_VER> \ 
     --set serviceAccount=<OPER_ACT> \
     --set "enableClusterRoleBinding=true" \
     --set "domainNamespaceSelectionStrategy=LabelSelector" \
     --set "domainNamespaceLabelSelector=weblogic-operator\=enabled" \
     --set "elasticSearchProtocol=<ELK_PROTO>" \
     --set "elkIntegrationEnabled=<USE_ELK>" \
     --set "elasticSearchHost=<ELK_HOST>" \
     --set "elasticSearchPort=<ELK_PORT>" \
     --set "logStashImage=docker.elastic.co/logstash/logstash:<ELK_VER>" \
     --set "createLogStashConfigMap=true" \
     --wait

    ノート:

    • イメージ名にはリポジトリの名前が含まれます。たとえば、コンテナ・レジストリを使用する場合、registry/weblogic-kubernetes-operatorと表示されます。Oracle Cloud Native Environmentを使用する場合、名前はlocal/weblogic-kubernetes-operatorと表示されます。
    • ローカルでステージングされたイメージを使用する場合、podman imagesまたはdocker imagesコマンドを使用して完全名を判別できます。
    • ELK/Elasticsearchパラメータは、Elasticsearch/Kibanaの監視を使用している場合のみ必要です。
    • createLogStashConfigMapパラメータは、WebLogic Operatorリリース4.0以上でのみ機能します。WebLogic Operatorのログ・ファイルは、WebLogic Operatorリリース4.0以上を使用している場合にのみ、保護されたElasticsearchに送信できます。以前のリリースのWebLogic Operatorの場合、ログ・ファイルを送信できるのは、完全にオープンなElasticsearchのみです。
    • 独自のコンテナ・レジストリを使用している場合は、レジストリ・シークレットにさらに引数を追加する必要があります:
      --set "imagePullSecrets[0].name=regcred"
    たとえば:
    cd /workdir/OPER/samples
    helm install weblogic-kubernetes-operator charts/weblogic-operator \
     --namespace opns \
     --set image=weblogic-kubernetes-operator:4.1.8 \
     --set serviceAccount=operadmin \
     --set "enableClusterRoleBinding=true" \
     --set "domainNamespaceSelectionStrategy=LabelSelector" \
     --set "domainNamespaceLabelSelector=weblogic-operator\=enabled" \
     --set "elkIntegrationEnabled=true" \
     --set "elasticSearchHost=https://elasticsearch-es-http.elkns.svc" \
     --set "elasticSearchPort=9200" \
     --set "logStashImage=docker.elastic.co/logstash/logstash:8.11.0" \
     --set "createLogStashConfigMap=true" \ 
     --wait

    出力が次のように表示されます。

    NAME: weblogic-kubernetes-operator
     LAST DEPLOYED: Wed Sep 23 08:04:20 2020
     NAMESPACE: opns
     STATUS: deployed
     REVISION: 1
     TEST SUITE: None
  2. 次のコマンドを使用して、Operatorのポッドとサービスが実行中であることを確認します:
    kubectl get all -n opns
    出力が次のように表示されます。
    
    NAME                                             READY      STATUS      RESTARTS    AGE
    pod/weblogic-operator-759b7c657-8gd7g            2/2        Running     0           107s
    pod/weblogic-operator-webhook-859b5755b6-2zlq8   2/2        Running     0           24m
        
    NAME                                         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    service/internal-weblogic-operator-svc       ClusterIP   10.102.11.143   <none>        8082/TCP   107s
    
    NAME                                         READY   UP-TO-DATE   AVAILABLE     AGE
    deployment.apps/weblogic-operator            1/1     1            1             107s
         
    NAME                                          DESIRED   CURRENT   READY   AGE
    replicaset.apps/weblogic-operator-759b7c657   1         1         1       107s
  3. Operatorのポッド・ログを確認します:
    kubectl logs -n opns weblogic-operator-759b7c657-8gd7g
    出力が次のように表示されます。
    {"timestamp":"09-23-2020T15:04:30.485+0000","thread":28,"fiber":"fiber-1","namespace":"opns","domainUID":"","level":"INFO","class":"oracle.kubernetes.operator.rest.RestServer",ethod":"start","timeInMillis":1600873470485,"message":"Started the internal ssl REST server on https://0.0.0.0:8082/operator","exception":"","code":"","headers":{},"body":""}
    {"timestamp":"09-23-2020T15:04:30.487+0000","thread":28,"fiber":"fiber-1","namespace":"opns","domainUID":"","level":"INFO","class":"oracle.kubernetes.operator.Main","method":"mkReadyAndStartLivenessThread","timeInMillis":1600873470487,"message":"Starting Operator Liveness Thread","exception":"","code":"","headers":{},"body":""}
    {"timestamp":"09-23-2020T15:06:27.528+0000","thread":22,"fiber":"engine-operator-thread-5-fiber-2","namespace":"opns","domainUID":"","level":"FINE","class":"oracle.kubernetes.orator.helpers.ConfigMapHelper$ScriptConfigMapContext","method":"loadScriptsFromClasspath","timeInMillis":1600873587528,"message":"Loading scripts into domain control config mapor namespace: opns","exception":"","code":"","headers":{},"body":""}
    {"timestamp":"09-23-2020T15:06:27.529+0000","thread":22,"fiber":"engine-operator-thread-5-fiber-2","namespace":"opns","domainUID":"","level":"FINE","class":"oracle.kubernetes.orator.Main","method":"readExistingDomains","timeInMillis":1600873587529,"message":"Listing WebLogic Domains","exception":"","code":"","headers":{},"body":""}
    {"timestamp":"09-23-2020T15:06:27.576+0000","thread":20,"fiber":"fiber-2-child-1","namespace":"opns","domainUID":"","level":"FINE","class":"oracle.kubernetes.operator.helpers.CfigMapHelper$ConfigMapContext$ReadResponseStep","method":"logConfigMapExists","timeInMillis":1600873587576,"message":"Existing config map, ConfigMapHelper$ConfigMapContext$Readsponse, is correct for namespace: opns.","exception":"","code":"","headers":{},"body":""}

Elasticsearch構成の更新

WebLogic Kubernetes Operatorがデプロイされると、weblogic-operator-logstash-cmという構成マップが作成されます。この構成マップには、LogstashがElasticsearchクラスタにログを送信する方法の詳細が含まれています。この構成マップでは、ログを正常に送信するための変更が必要です。

  1. 次のコマンドを使用して、構成マップを編集します:
    kubectl edit cm -n <OPERNS> weblogic-operator-logstash-cm
  2. 出力セクションを探して、必要に応じて行のコメントを解除し、値を追加します。通常、出力セクションは次のようになります:
        output {
          elasticsearch {
            hosts => ["${ELASTICSEARCH_PROTOCOL}://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"]
            # Example configuration if Elasticsearch instance requires authentication and SSL:
            ssl => true
            user => "logstash_internal"
            password => "<ELK_USER_PWD>"
            cacert => '/usr/share/logstash/config/certs/ca.crt'
            index => "wkologs-000001"
          }
          stdout { codec => rubydebug }
        }
  3. 構成マップを保存します。
  4. ポッドを削除して、WebLogic Kubernetes Operatorを再起動します。たとえば:
    kubectl delete pod -n opns weblogic-operator-759b7c657-8gd7g
    kubectl delete pod -n opns weblogic-operator-webhook-859b5755b6-2zlq8
  5. 次のコマンドを使用して、Logstashのポッド・ログを確認します:
    kubectl logs -n opns weblogic-operator-759b7c657-8gd7g -c logstash