#chiroito ’s blog

Java を中心とした趣味の技術について

Running WebLogic Server on k8s

Kubernetes 上で Oracle WebLogic Server を動かしてみます。WebLogic Server のイメージは公式の Docker イメージを使用します。

以下の流れで紹介します。

現在、WebLogic Server を Kubernetes (k8s) 上で動かすことはサポートされていませんのでご注意ください。

Preparing

Docker Hub から公式の WebLogic Server イメージを落とせるようにして、Kubernetes の設定ファイルを用意しましょう。

Docker Hub の https://store.docker.com/images/oracle-weblogic-server-12c へアクセスします。

f:id:chiroito:20171123110348p:plain

[Proceed to Checkout]を押します。

f:id:chiroito:20171123110357p:plain 必要な情報を記入して右側のチェックボックスを選択し、[Get Content]を押すとつかえるようになります。

kubectl でDocker Hub の認証を使えるようにします。

> kubectl create secret docker-registry dockerhubsecret --docker-username=<Your DockerHub ID> --docker-password=<Your DockerHub Password> --docker-email=<Your DockerHub E-mail>
secret "dockerhubsecret" created

Kubernetes の設定ファイルを作成しましょう。ここでは、Kubernetes の Deployment と Service を作成してます。 以下の設定は先ほど Docker Hub で使えるようにした WebLogic Server のイメージを使ってコンテナを作成し、デプロイ先のノードの TCP:30001 番ポートへアクセスするとコンテナの 7001 へアクセスできる設定です。

kubernetes-weblogic.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: weblogic
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: weblogic
    spec:
      containers:
      - name: weblogic
        image: store/oracle/weblogic:12.2.1.2
        ports:
        - containerPort: 7001
      imagePullSecrets:
      - name: dockerhubsecret
---
kind: Service
apiVersion: v1
metadata:
  name: weblogic
spec:
  ports:
    - port: 7001
      targetPort: 7001
      nodePort: 30001
  type: NodePort
  selector:
    app: weblogic

Running WebLogic Server on k8s

Kubernetes 上で WebLogic Server を動かし、動いたことを確認しましょう。

まずはじめに、Kubernetes の現在の状態を確認します。以下は Kubernetes 上に何も無い状況です。

> kubectl get po,svc,deployments -o wide
No resources found.

先ほどの設定ファイルを使用して、環境を作成します。

> kubectl create -f kubernetes-weblogic.yaml
deployment "weblogic" created
service "weblogic" created

環境が作成されたことを確認します。k8s-1 というノードに pod が作成され、コンテナの TCP:7001 がノードの TCP:30001 と繋がっているのが確認できます。

> kubectl get po,svc,deployments -o wide
NAME                           READY     STATUS    RESTARTS   AGE       IP           NODE
po/weblogic-1871861515-1srwq   1/1       Running   0          2m        10.244.1.6   k8s-1

NAME           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE       SELECTOR
svc/weblogic   10.109.110.211   <nodes>       7001:30001/TCP   2m        app=weblogic

NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE       CONTAINER(S)   IMAGE(S)                                   SELECTOR
deploy/weblogic   1         1         1            1           2m        weblogic       store/oracle/weblogic:12.2.1.2   app=weblogic

Access to WebLogic Server Console

作成されたコンテナの WebLogic Server Console へアクセスしてみます。

この例では次の URL でアクセスできます。ホスト名はkubectl getの結果から適宜変更してください。

http://k8s-1:30001/console f:id:chiroito:20171123112325p:plain

ユーザ名は weblogicです。パスワードはコンテナのログから確認できます。以下の例ではパスワードは329c00e0です。

> kubectl logs po/weblogic-1871861515-1srwq

    Oracle WebLogic Server Auto Generated Empty Domain:

      ----> 'weblogic' admin password: 329c00e0


Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

domain_name     : [base_domain]
admin_port      : [7001]
domain_path     : [/u01/oracle/user_projects/domains/base_domain]
production_mode : [prod]
admin password  : [329c00e0]

(Optional) Using customized WebLogic Server Docker Image

WebLogic Server をカスタマイズするにはDocker Hub からイメージを落としてカスタマイズします。最後にカスタマイズしたイメージをリポジトリへ格納します。

まずはじめに、Docker Hub へログインします。

docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: <enter your Docker ID>
Password:
Login Succeeded

Docker Hub から公式の Docker イメージをダウンロードします。

> docker pull store/oracle/weblogic:12.2.1.2
12.2.1.2: Pulling from store/oracle/weblogic
7bd9e1692b54: Pull complete
e8bcd2aeaa6e: Pull complete
e6c6fa902b1b: Pull complete
d972be90ecb5: Pull complete
9b1c482dd1f8: Pull complete
c424de4a0701: Pull complete
Digest: sha256:154a88400832303d1b5f549f3732cd5a3bf354f3aa248482babf882c78b8833c
Status: Downloaded newer image for store/oracle/weblogic:12.2.1.2

公式の Docker イメージをカスタマイズしましょう。

カスタマイズしたイメージを自分のリポジトリへ格納しましょう。以下の例では公式のイメージをそのまま使用し、自分のリポジトリであるmyrepo:5000へ格納しています。

> docker tag store/oracle/weblogic:12.2.1.2 myrepo:5000/chiroito/weblogic:12.2.1.2
> docker push myrepo:5000/chiroito/weblogic:12.2.1.2
The push refers to a repository [myrepo:5000/chiroito/weblogic]
ff2d75291e12: Pushed
d21d86b63a51: Pushed
02dc0edc9a80: Pushed
2cb709854ad8: Pushed
f1a396a032b4: Pushed
a8cf2f688ac8: Pushed
12.2.1.2: digest: sha256:74162bce77bc0bf0f02f1782b3d611dad98cef7a5a734b80b0175737680083a7 size: 1577

設定ファイルのkubernetes-weblogic.yaml の imageにアップロードしたイメージを指定します。今回の例ではimage: myrepo:5000/chiroito/weblogic:12.2.1.2です。