Vous pouvez déployer le fichier image dans le cluster Tanzu Kubernetes Grid.

Conditions préalables

  • Cluster Tanzu Kubernetes Grid.
  • Conteneurisation réussie sur un composant Oracle WebLogic Server.
  • Effectuez les étapes suivantes pour déployer l'opérateur Kubernetes WebLogic d'Oracle dans le cluster.
    • Exécutez les commandes suivantes :
    • Installer l'opérateur WebLogic :
      • Créez un espace de noms et un compte de service pour l'opérateur.
        kubectl create namespace sample-weblogic-operator-ns
        kubectl create serviceaccount -n sample-weblogic-operator-ns sample-weblogic-operator-sa
      • Installez Helm, qui est requis pour l'opérateur.
        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

Procédure

  1. Téléchargez le fichier ZIP d'artefacts d'image à partir du lien fourni dans les détails du composant et extrayez-le.
  2. Mettez à jour create_k8s_secrets.sh avec des détails spécifiques tels que l'espace de noms, le nom d'utilisateur et le mot de passe pour tous les codes secrets.
  3. Créez un espace de noms de domaine.
    # create domain namespace
    kubectl create namespace demo
     
    # upgrade weblogic-operator with the Domain namespace
    kubectl label ns demo weblogic-operator=enabled
  4. Créez des codes secrets pour le registre dans le même espace de noms.
    #!/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. Exécutez le script, vérifiez que les codes secrets sont créés dans l'espace de noms et vérifiez que les codes secrets sont créés.
    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. Préparez et déployez le domaine.
    1. Téléchargez le fichier Domain.yaml.extn, puis ajoutez et mettez à jour les paramètres suivants pour créer le fichier Domain.yaml pour le déploiement.
      • image : entrez le nom de l'image de domaine WebLogic
      • domainHomeSourceType: FromModel
      • webLogicCredentialsSecret
      • JAVA_OPTIONS "-Dweblogic.security.SSL.ignoreHostnameVerification=true"
      • runtimeEncryptionSecret
      • Ajoutez introspectorJobActiveDeadlineSeconds avec une durée en secondes (600, par exemple) pour les réseaux lents si l'espace d'introspection continue de créer et de se terminer en boucle.
      • Secrets supplémentaires créés après l'exécution du script précédent, le cas échéant.

    Exemple de fichier 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. Déployez le fichier Domain.yaml mis à jour dans le même espace de noms et le même espace d'introspection qui s'affiche en premier et extrait l'image Oracle WebLogic Server ainsi que les espaces de domaine créés (admin, server-0 ou server-1, par exemple)
    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. Effectuez l'une des opérations suivantes pour accéder au serveur d'administration Oracle WebLogic Server :
    • Créez un contrôleur d'entrée tel que traefik ou
    • Exposez les services à l'aide des commandes suivantes :
      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>"]}}'