WebLogic Kubernetes Operator provides a way of running WLS domains in a k8s cluster.
For this post we are depicting the steps of the tutorial you can find in the documentation here. So let’s get started!
What you need:
- a k8s cluster
- kubectl
- maven
- git
- docker
- 60 minutes
git clone https://github.com/oracle/weblogic-kubernetes-operator docker login docker pull oracle/weblogic-kubernetes-operator:2.2.0 docker pull traefik:1.7.6
For the next step, if you don’t have a user, goto https://container-registry.oracle.com and register yourself
docker login container-registry.oracle.com docker pull container-registry.oracle.com/middleware/weblogic:12.2.1.3
K8s uses role based access control (RBAC):
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
Traefik is a router:
helm install stable/traefik \ --name traefik-operator \ --namespace traefik \ --values kubernetes/samples/charts/traefik/values.yaml \ --set "kubernetes.namespaces={traefik}" \ --wait
cat <<EOF < values.yaml serviceType: NodePort service: nodePorts: http: "30305" https: "30443" dashboard: enabled: true domain: traefik.example.com rbac: enabled: true ssl: enabled: true #enforced: true #upstream: true #insecureSkipVerify: false tlsMinVersion: VersionTLS12 EOF
helm install stable/traefik --name traefik-operator --namespace traefik --values values.yaml --set "kubernetes.namespaces={traefik}" --wait
Namespace for the operator:
kubectl create namespace sample-weblogic-operator-ns kubectl create serviceaccount -n sample-weblogic-operator-ns sample-weblogic-operator-sa
cd weblogic-kubernetes-operator/ helm install kubernetes/charts/weblogic-operator \ --name sample-weblogic-operator \ --namespace sample-weblogic-operator-ns \ --set image=oracle/weblogic-kubernetes-operator:2.2.0 \ --set serviceAccount=sample-weblogic-operator-sa \ --set "domainNamespaces={}" \ --wait
kubectl create namespace sample-domain1-ns helm upgrade \ --reuse-values \ --set "domainNamespaces={sample-domain1-ns}" \ --wait \ sample-weblogic-operator \ kubernetes/charts/weblogic-operator helm upgrade \ --reuse-values \ --set "kubernetes.namespaces={traefik,sample-domain1-ns}" \ --wait \ traefik-operator \ stable/traefik
Creating the WLS domain image:
kubernetes/samples/scripts/create-weblogic-domain-credentials/create-weblogic-credentials.sh \ -u weblogic -p welcome1 -n sample-domain1-ns -d sample-domain1
Tag the docker image created and push to a registry:
docker images docker tag container-registry.oracle.com/middleware/weblogic:12.2.1.3 javiermugueta/weblogic:12.2.1.3 docker push javiermugueta/weblogic:12.2.1.3
NOTE: Remember to make private this image in the registry!!! As a recommended option, please follow the steps here to push to the private registry offered by Oracle.
Now let’s make a copy of the yaml file with properties to change and put the appropriate values:
cp kubernetes/samples/scripts/create-weblogic-domain/domain-home-in-image/create-domain-inputs.yaml . mv create-domain-inputs.yaml mycreate-domain-inputs.yaml vi mycreate-domain-inputs.yaml (change values in lines #16, #57, #65, #70, #104, #107 appropriately) Here the one I utilised just in case it helps
And now let’s create the domain with the image:
cd kubernetes/samples/scripts/create-weblogic-domain/domain-home-in-image ./create-domain.sh -i ~/Downloads/weblogic-kubernetes-operator/mycreate-domain-inputs.yaml -o ~/Downloads/weblogic-kubernetes-operator/output -u weblogic -p welcome1 -e
Verify that everything ig working!
kubectl get po -ns sample-domain1-ns kubectl get svc -ns sample-domain1-ns
Change the type of the cluster and adminserver services to LoadBalancer:
kubectl edit svc/sample-domain1-cluster-cluster-1 -n sample-domain1-ns kubectl edit svc/sample-domain1-admin-server-external -n sample-domain1-ns

Verify and write down the public IP’s of the AdminServer external service and the cluster:
kubectl get svc -ns sample-domain1-ns

Create a simple java app and package it:
mvn archetype:generate -DgroupId=javiermugueta.blog -DartifactId=java-web-project -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false mnv package
Open a browser, log in WLS AdminServer console and deploy your app (use the public IP of the AdminsServer service):

Open a new browser tab and test the app (use the public IP of the WLS cluster service):

That’s all folks, hope it helps!! 🙂
Hi,
how weblogic cluster communication between pods are takecare ?
LikeLike
The weblogic kubernetes operator is a construct that suits the weblogic architecture (based in managed servers, admin server and the like) in the kubernetes architecture of pods, deployments, etc. For instance the operator creates a new construct in the k8s system called domain who takes care of the weblogic domain concept, please take a look at https://oracle.github.io/weblogic-kubernetes-operator/userguide/introduction/introduction/
LikeLike