Create a domain

  1. For use in the following steps:

    • Select a user name and password, following the required rules for password creation (at least 8 alphanumeric characters with at least one number or special character).
    • Pick or create a directory to which you can write output.
  2. Create a Kubernetes secret for the WebLogic administrator credentials containing the username and password for the domain, using the create-weblogic-credentials script:

    $ kubernetes/samples/scripts/create-weblogic-domain-credentials/create-weblogic-credentials.sh \
      -u <username> -p <password> -n sample-domain1-ns -d sample-domain1
    

    The sample will create a secret named domainUID-weblogic-credentials where the domainUID is replaced with the value you provided. For example, the command above would create a secret named sample-domain1-weblogic-credentials.

  3. Create a new image with a domain home by running the create-domain script. First, copy the sample create-domain-inputs.yaml file and update your copy with:

    • domainUID: sample-domain1
    • image: Leave empty unless you need to tag the new image that the script builds to a different name.
    • weblogicCredentialsSecretName: sample-domain1-weblogic-credentials
    • namespace: sample-domain1-ns
    • domainHomeImageBase: container-registry.oracle.com/middleware/weblogic:12.2.1.3

    For example, assuming you named your copy my-inputs.yaml:

    $ cd kubernetes/samples/scripts/create-weblogic-domain/domain-home-in-image
    $ ./create-domain.sh -i my-inputs.yaml -o /<your output directory> -u <username> -p <password> -e
    

You need to provide the same WebLogic domain administrator user name and password in the -u and -p options respectively, as you provided when creating the Kubernetes secret in Step 1.

  1. Confirm that the operator started the servers for the domain:

    a. Use kubectl to show that the domain resource was created:

    $ kubectl describe domain sample-domain1 -n sample-domain1-ns
    

    b. After a short time, you will see the Administration Server and Managed Servers running.

    $ kubectl get pods -n sample-domain1-ns
    

    c. You should also see all the Kubernetes services for the domain.

    $ kubectl get services -n sample-domain1-ns
    
  2. Create an Ingress for the domain, in the domain namespace, by using the sample Helm chart:

    For Helm 2.x:

    $ helm install kubernetes/samples/charts/ingress-per-domain \
      --name sample-domain1-ingress \
      --namespace sample-domain1-ns \
      --set wlsDomain.domainUID=sample-domain1 \
      --set traefik.hostname=sample-domain1.org
    

    For Helm 3.x:

    $ helm install sample-domain1-ingress kubernetes/samples/charts/ingress-per-domain \
      --namespace sample-domain1-ns \
      --set wlsDomain.domainUID=sample-domain1 \
      --set traefik.hostname=sample-domain1.org
    
  3. To confirm that the load balancer noticed the new Ingress and is successfully routing to the domain’s server pods, you can send a request to the URL for the “WebLogic ReadyApp framework” which will return a HTTP 200 status code, as shown in the example below.

    $ curl -v -H 'host: sample-domain1.org' http://localhost:30305/weblogic/ready
      About to connect() to localhost port 30305 (#0)
        Trying 10.196.1.64...
        Connected to localhost (10.196.1.64) port 30305 (#0)
    > GET /weblogic/ HTTP/1.1
    > User-Agent: curl/7.29.0
    > Accept: */*
    > host: domain1.org
    >
    < HTTP/1.1 200 OK
    < Content-Length: 0
    < Date: Thu, 20 Dec 2018 14:52:22 GMT
    < Vary: Accept-Encoding
    <   Connection #0 to host localhost left intact
    

Depending on where your Kubernetes cluster is running, you may need to open firewall ports or update security lists to allow ingress to this port.

  1. To access the WLS Administration Console:

    a. Edit the my-inputs.yaml file (assuming that you named your copy my-inputs.yaml) to set exposedAdminNodePort: true.

    b. Open a browser to http://localhost:30701.

    Do not use the WebLogic Server Administration Console to start or stop servers. See Starting and Stopping Servers.