Sie können die Image-Datei im Tanzu Kubernetes Grid-Cluster bereitstellen.

Voraussetzungen

  • Tanzu Kubernetes Grid-Cluster.
  • Erfolgreiche Containerisierung auf einer Oracle WebLogic Server-Komponente.
  • Führen Sie die folgenden Schritte aus, um den WebLogic Kubernetes-Operator von Oracle im Cluster bereitzustellen.
    • Führen Sie folgende Befehle aus:
    • Installieren Sie den WebLogic-Operator:
      • Erstellen Sie einen Namespace und ein Dienstkonto für den Operator.
        kubectl create namespace sample-weblogic-operator-ns
        kubectl create serviceaccount -n sample-weblogic-operator-ns sample-weblogic-operator-sa
      • Installieren Sie Helm als Voraussetzung für den Operator.
        helm install sample-weblogic-operator kubernetes/charts/weblogic-operator \
        --namespace sample-weblogic-operator-ns \
        --set image=oracle/weblogic-kubernetes-operator:3.1.0 \
        --set serviceAccount=sample-weblogic-operator-sa \
        --set "enableClusterRoleBinding=true" \
        --set "domainNamespaceSelectionStrategy=LabelSelector" \
        --set "domainNamespaceLabelSelector=weblogic-operator\=enabled" \
        --wait
        
        kubectl get pods -n sample-weblogic-operator-ns
         
        # Verify the status weblogic-operator pod
        kubectl get pods -n sample-weblogic-operator-ns
        #Output
        NAME                             	READY   STATUS	RESTARTS   AGE
        weblogic-operator-54c6f7464c-926xz   1/1     Running   0    2d12h

Prozedur

  1. Laden Sie die ZIP-Datei mit den Image-Artefakten über den Link in den Komponentendetails herunter und extrahieren Sie sie.
  2. Aktualisieren Sie create_k8s_secrets.sh mit bestimmten Details wie Namespace, Benutzername und Kennwort für alle geheimen Schlüssel.
  3. Erstellen Sie einen Domänen-Namespace.
    # create domain namespace
    kubectl create namespace demo
     
    # upgrade weblogic-operator with the Domain namespace
    kubectl label ns demo weblogic-operator=enabled
  4. Erstellen Sie geheime Schlüssel für die Registrierung im selben Namespace.
    #!/bin/bash
     set -eu
    
    # Edit these values to change the namespace or domain UID
    NAMESPACE=demo
    DOMAIN_UID=wldomain1
     
    function create_k8s_secret {
      kubectl -n $NAMESPACE delete secret ${DOMAIN_UID}-$1 --ignore-not-found
      kubectl -n $NAMESPACE create secret generic ${DOMAIN_UID}-$1 --from-literal=password=$2
      kubectl -n $NAMESPACE label secret ${DOMAIN_UID}-$1 weblogic.domainUID=${DOMAIN_UID}
    }
     
    function create_paired_k8s_secret {
      kubectl -n $NAMESPACE delete secret ${DOMAIN_UID}-$1 --ignore-not-found
      kubectl -n $NAMESPACE create secret generic ${DOMAIN_UID}-$1 --from-literal=username=$2 --from-literal=password=$3
      kubectl -n $NAMESPACE label secret ${DOMAIN_UID}-$1 weblogic.domainUID=${DOMAIN_UID}
    }
     
    # Update <admin-user> and <admin-password> for weblogic-credentials
    create_paired_k8s_secret weblogic-credentials <admin-user> <admin-password>
     
    # Update <user> and <password> for jdbc-jdbc-data-source-0
    create_paired_k8s_secret jdbc-jdbc-data-source-0 c##test <password>
     
    # Update <password> for runtime-encryption-secret, This is a special secret required by Model in Image.
    create_k8s_secret runtime-encryption-secret <password>
  5. Führen Sie das Skript aus und überprüfen Sie, ob die geheimen Schlüssel im Namespace erstellt wurden. Stellen Sie dann sicher, dass die geheimen Schlüssel erfolgreich erstellt wurden.
    kubectl get secrets -n demo
    
    #Output
    NAME                                  TYPE                                  DATA   AGE
    default-token-6ls2z                   kubernetes.io/service-account-token   3      5d13h
    docker-secret                         kubernetes.io/dockerconfigjson        1      4d22h
    harbor-cred                           kubernetes.io/dockerconfigjson        1      4d22h
    wldomain1-jdbc-jdbc-data-source-0     Opaque                                2      3d14h
    wldomain1-runtime-encryption-secret   Opaque                                1      3d14h
    wldomain1-weblogic-credentials        Opaque                                2      3d14h
  6. Bereiten Sie die Domäne vor und stellen Sie sie bereit.
    1. Laden Sie die Datei Domain.yaml.extn herunter. Fügen Sie die folgenden Parameter hinzu und aktualisieren Sie sie, um die Datei Domain.yaml für die Bereitstellung zu erstellen.
      • image: Geben Sie den Namen des WebLogic-Domänen-Images ein
      • domainHomeSourceType: FromModel
      • webLogicCredentialsSecret
      • JAVA_OPTIONS "-Dweblogic.security.SSL.ignoreHostnameVerification=true"
      • runtimeEncryptionSecret
      • Fügen Sie introspectorJobActiveDeadlineSeconds mit einer Zeitangabe in Sekunden (z. B. 600) für langsame Netzwerke hinzu, wenn der Introspector-POD mit der Erstellung fortfährt und in einer Schleife endet.
      • Zusätzliche geheime Schlüssel, die gegebenenfalls nach der Ausführung des vorherigen Skripts erstellt wurden.

    Beispiel für die Datei Domain.yaml

    kind: Domain
    metadata:
        name: wldomain1
    spec:
        domainHome: /home/oracle/WLDOMAIN1
        image: 'imthangadurai/wl_12_1_0_3:1.0.0'
        domainHomeSourceType: FromModel
        imagePullSecrets:
        -   name: 'docker-secret'
        webLogicCredentialsSecret:
          name: wldomain1-weblogic-credentials
        clusters:
        -   clusterName: 'Cluster-0'
            replicas: 2
            serverPod:
              env:
               - name: JAVA_OPTIONS
                 value: "-Dweblogic.security.SSL.ignoreHostnameVerification=true"
        configuration:
            introspectorJobActiveDeadlineSeconds: 600
            model:
                domainType: WLS
                runtimeEncryptionSecret: 'wldomain1-runtime-encryption-secret'
            secrets:
            -   'wldomain1-weblogic-credentials'
            -   'wldomain1-jdbc-jdbc-data-source-0'
  7. Stellen Sie die aktualisierte Datei Domain.yaml im selben Namespace bereit. Der Introspector-Pod wird zuerst gestartet und ruft das Oracle WebLogic Server-Image und die erstellten Domänen-Pods (z. B. admin, server-0, server-1 usw.) ab.
    kubectl apply -f Domain.yaml -n <namespace>
     
    # Watch for the status of the pods
    # admin server, managed-server1 and managed-server2 needs to be in running state
     
    kubectl get pods -n demo --watch
     
     
    NAME                       	READY   STATUS	RESTARTS   AGE
    wldomain1-introspector-bq4dt   1/1     Running   0      	100s
    wldomain1-introspector-bq4dt   0/1     Completed   0      	114s
    wldomain1-introspector-bq4dt   0/1     Terminating   0      	115s
    wldomain1-introspector-bq4dt   0/1     Terminating   0      	115s
    wldomain1-adminserver      	0/1     Pending   	0      	0s
    wldomain1-adminserver      	0/1     Pending   	0      	0s
    wldomain1-adminserver      	0/1     ContainerCreating   0      	0s
    wldomain1-adminserver      	0/1     Running         	0      	2s
     
    # This confirms the pods are running successfully
     
    kubectl get pods -n demo
    NAME                	READY   STATUS	RESTARTS   AGE
    wldomain1-adminserver   1/1     Running   0      	16m
    wldomain1-server-0  	1/1     Running   0      	15m
    wldomain1-server-1  	1/1     Running   0      	15m
    wldomain1-server-3  	1/1     Running   0      	15m
    wldomain1-server-4  	1/1     Running   0      	15m
  8. Führen Sie einen der folgenden Schritte aus, um auf den Verwaltungsserver von Oracle WebLogic Server zuzugreifen:
    • Erstellen Sie einen Ingress-Controller wie traefik.
    • Stellen Sie die Dienste mithilfe der folgenden Befehle zur Verfügung:
      kubectl expose pod <pod-name>  --port=<port>  --target-port=<port> --name porname --type=LoadBalancer
      kubectl patch svc portname-p '{"spec": {"type" : "LoadBalancer", "externalIPs":["<LB-IP>"]}}'