Azure Kubernetes Service (AKS) kümesi üzerinde açık özgürlük veya WebSphere özgürlük ile Java uygulaması dağıtma

Bu makalede nasıl yapılacağı gösterilmektedir:

  • açık özgürlük veya websphere serbest çalışma zamanında java, java EE, jakarta EE veya mikro profil uygulamanızı çalıştırın.
  • Açık serbest yer kapsayıcısı görüntülerini kullanarak uygulama Docker görüntüsünü oluşturun.
  • Açık Liberty Işlecini kullanarak Kapsayıcılı uygulamayı bir AKS kümesine dağıtın.

Açık özgürlük Işleci, Kubernetes kümelerinde çalışan uygulamaların dağıtımını ve yönetimini basitleştirir. Açık serbest bir Işleçle, izleme ve dökümleri toplama gibi daha gelişmiş işlemler de yapabilirsiniz.

Açık özgürlük hakkında daha fazla bilgi için, bkz. serbest bir proje açın sayfası. IBM WebSphere özgürlük hakkında daha fazla bilgi için bkz. WebSphere Liberty ürün sayfası.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Önkoşullar

  • Azure Cloud Shell'Da Bash ortamını kullanın.

    Cloud Shell’i yeni bir pencerede başlatma

  • Dilerseniz CLI başvuru komutlarını çalıştırmak için Azure CLI’yi yükleyebilirsiniz.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Ek oturum açma seçenekleri için bkz. Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantılarını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

  • Bu makale, Azure CLı 'nin en son sürümünü gerektirir. Azure Cloud Shell kullanılıyorsa, en son sürüm zaten yüklüdür.
  • Bu kılavuzdaki komutları yerel olarak çalıştırıyorsanız (Azure Cloud Shell yerine):
    • unıx benzeri işletim sistemi yüklü bir yerel makine hazırlayın (örneğin, ubuntu, macos, Linux için Windows Alt Sistemi).
    • Java SE uygulamasını (örneğin, benimsetopenjdk openjdk 8 lts/OpenJ9) yükler.
    • Maven 3.5.0 veya üstünü yükler.
    • IŞLETIM sisteminize Docker 'yi yüklemeyin.

Kaynak grubu oluşturma

Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği mantıksal bir gruptur.

Eastus konumundaki az Group Create komutunu kullanarak Java-Liberty-Project adlı bir kaynak grubu oluşturun. Bu kaynak grubu daha sonra Azure Container Registry (ACR) örneği ve AKS kümesi oluşturmak için kullanılır.

RESOURCE_GROUP_NAME=java-liberty-project
az group create --name $RESOURCE_GROUP_NAME --location eastus

ACR örneği oluşturma

ACR örneğini oluşturmak için az ACR Create komutunu kullanın. Aşağıdaki örnek, youruniqueacrname adlı bir ACR örneği oluşturur. Youruniqueacrname 'in Azure içinde benzersiz olduğundan emin olun.

export REGISTRY_NAME=youruniqueacrname
az acr create --resource-group $RESOURCE_GROUP_NAME --name $REGISTRY_NAME --sku Basic --admin-enabled

Kısa bir süre sonra, şunu içeren bir JSON çıktısı görmeniz gerekir:

  "provisioningState": "Succeeded",
  "publicNetworkAccess": "Enabled",
  "resourceGroup": "java-liberty-project",

acr örneğine Bağlan

Bir görüntüyü gönderebilmeniz için ACR örneğinde oturum açmanız gerekir. Bağlantıyı doğrulamak için aşağıdaki komutları çalıştırın:

export LOGIN_SERVER=$(az acr show -n $REGISTRY_NAME --query 'loginServer' -o tsv)
export USER_NAME=$(az acr credential show -n $REGISTRY_NAME --query 'username' -o tsv)
export PASSWORD=$(az acr credential show -n $REGISTRY_NAME --query 'passwords[0].value' -o tsv)

docker login $LOGIN_SERVER -u $USER_NAME -p $PASSWORD

Login SucceededACR örneğinde başarıyla oturum açtıysanız komut çıkışının sonunda görmeniz gerekir.

AKS kümesi oluşturma

AKS kümesi oluşturmak için az aks create komutunu kullanın. Aşağıdaki örnekte, bir düğüm ile myAKSCluster adlı bir küme oluşturulmuştur. Bu işlem birkaç dakika sürer.

CLUSTER_NAME=myAKSCluster
az aks create --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --node-count 1 --generate-ssh-keys --enable-managed-identity

Birkaç dakika sonra komut tamamlanır ve aşağıdakiler dahil olmak üzere küme hakkında JSON biçimli bilgileri döndürür:

  "nodeResourceGroup": "MC_java-liberty-project_myAKSCluster_eastus",
  "privateFqdn": null,
  "provisioningState": "Succeeded",
  "resourceGroup": "java-liberty-project",

aks kümesine Bağlan

Kubernetes kümesini yönetmek için Kubernetes komut satırı istemcisi olan kubectl'yi kullanırsınız. Azure Cloud Shell kullanıyorsanız, kubectl zaten yüklüdür. kubectlYerel olarak yüklemek için az aks install-cli komutunu kullanın:

az aks install-cli

kubectl istemcisini Kubernetes kümenize bağlanacak şekilde yapılandırmak için az aks get-credentials komutunu kullanın. Bu komut, kimlik bilgilerini indirir ve Kubernetes CLı 'yi bunları kullanacak şekilde yapılandırır.

az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --overwrite-existing

Not

Yukarıdaki komut, Kubernetes yapılandırma dosyasıiçin varsayılan konumu kullanır ~/.kube/config . --File kullanarak Kubernetes yapılandırma dosyanız için farklı bir konum belirtebilirsiniz.

Kümenize bağlantıyı doğrulamak için kubectl get komutunu kullanarak küme düğümleri listesini alın.

kubectl get nodes

Aşağıdaki örnekte önceki adımlarda oluşturulan tek düğüm gösterilmiştir. Düğüm durumunun olduğundan emin olun:

NAME                                STATUS   ROLES   AGE     VERSION
aks-nodepool1-xxxxxxxx-yyyyyyyyyy   Ready    agent   76s     v1.18.10

Açık serbest bir Işleci yükle

Kümeye oluşturup bağlandıktan sonra, aşağıdaki komutları çalıştırarak Açık özgürlük işlecini yüklersiniz.

OPERATOR_NAMESPACE=default
WATCH_NAMESPACE='""'

# Install Custom Resource Definitions (CRDs) for OpenLibertyApplication
kubectl apply -f https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-crd.yaml

# Install cluster-level role-based access
curl -L https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-cluster-rbac.yaml \
      | sed -e "s/OPEN_LIBERTY_OPERATOR_NAMESPACE/${OPERATOR_NAMESPACE}/" \
      | kubectl apply -f -

# Install the operator
curl -L https://raw.githubusercontent.com/OpenLiberty/open-liberty-operator/master/deploy/releases/0.7.1/openliberty-app-operator.yaml \
      | sed -e "s/OPEN_LIBERTY_WATCH_NAMESPACE/${WATCH_NAMESPACE}/" \
      | kubectl apply -n ${OPERATOR_NAMESPACE} -f -

Uygulama görüntüsü oluştur

Özgürlük uygulamanızı AKS kümesinde dağıtmak ve çalıştırmak için, Açık serbest yer kapsayıcısı görüntülerini veya WebSphere serbest bir kapsayıcı görüntülerinikullanarak uygulamanızı bir Docker görüntüsü olarak kapsayıcıya geçirin.

  1. Bu kılavuz için örnek kodu kopyalayın. Örnek GitHub.

  2. Dizini javaee-app-simple-cluster Yerel kopyanızda değiştirin.

  3. mvn clean packageUygulamayı paketlemek için çalıştırın.

  4. mvn liberty:devUygulamayı test etmek için ' i çalıştırın. The defaultServer server is ready to run a smarter planet.Başarılı olursa komut çıktısında görmeniz gerekir. CTRL-CUygulamayı durdurmak için kullanın.

  5. Özellikleri için değerleri alın artifactId ve version içinde tanımlanır pom.xml .

    artifactId=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.artifactId}' --non-recursive exec:exec)
    version=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
    
  6. cd targetDizini örneğin derlemesi ile değiştirmek için öğesini çalıştırın.

  7. Uygulama görüntüsünü derlemek ve ACR örneğine göndermek için aşağıdaki komutlardan birini çalıştırın.

    • Açık özgürlük, hafif bir açık kaynak Java™ çalışma zamanı olarak kullanmayı tercih ediyorsanız açık serbest bir temel görüntüyle derleyin:

      # Build and tag application image. This will cause the ACR instance to pull the necessary Open Liberty base images.
      az acr build -t ${artifactId}:${version} -r $REGISTRY_NAME .
      
    • Açık özgürlük ticari bir sürümünü kullanmayı tercih ediyorsanız, WebSphere serbest, ana görüntüsü ile derleyin:

      # Build and tag application image. This will cause the ACR instance to pull the necessary WebSphere Liberty base images.
      az acr build -t ${artifactId}:${version} -r $REGISTRY_NAME --file=Dockerfile-wlp .
      

AKS kümesinde uygulama dağıtma

AKS kümesinde Liberty uygulamasını dağıtmak için aşağıdaki adımları izleyin.

  1. AKS kümesinin, ACR örneğinden görüntü çekmek için kimlik doğrulamasından geçmek üzere bir çekme gizli anahtarı oluşturun.

    kubectl create secret docker-registry acr-secret \
       --docker-server=${LOGIN_SERVER} \
       --docker-username=${USER_NAME} \
       --docker-password=${PASSWORD}
    
  2. Geçerli çalışma dizininin javaee-app-simple-cluster/target Yerel kopyanızda olduğunu doğrulayın.

  3. Serbest bir uygulamanızı, AKS kümesine 3 çoğaltma ile dağıtmak için aşağıdaki komutları çalıştırın. Komut çıktısı Ayrıca satır içi olarak gösterilir.

    # Create OpenLibertyApplication "javaee-cafe-cluster"
    kubectl apply -f openlibertyapplication.yaml
    
    openlibertyapplication.openliberty.io/javaee-cafe-cluster created
    
    # Check if OpenLibertyApplication instance is created
    kubectl get openlibertyapplication ${artifactId}-cluster
    
    NAME                        IMAGE                                                   EXPOSED   RECONCILED   AGE
    javaee-cafe-cluster         youruniqueacrname.azurecr.io/javaee-cafe:1.0.25         True         59s
    
    # Check if deployment created by Operator is ready
    kubectl get deployment ${artifactId}-cluster --watch
    
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    javaee-cafe-cluster         0/3     3            0           20s
    
  4. 3/3Sütunun altında ve sütununun altında görene kadar bekleyin READY 3 AVAILABLE , CTRL-C izleme işlemini durdurmak için kullanın kubectl .

Uygulamayı test edin

Uygulama çalıştığında, bir Kubernetes Yük Dengeleyici Hizmeti, uygulamanın ön ucuna internet 'e koyar. Bu işlemin tamamlanması biraz zaman alabilir.

İlerlemeyi izlemek için, kubectl Get Service komutunu bağımsız değişkeniyle birlikte kullanın --watch .

kubectl get service ${artifactId}-cluster --watch

NAME                        TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
javaee-cafe-cluster         LoadBalancer   10.0.251.169   52.152.189.57   80:31732/TCP     68s

Dış IP adresi bekliyor durumundan gerçek ortak IP adresine değiştiğinde, CTRL-C izleme işlemini durdurmak için kullanın kubectl .

52.152.189.57Uygulama giriş sayfasını görmek için hizmetinizin dış IP adresine (Yukarıdaki örnek için) bir Web tarayıcısı açın. Sayfanın sol tarafında görünen uygulama çoğaltmalarınızın Pod adını görmeniz gerekir. Birkaç dakika bekleyin ve AKS kümesi tarafından sağlanmış yük dengelemesi nedeniyle farklı bir pod adı görmek için sayfayı yenileyin.

Java Liberty uygulaması AKS 'de başarıyla dağıtıldı

Not

Kaynakları temizleme

Azure ücretlerinden kaçınmak için gereksiz kaynakları temizlemeniz gerekir. Küme artık gerekli olmadığında, az Group Delete komutunu kullanarak kaynak grubunu, kapsayıcı hizmetini, kapsayıcı kayıt defterini ve tüm ilgili kaynakları kaldırın.

az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait

Sonraki adımlar

Bu kılavuzda kullanılan başvurulardan daha fazla bilgi edinebilirsiniz: