このサンプルは、WebLogic Kubernetes Operator (以降はオペレータ)を使用して、model in imageドメイン・ホーム・ソース・タイプを使用してAzure Kubernetesサービス(AKS)にWebLogic Server (WLS)クラスタを設定する方法を示します。 ステップを実行した後、WLSドメインはAKSクラスタ・インスタンスで実行され、オペレータと対話することでWLSドメインを管理できます。
このサンプルでは、次の前提条件環境を想定しています。
git --version
を使用して、git
が動作するかどうかをテストします。 このドキュメントは、バージョン2.25.1でテストされました。 az --version
を使用して、az
が動作するかどうかをテストします。 このドキュメントは、バージョン2.58.0でテストされました。 Docker version 20.10.7
でテストされました kubectl version
を使用して、kubectl
が動作するかどうかをテストします。 このドキュメントは、バージョンv1.21.2でテストされました。 helm version
を使用してhelm
バージョンを確認します。 このドキュメントは、バージョンv3.6.2でテストされました。 JAVA_HOME
環境変数が正しく設定されていることを確認します。 zip/unzip -v
を使用して、zip/unzip
が動作するかどうかをテストします。パラメータの設定。
# Change these parameters as needed for your own environment
export ORACLE_SSO_EMAIL=<replace with your oracle account email>
export ORACLE_SSO_PASSWORD="<replace with your oracle password.>"
export BASE_DIR=~
export NAME_PREFIX=wls
# Used to generate resource names.
export TIMESTAMP=`date +%s`
export ACR_NAME="acr${TIMESTAMP}"
export AKS_CLUSTER_NAME="aks${TIMESTAMP}"
export AKS_PERS_RESOURCE_GROUP="resourcegroup${TIMESTAMP}"
export AKS_PERS_LOCATION=eastus
export SECRET_NAME_DOCKER="${NAME_PREFIX}regcred"
export WEBLOGIC_USERNAME=weblogic
export WEBLOGIC_PASSWORD=Secret123456
export WEBLOGIC_WDT_PASSWORD=Secret123456
Oracleアカウントが必要です。 次のステップでは、WebLogic Serverのライセンス契約に同意します。 Oracle Accountのパスワードと電子メールをノートにとります。 このサンプルは12.2.1.4に関連していますが、他のバージョンも動作する場合があります。
--recommendedPatches
オプションを指定したWebLogic Image Tool (WIT)を使用してイメージを作成する必要があります。 詳細は、「Oracle WebLogic Serverの本番環境の保護」の「最新のパッチと更新の適用」を参照してください。 $ docker login container-registry.oracle.com -u ${ORACLE_SSO_EMAIL} -p ${ORACLE_SSO_PASSWORD}
$ docker pull container-registry.oracle.com/middleware/weblogic:12.2.1.4
Oracle Container Registryへのアクセスに問題がある場合は、「Oracle GitHubリポジトリ」から独自のイメージを作成できます。
この項のステップでは、Azure CLIにサインインする方法を示します。
Bashシェルを開きます。
サインアウトし、一部の認証ファイルを削除して、ライセンス資格証明を削除します。
$ az logout
$ rm ~/.azure/accessTokens.json
$ rm ~/.azure/azureProfile.json
Azure CLIにサインインします。
$ az login
サブスクリプションIDを設定します。 プレースホルダーを適切な値に置換してください。
$ export SUBSCRIPTION_ID="<your-sub-id>"
$ az account set -s $SUBSCRIPTION_ID
WebLogic Kubernetes OperatorサンプルZIPファイルをダウンロードします。 このzipファイル内の複数のスクリプトを使用して、WebLogicドメインを作成します。 このサンプルはv4.2.5でテストされましたが、最新リリースで動作する必要があります。
$ cd $BASE_DIR
$ mkdir sample-scripts
$ curl -m 120 -fL https://github.com/oracle/weblogic-kubernetes-operator/releases/download/v4.2.5/sample-scripts.zip \
-o ${BASE_DIR}/sample-scripts/sample-scripts.zip
$ unzip ${BASE_DIR}/sample-scripts/sample-scripts.zip -d ${BASE_DIR}/sample-scripts
$ az extension add --name resource-graph
$ az group create --name $AKS_PERS_RESOURCE_GROUP --location $AKS_PERS_LOCATION
このサンプルはアプリケーション・ルーティングを有効にしません。 アプリケーション・ルーティングを有効にする場合は、「AKSのアプリケーション・ルーティング・アドオンでnginx Ingressを管理」に従います。
次のコマンドを実行して、AKSクラスタ・インスタンスを作成します。
$ az aks create \
--resource-group $AKS_PERS_RESOURCE_GROUP \
--name $AKS_CLUSTER_NAME \
--node-count 2 \
--generate-ssh-keys \
--nodepool-name nodepool1 \
--node-vm-size Standard_DS2_v2 \
--location $AKS_PERS_LOCATION \
--enable-managed-identity
正常に出力されるのは、エントリ"type": "Microsoft.ContainerService/ManagedClusters"
を含むJSONオブジェクトです。
デプロイメントが終了したら、次のコマンドを実行してAKSクラスタに接続します。 このコマンドは、後続のkubectl
コマンドが指定されたAKSクラスタと相互作用するようにローカル~/.kube/config
を更新します。
$ az aks get-credentials --resource-group $AKS_PERS_RESOURCE_GROUP --name $AKS_CLUSTER_NAME
正常な出力は次のようになります:
Merged "wlsaks1596087429" as current context in /home/username/.kube/config
Kubernetesクラスタが稼働したら、次のコマンドを実行して、kubectl
がKubernetesクラスタにアクセスできることを確認します:
$ kubectl get nodes -o wide
成功した出力は、次のようになります。
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
aks-nodepool1-15679926-vmss000000 Ready agent 118s v1.25.6 10.224.0.4 <none> Ubuntu 22.04.2 LTS 5.15.0-1041-azure containerd://1.7.1+azure-1
aks-nodepool1-15679926-vmss000001 Ready agent 2m8s v1.25.6 10.224.0.5 <none> Ubuntu 22.04.2 LTS 5.15.0-1041-azure containerd://1.7.1+azure-1
ノート: VMサイズの障害に遭遇した場合は、トラブルシューティング - 仮想マシン・サイズはサポートされていませんを参照してください。
WebLogic Kubernetes Operatorは、WebLogic ServerおよびKubernetesを統合するアダプタで、KubernetesはWLSインスタンスをホストするコンテナ・インフラストラクチャとして機能できます。 オペレータはKubernetesポッドとして実行され、KubernetesでのWLSの実行に関連するアクションを実行する準備ができています。
オペレータのネームスペースおよびサービス・アカウントを作成します。
$ kubectl create namespace sample-weblogic-operator-ns
namespace/sample-weblogic-operator-ns created
$ kubectl create serviceaccount -n sample-weblogic-operator-ns sample-weblogic-operator-sa
serviceaccount/sample-weblogic-operator-sa created
このコマンドを使用して、サービス・アカウントが作成されたことを確認します。
$ kubectl -n sample-weblogic-operator-ns get serviceaccount
NAME SECRETS AGE
default 1 9m24s
sample-weblogic-operator-sa 1 9m5s
オペレータをインストールします。 オペレータのHelmチャートは、kubernetes/charts/weblogic-operatorディレクトリにあります。 このサンプルでは、GithubからHelmチャートを使用してオペレータをインストールします。 オペレータのインストールには数分かかる場合があります。
$ helm repo add weblogic-operator https://oracle.github.io/weblogic-kubernetes-operator/charts --force-update
リポジトリを更新して、最新のHelmチャートを取得します。 これは、新しいオペレータ・バージョンをインストールする前に毎回行うことをお勧めします。 この例では、固定バージョンを使用していますが、最新バージョンを使用すると成功する場合があります。 この場合、--version
引数は省略できます。 これらの指示は、表示されている正確なバージョンでのみテストされていることに注意してください。
$ helm repo update
$ helm install weblogic-operator weblogic-operator/weblogic-operator \
--namespace sample-weblogic-operator-ns \
--version 4.2.5 \
--set serviceAccount=sample-weblogic-operator-sa \
--wait
出力には、次のように表示されます:
NAME: weblogic-operator
LAST DEPLOYED: Fri Aug 12 14:28:47 2022
NAMESPACE: sample-weblogic-operator-ns
STATUS: deployed
REVISION: 1
TEST SUITE: None
より新しいバージョンのオペレータを使用する場合は、前述のコマンドの4.2.5
を他のバージョン番号に置き換えます。 バージョンのリストを表示するには、「GitHubリリース・ページ」を参照してください。
次のコマンドを使用してオペレータを確認します。statusはRunning
になります。
$ helm list -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
weblogic-operator sample-weblogic-operator-ns 1 2023-05-15 10:31:05.1890341 +0800 CST deployeweblogic-operator-4.2.5 4.2.5
$ kubectl get pods -n sample-weblogic-operator-ns
NAME READY STATUS RESTARTS AGE
weblogic-operator-54b5c8df46-g4rcm 1/1 Running 0 86s
weblogic-operator-webhook-6c5885f69f-pd8qw 1/1 Running 0 86s
--set image
の値を変更して、オペレータ・イメージを指定できます。 失敗が発生した場合は、「トラブルシューティング - WebLogic Kubernetes Operatorのインストール失敗」を参照してください。
Model in Imageに続くドメイン・モデルでイメージが構築されている場合は、「WebLogicドメインの作成」に直接移動できます。
JAVA_HOME
環境変数を設定し、有効なJDK 8または11インストールを参照する必要があります。
サンプルを新しいディレクトリにコピーします。たとえば、ディレクトリ/tmp/mii-sample
を使用します。 ディレクトリ名では、mii
は"model in image"の短縮形です。 Model in imageは、オペレータでサポートされている3つのドメイン・ホーム・ソース・タイプのいずれかです。 詳細は、「ドメイン・ホーム・ソース・タイプの選択」を参照してください。
$ rm /tmp/mii-sample -f -r
$ mkdir /tmp/mii-sample
$ cp -r $BASE_DIR/sample-scripts/create-weblogic-domain/wdt-artifacts/* /tmp/mii-sample
モデル・ファイルのディレクトリを保存します。
$ export WDT_MODEL_FILES_PATH=/tmp/mii-sample/wdt-model-files
ノート: サンプルのこの作業用コピーを/tmp/mii-sample
と呼びますが、別のロケーションを使用できます。
最新のWebLogic Deploying Tooling (WDT)およびWebLogic Image Tool (WIT)インストーラZIPファイルを${WDT_MODEL_FILES_PATH}
ディレクトリにダウンロードします。 Model in Imageイメージを作成するには、WDTとWITの両方が必要です。
$ curl -m 120 -fL https://github.com/oracle/weblogic-deploy-tooling/releases/latest/download/weblogic-deploy.zip \
-o ${WDT_MODEL_FILES_PATH}/weblogic-deploy.zip
$ curl -m 120 -fL https://github.com/oracle/weblogic-image-tool/releases/latest/download/imagetool.zip \
-o ${WDT_MODEL_FILES_PATH}/imagetool.zip
WebLogic Image Toolを設定し、次のコマンドを実行します:
$ unzip ${WDT_MODEL_FILES_PATH}/imagetool.zip -d ${WDT_MODEL_FILES_PATH}
$ ${WDT_MODEL_FILES_PATH}/imagetool/bin/imagetool.sh cache deleteEntry --key wdt_latest
$ ${WDT_MODEL_FILES_PATH}/imagetool/bin/imagetool.sh cache addInstaller \
--type wdt \
--version latest \
--path ${WDT_MODEL_FILES_PATH}/weblogic-deploy.zip
これらのステップでは、WITを${WDT_MODEL_FILES_PATH}/imagetool
ディレクトリにインストールし、さらにWDT ZIPファイル・インストーラを指すwdt_latest
エントリをツールのキャッシュに配置します。 WITは、サンプルの後半でモデル・イメージの作成に使用します。
イメージ作成の目的は、WebLogic Image Toolを使用して、${WDT_MODEL_FILES_PATH}/WLS-v1/
にステージングするファイルからwdt-domain-image:WLS-v1
とタグ付けされたイメージを作成することを示しています。
/auxiliary/weblogic-deploy
ディレクトリに必要です。/auxiliary/models
に必要です。「最初のアーカイブの理解」を参照してください。
イメージを作成するときは、ステージング・ディレクトリ${WDT_MODEL_FILES_PATH}/WLS-v1
内のファイルを使用します。 準備として、WDTアプリケーション・アーカイブのZIPファイルを含める必要があります。
次のコマンドを実行して、アプリケーション・アーカイブZIPファイルを作成し、必要なディレクトリに配置します:
# Delete existing archive.zip in case we have an old leftover version
$ rm -f ${WDT_MODEL_FILES_PATH}/WLS-v1/archive.zip
WebLogic Image Toolの実行時に使用するロケーションに、アーカイブのZIPファイルを作成します。
$ cd /tmp/mii-sample/archives/archive-v1
$ zip -r ${WDT_MODEL_FILES_PATH}/WLS-v1/archive.zip wlsdeploy
このステップでは、ステージング済WDTモデルYAMLファイルおよび${WDT_MODEL_FILES_PATH}/WLS-v1
ディレクトリのプロパティを確認します。 このディレクトリのモデルは、アーカイブ内のwebアプリケーションを参照し、WebLogic Server管理サーバーを構成し、WebLogicクラスタを構成します。 これは、model.10.properties
という2つのファイル、単一のプロパティを持つファイル、およびmodel.10.yaml
というWebLogic構成のYAMLファイルのみで構成されています。
WLS model.10.properties
を次に示します:
CLUSTER_SIZE=5
WLS model.10.yaml
を次に示します:
domainInfo:
AdminUserName: '@@SECRET:__weblogic-credentials__:username@@'
AdminPassword: '@@SECRET:__weblogic-credentials__:password@@'
ServerStartMode: 'prod'
topology:
Name: '@@ENV:CUSTOM_DOMAIN_NAME@@'
AdminServerName: 'admin-server'
Cluster:
'cluster-1':
DynamicServers:
ServerTemplate: 'cluster-1-template'
ServerNamePrefix: 'managed-server'
DynamicClusterSize: '@@PROP:CLUSTER_SIZE@@'
MaxDynamicClusterSize: '@@PROP:CLUSTER_SIZE@@'
MinDynamicClusterSize: '0'
CalculatedListenPorts: false
Server:
'admin-server':
ListenPort: 7001
ServerTemplate:
'cluster-1-template':
Cluster: 'cluster-1'
ListenPort: 8001
appDeployments:
Application:
myapp:
SourcePath: 'wlsdeploy/applications/myapp-v1'
ModuleType: ear
Target: 'cluster-1'
モデル・ファイルの特徴は次のとおりです:
次を使用してWebLogicドメインを定義します:
cluster-1
admin-server
cluster-1
をターゲットとするEARアプリケーション。wlsdeploy/applications/myapp-v1
のWDTアーカイブZIPファイルにありますマクロを利用して外部値をインジェクトします:
CLUSTER_SIZE
プロパティは、PROPマクロを使用してモデルYAMLファイルのDynamicClusterSize
およびMaxDynamicClusterSize
フィールドで参照されます。CUSTOM_DOMAIN_NAME
という名前のカスタム環境変数を使用してインジェクトされます。
env
フィールドを使用して設定します。weblogic-credentials
シークレット・マクロ参照を使用して設定されます。
webLogicCredentialsSecret
フィールドを使用して参照されます。weblogic-credentials
は、所有ドメインの実際のWebLogic資格証明のシークレット名を常に間接参照する予約名です。Model in Imageイメージには、複数のプロパティ・ファイル、アーカイブZIPファイルおよびYAMLファイルを含めることができますが、このサンプルでは、それぞれのいずれかを使用します。 Model in Imagesモデル・ファイルのネーミング規則、ファイル・ロード順序およびマクロ構文の詳細は、Model in Imageユーザー・ドキュメントの「モデル・ファイル」ファイルを参照してください。
この時点で、ステージングされたimage wdt-domain-image:WLS-v1
に必要なすべてのファイルがあります。次のファイルが含まれます:
/tmp/sample/wdt-artifacts/wdt-model-files/WLS-v1/model.10.yaml
/tmp/sample/wdt-artifacts/wdt-model-files/WLS-v1/model.10.properties
/tmp/sample/wdt-artifacts/wdt-model-files/WLS-v1/archive.zip
ここで、イメージ・ツールを使用して、wdt-domain-image:WLS-v1
という名前のイメージを作成します。 このツールは、前提条件ステップですでに設定されています。
次のコマンドを実行してイメージを作成し、それが機能することを確認します。
$ ${WDT_MODEL_FILES_PATH}/imagetool/bin/imagetool.sh createAuxImage \
--tag wdt-domain-image:WLS-v1 \
--wdtModel ${WDT_MODEL_FILES_PATH}/WLS-v1/model.10.yaml \
--wdtVariables ${WDT_MODEL_FILES_PATH}/WLS-v1/model.10.properties \
--wdtArchive ${WDT_MODEL_FILES_PATH}/WLS-v1/archive.zip
このコマンドは、WebLogic Image Toolを実行してドメイン作成イメージを作成し、次のことを実行します:
busybox
ベース・イメージのレイヤーとしてビルドします。latest
を使用してWITにWDTをキャッシュしたことに注意してください。-wdtVersion
フラグを渡す必要がなくなります。/auxiliary/models
にコピーします。コマンドが成功すると、次のような出力で終了します:
[INFO ] Build successful. Build time=70s. Image tag=wdt-domain-image:WLS-v1
次のコマンドを使用して、イメージがローカルDockerサーバーで使用可能であることを確認します。
$ docker images | grep WLS-v1
wdt-domain-image WLS-v1 012d3bfa3536 5 days ago 1.13GB
imagetool.sh
は、Apple SiliconのmacOSではサポートされていません。 「トラブルシューティング - execフォーマット・エラー」を参照してください。
Dockerビルド・キットが有効になっている場合は、Dockerfile
解析エラーになることがあります。「トラブルシューティング - WebLogic Image Toolの失敗」を参照してください。
AKSは任意のコンテナ・レジストリからイメージをプルできますが、最も簡単な統合はAzure Container Registry (ACR)を使用することです。 シンプルさに加えて、ACRを使用すると、地理レプリケーションなどの機能により、高可用性とディザスタ・リカバリが簡素化されます。 詳細については、「Azure Container Registryのレプリケーション」を参照してください。 この項では、新しいAzure Container Registryを作成し、既存のAKSクラスタに接続し、前の項で作成したイメージをプッシュします。 詳細は、「Azure Container Registryのドキュメント」を参照してください。
AKSに使用したリソース・グループと同じリソース・グループにACRのインスタンスを作成します。 前述のステップで使用した環境変数を使用します。 簡単にするために、ACRインスタンスの名前としてリソース・グループ名を使用します。
$ az acr create --resource-group $AKS_PERS_RESOURCE_GROUP --name $ACR_NAME --sku Basic --admin-enabled true
このコマンドからのJSON出力を詳細に調べます。 loginServer
プロパティの値を保存します。 次のようになります。
"loginServer": "contosoresourcegroup1610068510.azurecr.io",
この値を使用してACRインスタンスにサインインします。 az
cliでサインインしているため、az login
を以前に実行してアイデンティティがすでに伝達されているため、パスワードは必要ありません。
$ export LOGIN_SERVER=$(az acr show -n $ACR_NAME --resource-group $AKS_PERS_RESOURCE_GROUP --query "loginServer" -o tsv)
$ az acr login --name $LOGIN_SERVER
正常な出力には、Login Succeeded
が含まれます。
Dockerがローカル・マシンで実行されていることを確認します。 次のコマンドを実行して、イメージにタグ付けし、ACRにプッシュします。
$ docker tag wdt-domain-image:WLS-v1 $LOGIN_SERVER/mii-aks-auxiliary-image:1.0
$ docker push $LOGIN_SERVER/mii-aks-auxiliary-image:1.0
The push refers to repository [contosorgresourcegroup1610068510.azurecr.io/mii-aks-auxiliary-image]
1.0: digest: sha256:208217afe336053e4c524caeea1a415ccc9cc73b206ee58175d0acc5a3eeddd9 size: 2415
最後に、AKSをACRに接続します。 ACRを既存のAKSに接続する方法の詳細については、「既存のAKSクラスタのACR統合の構成」を参照してください。
$ export ACR_ID=$(az acr show -n $ACR_NAME --resource-group $AKS_PERS_RESOURCE_GROUP --query "id" -o tsv)
$ az aks update --name $AKS_CLUSTER_NAME --resource-group $AKS_PERS_RESOURCE_GROUP --attach-acr $ACR_ID
正常に出力されるのは、エントリ"type": "Microsoft.ContainerService/ManagedClusters"
を含むJSONオブジェクトです。
「このサブスクリプションの所有者」ではないと思われるエラーが表示される場合は、「サブスクリプションの所有者ではないため、ACRをアタッチできません」のトラブルシューティングの項を参照してください。
この項では、次のステップを含む新しいイメージをネームスペースsample-domain1-ns
にデプロイします:
password
値を指定する必要があります。1つ以上のドメインをホストできるネームスペースを作成します:
$ kubectl create namespace sample-domain1-ns
オペレータがWebLogic Serverポッドを自動検出および作成できるように、ドメイン・ネームスペースにラベルを付けます。 このステップがない場合、オペレータはネームスペースを表示できません。
$ kubectl label namespace sample-domain1-ns weblogic-operator=enabled
kubernetes/samples/scripts/create-kubernetes-secrets/create-docker-credentials-secret.sh
スクリプトを使用して、Docker資格証明をKubernetesシークレットとして作成し、OCRからイメージをプルします。 実行してください:
$ $BASE_DIR/sample-scripts/create-kubernetes-secrets/create-docker-credentials-secret.sh \
-n sample-domain1-ns \
-s ${SECRET_NAME_DOCKER} \
-e ${ORACLE_SSO_EMAIL} \
-p ${ORACLE_SSO_PASSWORD} \
-u ${ORACLE_SSO_EMAIL}
secret/wlsregcred created
The secret wlsregcred has been successfully created in the sample-domain1-ns namespace.
最初に、WLSタイプ・モデル・ドメインで必要なシークレットを作成します。 実行中のドメインのコンテキストでのシークレットの詳細は、「ドメインを実行する準備」を参照してください。 この場合、2つのシークレットがあります。
次のkubectl
コマンドを実行して、必要なシークレットをデプロイします:
$ kubectl -n sample-domain1-ns create secret generic \
sample-domain1-weblogic-credentials \
--from-literal=username="${WEBLOGIC_USERNAME}" \
--from-literal=password="${WEBLOGIC_PASSWORD}"
$ kubectl -n sample-domain1-ns label secret \
sample-domain1-weblogic-credentials \
weblogic.domainUID=sample-domain1
$ kubectl -n sample-domain1-ns create secret generic \
sample-domain1-runtime-encryption-secret \
--from-literal=password="${WEBLOGIC_WDT_PASSWORD}"
$ kubectl -n sample-domain1-ns label secret \
sample-domain1-runtime-encryption-secret \
weblogic.domainUID=sample-domain1
これらのシークレットに関する重要な詳細:
シークレット値を設定する前に、値を二重引用符で囲み、シェルが値を変更しないように、必要なエスケープを実行してください。
パスワードおよびユーザー名の選択:
WEBLOGIC_USERNAME
およびWEBLOGIC_PASSWORD
に、任意のユーザー名とパスワードを設定します。 パスワードは8文字以上で、数字を1文字以上使用する必要があります。 指定した内容を記憶します。 これらの資格証明は後で再度必要になる場合があります。 WEBLOGIC_WDT_PASSWORD
を設定します。WebLogic資格証明シークレット:
username
およびpassword
フィールドが含まれている必要があります。spec.webLogicCredentialsSecret
フィールドによって参照される必要があります。 Domain
リソースの詳細は、「ドメイン・リソース・リファレンス」を参照してください。 model.10.yaml
ファイルのdomainInfo.AdminUserName
およびdomainInfo.AdminPassWord
フィールドのマクロで参照する必要があります。モデルWDTランタイム暗号化シークレット:
password
フィールドが含まれている必要があります。spec.model.runtimeEncryptionSecret
フィールドを使用して参照する必要があります。シークレットの削除および再作成:
create
コマンドが失敗します。kubectl create secret
コマンドの使用時にシークレットを変更できます。シークレットには、次の2つの理由で、関連付けられたdomainUID
を使用して名前とラベルを付けます:
weblogic.domainUID
ラベルを使用します。 これで、次のコマンドを使用してシークレットを確認できます:
kubectl get secrets -n sample-domain1-ns
出力は次のようになります。
NAME TYPE DATA AGE
sample-domain1-runtime-encryption-secret Opaque 1 19s
sample-domain1-weblogic-credentials Opaque 2 28s
wlsregcred kubernetes.io/dockerconfigjson 1 47s
次に、ドメインYAMLファイルを作成します。 ドメインYAMLファイルは、Kubernetesを使用してWebLogicドメインの一部の側面を構成する方法と考えてください。 オペレータは、Kubernetesのカスタム・リソース機能を使用して、Domain
と呼ばれるKubernetesリソース・タイプを定義します。 Domain
Kubernetesリソースの詳細は、「ドメイン・リソース」を参照してください。 カスタム・リソースの詳細は、「Kubernetesのドキュメント」を参照してください。
ドメイン・リソースの説明を生成するためのスクリプトを$BASE_DIR/sample-scripts/create-weblogic-domain-on-azure-kubernetes-service/create-domain-on-aks-mii-generate-yaml.sh
で提供します。
次のコマンドを実行してリソース・ファイルを生成します。
export Domain_Creation_Image_tag="$LOGIN_SERVER/mii-aks-auxiliary-image:1.0"
$ cd $BASE_DIR
$ bash $BASE_DIR/sample-scripts/create-weblogic-domain-on-azure-kubernetes-service/create-domain-on-aks-mii-generate-yaml.sh
前述のコマンドを実行すると、3つのファイルが表示されます: mii-initial.yaml
、admin-lb.yaml
およびcluster-lb.yaml
。
次のコマンドを実行して、ドメイン・カスタム・リソースを作成します:
$ kubectl apply -f mii-initial.yaml
成功した出力は次のようになります:
domain.weblogic.oracle/sample-domain1 created
cluster.weblogic.oracle/sample-domain1-cluster-1 created
WebLogic Serverポッドがすべて実行されていることを確認します:
$ kubectl get pods -n sample-domain1-ns --watch
出力は次のようになります。
NAME READY STATUS RESTARTS AGE
sample-domain1-introspector-xwpbn 0/1 ContainerCreating 0 0s
sample-domain1-introspector-xwpbn 1/1 Running 0 1s
sample-domain1-introspector-xwpbn 0/1 Completed 0 66s
sample-domain1-introspector-xwpbn 0/1 Terminating 0 67s
sample-domain1-introspector-xwpbn 0/1 Terminating 0 67s
sample-domain1-admin-server 0/1 Pending 0 0s
sample-domain1-admin-server 0/1 Pending 0 0s
sample-domain1-admin-server 0/1 ContainerCreating 0 0s
sample-domain1-admin-server 0/1 Running 0 2s
sample-domain1-admin-server 1/1 Running 0 42s
sample-domain1-managed-server1 0/1 Pending 0 0s
sample-domain1-managed-server1 0/1 Pending 0 0s
sample-domain1-managed-server1 0/1 ContainerCreating 0 0s
sample-domain1-managed-server2 0/1 Pending 0 0s
sample-domain1-managed-server2 0/1 Pending 0 0s
sample-domain1-managed-server2 0/1 ContainerCreating 0 0s
sample-domain1-managed-server2 0/1 Running 0 3s
sample-domain1-managed-server2 1/1 Running 0 40s
sample-domain1-managed-server1 0/1 Running 0 53s
sample-domain1-managed-server1 1/1 Running 0 93s
システムが次の状態で安定すると、続行しても安全です。
NAME READY STATUS RESTARTS AGE
sample-domain1-admin-server 1/1 Running 0 2m
sample-domain1-managed-server1 1/1 Running 0 83s
sample-domain1-managed-server2 1/1 Running 0 83s
すべてのポッドのデプロイには最大10分かかる場合があります。お待ちください。準備ができていることを確認してください。
システムがこの状態に達しない場合は、続行する前に問題をトラブルシューティングして解決してください。 ヒントについては、「トラブルシューティング」を参照してください。
WebLogic Server管理コンソールおよびクラスタにデプロイされたアプリケーションにアクセスするためのAzureパブリック標準ロード・バランサを作成します。
admin-lb.yaml
の構成ファイルを使用して、管理サーバーのロード・バランサ・サービスを作成します。 事前定義済YAMLファイルを使用せず、かわりにカスタマイズされた値で新しいYAMLファイルを作成する場合は、次のコンテンツをドメイン値に置き換えます。
cluster-lb.yaml
の構成ファイルを使用して、管理対象サーバーのロード・バランサ・サービスを作成します。 事前定義済YAMLファイルを使用せず、かわりにカスタマイズされた値を使用して新しいYAMLファイルを作成する場合は、次のコンテンツをドメイン値に置き換えます。
次のコマンドを使用してロード・バランサ・サービスを作成します:
$ kubectl apply -f admin-lb.yaml
service/sample-domain1-admin-server-external-lb created
$ kubectl apply -f cluster-lb.yaml
service/sample-domain1-cluster-1-external-lb created
管理サーバーおよびクラスタ・ロード・バランサの外部IPアドレスを取得します(外部IPアドレスが割り当てられるまでお待ちください):
$ kubectl get svc -n sample-domain1-ns --watch
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sample-domain1-admin-server ClusterIP None <none> 7001/TCP 8m33s
sample-domain1-admin-server-external-lb LoadBalancer 10.0.184.118 52.191.234.149 7001:30655/TCP 2m30s
sample-domain1-cluster-1-lb LoadBalancer 10.0.76.7 52.191.235.71 8001:30439/TCP 2m25s
sample-domain1-cluster-cluster-1 ClusterIP 10.0.118.225 <none> 8001/TCP 7m53s
sample-domain1-managed-server1 ClusterIP None <none> 8001/TCP 7m53s
sample-domain1-managed-server2 ClusterIP None <none> 8001/TCP 7m52s
この例では、管理サーバーにアクセスするためのURLは次のとおりです: http://52.191.234.149:7001/console
。 必要なユーザー名とパスワードは、「WebLogicのKubernetesシークレット」ステップで選択した値と一致する必要があります。
重要: コンソールへのアクセスを制御するネットワーク・セキュリティ・グループ・ルールで、ポート7001でインバウンド・トラフィックが許可されていることを確認する必要があります。
WLS管理コンソールがまだ使用できない場合は、kubectl describe domain
を使用してドメイン・ステータスを確認します。
$ kubectl describe domain domain1
cluster-1のステータスがServersReady
およびAvailable
であることを確認します。
管理ロード・バランサのIPアドレスを使用して管理コンソールにアクセスします。
$ ADMIN_SERVER_IP=$(kubectl -n sample-domain1-ns get svc sample-domain1-admin-server-external-lb -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
$ echo "Administration Console Address: http://${ADMIN_SERVER_IP}:7001/console/"
クラスタ・ロード・バランサのIPアドレスを使用してサンプル・アプリケーションにアクセスします。
## Access the sample application using the cluster load balancer IP.
$ CLUSTER_IP=$(kubectl -n sample-domain1-ns get svc sample-domain1-cluster-1-lb -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
$ curl http://${CLUSTER_IP}:8001/myapp_war/index.jsp
<html><body><pre>
*****************************************************************
Hello World! This is version 'v1' of the sample JSP web-app.
Welcome to WebLogic Server 'managed-server1'!
domain UID = 'sample-domain1'
domain name = 'domain1'
Found 1 local cluster runtime:
Cluster 'cluster-1'
Found min threads constraint runtime named 'SampleMinThreads' with configured count: 1
Found max threads constraint runtime named 'SampleMaxThreads' with configured count: 10
Found 0 local data sources:
*****************************************************************
</pre></body></html>
通常は、wlsdeploy/applications/myapp-v1
のWDTアーカイブZIPファイルにある新しいバージョンのEARアプリケーションをデプロイします。 これを行う方法を学習するには、「更新3」のステップに従います。
WebLogic ServerアプリケーションでデータベースをAKSに接続する方法のガイダンスは、「Azure Kubernetesサービス(AKS)クラスタにWebLogic Serverを使用してJavaアプリケーションをデプロイ」を参照してください。
次のコマンドを実行して、リソースをクリーンアップします。
$ az group delete --yes --no-wait --name $AKS_PERS_RESOURCE_GROUP
トラブルシューティングのアドバイスについては、「トラブルシューティング」を参照してください。