Oracle WebLogic Operator チュートリアル

WebLogic Operatorのインストール

operatorは、複雑なアプリケーションのインスタンスの構築、設定、管理を行うためにKubernetesを拡張するアプリケーションに特化したコントローラーです。 Oracle WebLogic Server Kubernetes Operator ("operator"と呼びます)は、WebLogicドメインとデプロイメントの操作と管理を簡略化します。

Helm chartを用いたoperatorのインスト―ル

Note

事前に用意したVirtualBox環境をお使いの場合は、WebLogic Operatorのgit repositoryをcloneする必要はありません。 この手順はスキップしてください。
VirtualBox環境をお使いでない方は、以下のコマンドを実行し、ディレクトリの作成とgit repositoryのcloneを行ってください。

mkdir -p /u01/content/
cd /u01/content/
git clone https://github.com/oracle/weblogic-kubernetes-operator.git  -b v2.3.0

operatorのインストールと管理を行うためのHelmを使用するために、Tillerが利用するcluster-adminロールのサービスアカウントを確保する必要があります。 デフォルトでは、ネームスペースkube-systemdefaultに作成されます。以下のコマンドを利用してサービスアカウントに必要な権限を付与してください。

cat << EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: helm-user-cluster-admin-role
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: default
  namespace: kube-system
EOF

以下のような出力が確認できます。

clusterrolebinding "helm-user-cluster-admin-role" created

Kubernetesは、様々な理由でユーザアカウントとサービスアカウントの概念を区別しています。主な理由は、ユーザアカウントはユーザ用、サービスアカウントはpodで実行されるプロセス用になっているためです。WebLogic Operatorにはサービスアカウントも必要です。サービスアカウントが指定されていない場合、デフォルトが指定されます。(たとえば、ネームスペースのデフォルトサービスアカウントになります)
別のサービスアカウントを使用する場合は、オペレーターのHelm chartをインストールする前に、オペレーター用のネームスペースとサービスアカウントを作成する必要があります。

以下のように、事前にoperatorのネームスペースを作成しておきます。

kubectl create namespace sample-weblogic-operator-ns

サービスアカウントを作成します。

kubectl create serviceaccount -n sample-weblogic-operator-ns sample-weblogic-operator-sa

operatorのhelmインストールを実行するためにカレントディレクトリがWebLogic OperatorのローカルGitレポジトリが存在するディレクトリになっていることを確認してください。

cd /u01/content/weblogic-kubernetes-operator/

helmを使い始める前にサーバサイドのTillerサービスをアップグレードしておくことをお勧めします。以下のコマンドを実行してください。

helm init --upgrade

operatorのHelm chartをインストールするためにhelm installを使用します。ここでは、operatorで使用する"release"名を決める必要があります。

以下のいずれかによって、operatorのHelm chartにおけるデフォルト設定の上書きを行います。:

  • custom YAMLを利用した上書き:上書きする値を含んだ設定ファイルを作成し、Helmコマンドの--valueオプションを使用して設定を行う
  • 直接指定での上書き:Helmコマンドの--setオプションを利用して、直接、それぞれの値を上書きする

ここでは、シンプルに--setオプションを使用して設定値の上書きを行います。

設定値のメモ:

  • name: リソースの名前
  • namespace: operatorをデプロイするネームスペース
  • image: 事前にビルドされたWebLogic Operator 2.4.0 imageを使用します。 Docker hubから利用可能です。
  • serviceAccount: operatorを実行するためのサービスアカウント
  • domainNamespaces: 管理したいデプロイするwebLogicドメインのネームスペース。WebLogicドメインはまだデプロイしていないですが、ここにはWebLogicがデプロイされた際にアップデートされる値が入ります。

以下のhelm installコマンドを実行します:

helm install kubernetes/charts/weblogic-operator \
  --name sample-weblogic-operator \
  --namespace sample-weblogic-operator-ns \
  --set image=oracle/weblogic-kubernetes-operator:2.3.0 \
  --set serviceAccount=sample-weblogic-operator-sa \
  --set "domainNamespaces={}"
以下のような出力が得られます。:
NAME:   sample-weblogic-operator
LAST DEPLOYED: Mon Feb  4 13:10:56 2019
NAMESPACE: sample-weblogic-operator-ns
STATUS: DEPLOYED

RESOURCES:
==> v1beta1/Deployment
NAME               DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE
weblogic-operator  1        1        1           1          14s

==> v1/Secret
NAME                       TYPE    DATA  AGE
weblogic-operator-secrets  Opaque  0     15s

==> v1/ClusterRole
NAME                                                                      AGE
sample-weblogic-operator-ns-weblogic-operator-clusterrole-domain-admin    15s
sample-weblogic-operator-ns-weblogic-operator-clusterrole-general         14s
sample-weblogic-operator-ns-weblogic-operator-clusterrole-namespace       14s
sample-weblogic-operator-ns-weblogic-operator-clusterrole-nonresource     14s
sample-weblogic-operator-ns-weblogic-operator-clusterrole-operator-admin  14s

==> v1/Role
weblogic-operator-role  14s

==> v1/Service
NAME                            TYPE       CLUSTER-IP     EXTERNAL-IP  PORT(S)   AGE
internal-weblogic-operator-svc  ClusterIP  10.96.237.168  <none>       8082/TCP  14s

==> v1/ConfigMap
NAME                  DATA  AGE
weblogic-operator-cm  2     15s

==> v1/ClusterRoleBinding
NAME                                                                             AGE
sample-weblogic-operator-ns-weblogic-operator-clusterrolebinding-nonresource     14s
sample-weblogic-operator-ns-weblogic-operator-clusterrolebinding-auth-delegator  14s
sample-weblogic-operator-ns-weblogic-operator-clusterrolebinding-discovery       14s
sample-weblogic-operator-ns-weblogic-operator-clusterrolebinding-general         14s

==> v1/RoleBinding
NAME                                     AGE
weblogic-operator-rolebinding-namespace  14s
weblogic-operator-rolebinding            14s

==> v1/Pod(related)
NAME                               READY  STATUS   RESTARTS  AGE
weblogic-operator-f669874df-sl9cn  1/1    Running  0         14s

podを確認してみましょう:

$ kubectl get po -n sample-weblogic-operator-ns
NAME                                READY     STATUS    RESTARTS   AGE
weblogic-operator-f669874df-sl9cn   1/1       Running   0          1m
operatorのhelm chartを確認してみましょう:
$ helm list sample-weblogic-operator
NAME                            REVISION        UPDATED                         STATUS          CHART                   APP VERSION     NAMESPACE  
sample-weblogic-operator        1               Tue Nov 19 06:34:30 2019        DEPLOYED        weblogic-operator-2.3.0                 sample-weblogic-operator-ns

以上で、WebLogic Operatorがインストールされました。

続いて、Traefik Software Loadbalancerのインストールに進んでください。