Azure Kubernetes Service kümesinde Open Liberty veya WebSphere Liberty ile Java uygulaması dağıtma

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

  • Java, Java EE, Jakarta EE veya MicroProfile uygulamanızı Open Liberty veya IBM WebSphere Liberty çalışma zamanında çalıştırın.
  • Open Liberty veya WebSphere Liberty kapsayıcı görüntülerini kullanarak uygulamanın Docker görüntüsünü oluşturun.
  • Open Liberty operator veya WebSphere Liberty Operator kullanarak kapsayıcılı uygulamayı bir Azure Kubernetes Service (AKS) kümesine dağıtın.

Open Liberty Operatörü, Kubernetes kümelerinde çalışan uygulamaların dağıtımını ve yönetimini basitleştirir. Open Liberty Operatörü veya WebSphere Liberty Operatörü ile izlemeleri ve dökümleri toplama gibi daha gelişmiş işlemler de gerçekleştirebilirsiniz.

Bu makale, AKS yolculuğunuzu hızlandırmak için Open Liberty veya WebSphere Liberty için Azure Market teklifini kullanır. Teklif, aşağıdakiler dahil olmak üzere bazı Azure kaynaklarını otomatik olarak sağlar:

  • Azure Container Registry örneği.
  • AKS kümesi.
  • Application Gateway Giriş Denetleyicisi (AGIC) örneği.
  • Open Liberty Operatörü ve WebSphere Liberty Operatörü.
  • İsteğe bağlı olarak, Liberty ve uygulamanızı içeren bir kapsayıcı görüntüsü.

AKS üzerinde Liberty çalıştırmak için el ile adım adım kılavuzu tercih ediyorsanız bkz . Azure Kubernetes Service (AKS) kümesinde Open Liberty veya WebSphere Liberty ile java uygulamasını el ile dağıtma.

Bu makale, dağıtıma hızlı bir şekilde başlamanıza yardımcı olmak için tasarlanmıştır. Üretime geçmeden önce Liberty'yi ayarlama hakkındaki IBM belgelerini incelemeniz gerekir.

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

Önkoşullar

  • Azure CLI’yi yükleyin. Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.
  • az login komutunu kullanarak Azure CLI'da oturum açın . Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.
  • İstendiğinde, ilk kullanımda Azure CLI uzantısı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 CLI'nın en az 2.31.0 sürümünü gerektirir.
  • Bir Java SE uygulaması, sürüm 17 veya üzeri yükleyin. (örneğin, Eclipse Open J9).
  • Maven 3.5.0 veya üzerini yükleyin.
  • İşletim sisteminiz için Docker'ı yükleyin.
  • Git'in yüklü olduğundan emin olun.
  • Size abonelikteki Owner rol veya Contributor ve User Access Administrator rolleri atandığından emin olun. Bir kullanıcı veya grup için rol atamalarını listeleme bölümünde yer alan adımları izleyerek bunu doğrulayabilirsiniz.

Not

Bu makaledeki komutları Azure Cloud Shell'den de çalıştırabilirsiniz. Bu yaklaşım, Docker hariç tüm önkoşul araçlarını önceden yüklenmiş olarak içerir.

  • Bu kılavuzdaki komutları yerel olarak çalıştırıyorsanız (Azure Cloud Shell yerine):
    • Unix benzeri işletim sistemi yüklü bir yerel makine hazırlayın (örneğin, Ubuntu, Azure Linux, macOS, Linux için Windows Alt Sistemi).
    • Bir Java SE uygulaması, sürüm 17 veya üzeri yükleyin. (örneğin, Eclipse Open J9).
    • Maven 3.5.0 veya üzerini yükleyin.
    • İşletim sisteminiz için Docker'ı yükleyin.
  • Size abonelikteki Owner rol veya Contributor ve User Access Administrator rolleri atandığından emin olun. Bir kullanıcı veya grup için rol atamalarını listeleme bölümünde yer alan adımları izleyerek bunu doğrulayabilirsiniz.

Portalı kullanarak AKS dağıtımında Özgürlük oluşturma

Aşağıdaki adımlar AKS'de Liberty çalışma zamanı oluşturma konusunda size yol gösterir. Bu adımları tamamladıktan sonra kapsayıcılı uygulamanızı dağıtmak için bir Container Registry örneğiniz ve bir AKS kümeniz olur.

  1. Azure portalına gidin. Sayfanın üst kısmındaki arama kutusuna AKS'de IBM Liberty yazın. Öneriler görüntülendiğinde Market bölümünde yalnızca ve yalnızca birini seçin.

    İsterseniz doğrudan teklife gidebilirsiniz.

  2. Oluştur'u belirleyin.

  3. Temel Bilgiler bölmesinde:

    1. Yeni bir kaynak grubu oluşturma. Kaynak gruplarının bir abonelik içinde benzersiz olması gerektiğinden, benzersiz bir ad seçin. Benzersiz adlar kullanmanın kolay bir yolu, baş harflerinizin, bugünün tarihinin ve bazı tanımlayıcıların (örneğin, ejb0913-java-liberty-project-rg) bir bileşimini kullanmaktır.

    2. Bölge için Doğu ABD'yi seçin.

    3. Kümenin ve veritabanının kaynak grubu adları için kabuğunuzda bir ortam değişkeni oluşturun:

      export RESOURCE_GROUP_NAME=<your-resource-group-name>
      

  4. İleri'yi seçin. AKS bölmesinde, dağıtımın yenilerini oluşturmasına neden olmak yerine isteğe bağlı olarak mevcut bir AKS kümesini ve Container Registry örneğini seçebilirsiniz. Bu seçenek, Azure Mimari Merkezi'nde gösterildiği gibi sepet desenini kullanmanıza olanak tanır. AKS düğüm havuzundaki sanal makinelerin boyutu ve sayısı için ayarları da ayarlayabilirsiniz.

    Bu makalenin amaçları doğrultusunda, tüm varsayılan değerleri bu bölmede tutması gerekir.

  5. İleri'yi seçin. Yük Dengeleme bölmesinde, Azure Uygulaması Lication Gateway'e Bağlan yanındaki Evet'i seçin. Bu bölümde, aşağıdaki dağıtım seçeneklerini özelleştirebilirsiniz:

    • Sanal ağ ve Alt Ağ için isteğe bağlı olarak dağıtımın kaynakları yerleştirdiği sanal ağı ve alt ağı özelleştirebilirsiniz. Kalan değerleri varsayılan değerlerinden değiştirmeniz gerekmez.

    • TLS/SSL sertifikası için Azure Uygulaması lication Gateway'den TLS/SSL sertifikası sağlayabilirsiniz. Teklifin otomatik olarak imzalanan bir sertifika oluşturmasına neden olmak için değerleri varsayılan değerlerinde bırakın.

      Otomatik olarak imzalanan sertifikayla üretime gitmeyin. Otomatik olarak imzalanan sertifikalar hakkında daha fazla bilgi için bkz . Uygulamanızın kimliğini doğrulamak için otomatik olarak imzalanan ortak sertifika oluşturma.

    • Yapışkan oturumlar olarak da bilinen Tanımlama bilgisi tabanlı bennizimi etkinleştir'i seçebilirsiniz. Bu makalede yapışkan oturumlar kullanılır, bu nedenle bu seçeneği belirlediğinizden emin olun.

  6. İleri'yi seçin. İşleç ve uygulama bölmesinde, bu makalede tüm varsayılanlar kullanılır. Ancak, aşağıdaki dağıtım seçeneklerini özelleştirebilirsiniz:

    • Ibm tarafından desteklenen? seçeneği için Evet'i seçerek WebSphere Liberty Operator'ı dağıtabilirsiniz. Varsayılan Hayır ayarından çıkılırsa Open Liberty İşleci dağıtılır.
    • Uygulama dağıtın mı? seçeneği için Evet'i seçerek seçtiğiniz işleç için bir uygulama dağıtabilirsiniz. Varsayılan Hayır ayarından çıkılması herhangi bir uygulama dağıtmaz.
  7. Seçtiğiniz seçenekleri doğrulamak için Gözden geçir + oluştur'u seçin. Gözden Geçir + oluştur bölmesinde, Doğrulama geçtikten sonra Oluştur kullanılabilir hale geldi ifadesini gördüğünüzde seçin.

    Dağıtım 20 dakika kadar sürebilir. Dağıtımın tamamlanmasını beklerken, Azure SQL Veritabanı örneği oluşturma bölümündeki adımları izleyebilirsiniz. Bu bölümü tamamladıktan sonra buraya geri dönün ve devam edin.

Dağıtımdan seçilen bilgileri yakalama

Dağıtım devam ediyor bölmesinden taşındıysanız, aşağıdaki adımlarda bu bölmeye nasıl geri döndüğünüz gösterilir. Dağıtımınız tamamlandı ifadesini gösteren bölmedeyseniz yeni oluşturulan kaynak grubuna gidin ve üçüncü adıma geçin.

  1. Herhangi bir portal sayfasının köşesinde menü düğmesini ve ardından Kaynak grupları'nı seçin.

  2. Herhangi bir alan için Filtre uygula metnini içeren kutuya, daha önce oluşturduğunuz kaynak grubunun ilk birkaç karakterini girin. Önerilen kuralı izlediyseniz, baş harflerinizi girin ve uygun kaynak grubunu seçin.

  3. Kaynak grubundaki kaynak listesinde, Tür değeri Container registry olan kaynağı seçin.

  4. Gezinti bölmesindeki Ayarlar altında Erişim anahtarları'nı seçin.

  5. Oturum açma sunucusu, Kayıt defteri adı, Kullanıcı Adı ve Parola değerlerini bir kenara kaydedin. Değeri sistem panosuna kopyalamak için her alanın yanındaki kopyala simgesini kullanabilirsiniz.

  6. Kaynakları dağıtdığınız kaynak grubuna geri dönün.

  7. Ayarlar bölümünde Dağıtımlar'ı seçin.

  8. Listede en alttaki dağıtımı seçin. Dağıtım adı değeri teklifin yayımcı kimliğiyle eşleşir. dizesini ibmiçerir.

  9. Gezinti bölmesinde Çıkışlar'ı seçin.

  10. Önceki değerlerle aynı kopyalama tekniğini kullanarak aşağıdaki çıkışların değerlerini bir kenara kaydedin:

    • cmdToConnectToCluster
    • appDeploymentTemplateYaml dağıtım bir uygulama içermiyorsa. Başka bir ifadeyle, Market teklifini dağıttığınızda Uygulama dağıtmak için Hayır'ı seçtiniz.
    • appDeploymentYaml dağıtım bir uygulama içermiyorsa. Yani, Uygulama dağıtılacak mı? için Evet'i seçtiniz.

    veya appDeploymentYaml değerini appDeploymentTemplateYaml bir Bash kabuğuna yapıştırın, öğesini ekleyip | grep secretNamekomutunu çalıştırın.

    Bu komutun çıktısı, gibi - secretName: secret785e2cgiriş TLS gizli dizisi adıdır. Değeri bir kenara secretName kaydedin.

Bu değerleri bu makalenin ilerleyen bölümlerinde kullanacaksınız. Çıkışların diğer birkaç yararlı komutu listelediğini unutmayın.

Azure SQL Veritabanı örneği oluşturma

Uygulamanızla kullanmak üzere tek bir Azure SQL Veritabanı veritabanı oluşturmak için Hızlı Başlangıç: Azure SQL Veritabanı'de tek bir veritabanı oluşturma bölümünde yer alan adımları izleyin. Aşağıdaki farklara dikkatle dikkat edin:

  • Temel bilgiler adımında Kaynak grubu, Veritabanı adı, sunucu-adı.database.windows.net<>, Sunucu yöneticisi oturum açma bilgileri ve Parola değerlerini not edin. Bu makale, veritabanı Kaynak grubu değerini olarak <db-resource-group>ifade eder.

  • Ağ adımında Bağlan ivity yöntemini Genel uç nokta olarak ayarlayın, Azure hizmetlerinin ve kaynaklarının bu sunucuya erişmesine izin ver seçeneğini Evet olarak ayarlayın ve Geçerli istemci IP adresi ekle seçeneğini Evet olarak ayarlayın.

    Bağlan ivity yöntemi ve Güvenlik duvarı kuralları ayarlarının vurgulandığı SQL Veritabanı oluştur sayfasının Ağ sekmesini gösteren Azure portalının ekran görüntüsü.

Not

Bu veritabanı için seçtiğiniz sunucusuz işlem katmanı, işlem yapılmadığı dönemlerde veritabanını uyku moduna alarak tasarruf sağlar. Uygulama başlatıldığında veritabanı uykudaysa örnek uygulama başarısız olur.

Veritabanını uyandırmaya zorlamak için sorgu düzenleyicisini kullanarak bir sorgu çalıştırabilirsiniz. Veritabanını sorgulama'daki adımları izleyin. Aşağıda örnek bir sorgu verilmişti: SELECT * FROM COFFEE;.

Veritabanı için kaynak grubu adı için kabuğunuzda bir ortam değişkeni oluşturun:

export DB_RESOURCE_GROUP_NAME=<db-resource-group>

Artık veritabanını ve AKS kümesini oluşturduğunuza göre, Open Liberty uygulamanızı barındırmak için AKS'yi hazırlamaya devam edebilirsiniz.

Örnek uygulamayı yapılandırma ve dağıtma

Liberty çalışma zamanında örnek uygulamayı dağıtmak için bu bölümdeki adımları izleyin. Bu adımlarda Maven kullanılır.

Uygulamayı gözden geçirin

Bu makalenin örnek kodunu kopyalayın. Örnek GitHub'dadır.

Depoda birkaç örnek vardır. Bu makalede java-app/ kullanılır. Örneği almak için aşağıdaki komutları çalıştırın:

git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
export BASE_DIR=$PWD
git checkout 20240220

"Ayrılmış HEAD" durumunda olma hakkında bir ileti görürseniz, bunu güvenle yoksayabilirsiniz. İleti yalnızca bir etiketi kullanıma aldığınız anlamına gelir.

Uygulamanın dosya yapısı aşağıdadır:

java-app
├─ src/main/
│  ├─ aks/
│  │  ├─ db-secret.yaml
│  │  ├─ openlibertyapplication-agic.yaml
│  │  ├─ openlibertyapplication.yaml
│  │  ├─ webspherelibertyapplication-agic.yaml
│  │  ├─ webspherelibertyapplication.yaml
│  ├─ docker/
│  │  ├─ Dockerfile
│  │  ├─ Dockerfile-wlp
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ pom.xml

Java, resources ve webapp dizinleri örnek uygulamanın kaynak kodunu içerir. Kod adlı jdbc/JavaEECafeDBbir veri kaynağı bildirir ve kullanır.

aks dizininde beş dağıtım dosyası vardır:

  • db-secret.xml: Veritabanı bağlantısı kimlik bilgileriyle Kubernetes Gizli Dizileri oluşturmak için bu dosyayı kullanın.
  • openlibertyapplication-agic.yaml: AgIC ile Open Liberty uygulamasını dağıtmak için bu dosyayı kullanın. Bu makalede, bu dosyayı kullandığınız varsayılır.
  • openlibertyapplication.yaml: Open Liberty uygulamasını AGIC olmadan dağıtmak istiyorsanız bu dosyayı kullanın.
  • webspherelibertyapplication-agic.yaml: Bu makalenin önceki bölümlerinde WebSphere Liberty Operatörünü dağıttıysanız AGIC ile WebSphere Liberty uygulamasını dağıtmak için bu dosyayı kullanın.
  • webspherelibertyapplication.yaml: Bu makalenin başlarında WebSphere Liberty Operatörünü dağıttıysanız AGIC olmadan WebSphere Liberty uygulamasını dağıtmak için bu dosyayı kullanın.

Docker dizininde, uygulama görüntüsünü oluşturmak için iki dosya vardır:

  • Dockerfile: Bu makalede Open Liberty ile uygulama görüntüsünü oluşturmak için bu dosyayı kullanın.
  • Dockerfile-wlp: Bu makalenin önceki bölümlerinde WebSphere Liberty İşleci dağıttıysanız WebSphere Liberty ile uygulama görüntüsünü derlemek için bu dosyayı kullanın.

Liberty/config dizininde, Open Liberty ve WebSphere Liberty kümesi için veritabanı bağlantısını yapılandırmak üzere server.xml dosyasını kullanırsınız.

Projeyi derleme

Artık gerekli özelliklere sahip olduğunuz için uygulamayı oluşturabilirsiniz. Projenin POM dosyası ortamdan birçok değişken okur. Maven derlemesinin bir parçası olarak, bu değişkenler src/main/aks içinde bulunan YAML dosyalarındaki değerleri doldurmak için kullanılır. İsterseniz Maven dışında uygulamanız için benzer bir şey yapabilirsiniz.

cd $BASE_DIR/java-app
# The following variables are used for deployment file generation into the target.
export LOGIN_SERVER=<Azure-Container-Registry-Login-Server-URL>
export REGISTRY_NAME=<Azure-Container-Registry-name>
export USER_NAME=<Azure-Container-Registry-username>
export PASSWORD='<Azure-Container-Registry-password>'
export DB_SERVER_NAME=<server-name>.database.windows.net
export DB_NAME=<database-name>
export DB_USER=<server-admin-login>@<server-name>
export DB_PASSWORD='<server-admin-password>'
export INGRESS_TLS_SECRET=<ingress-TLS-secret-name>

mvn clean install

(İsteğe bağlı) Projenizi yerel olarak test etme

Azure'a dağıtmadan önce projeyi yerel olarak çalıştırın ve test edin. Kolaylık sağlamak için bu makalede kullanılır liberty-maven-plugin. hakkında liberty-maven-plugindaha fazla bilgi edinmek için Open Liberty makalesine bakın Maven ile web uygulaması oluşturma.

Uygulamanız için, yerel geliştirme ortamınız gibi başka bir mekanizma kullanarak benzer bir şey yapabilirsiniz. Ayrıca kapsayıcılarla geliştirme için tasarlanan liberty:devc seçeneği de kullanabilirsiniz. Hakkında daha fazla bilgiyi liberty:devc Open Liberty belgelerinde bulabilirsiniz.

  1. kullanarak liberty:runuygulamayı başlatın. liberty:run ayrıca daha önce tanımladığınız ortam değişkenlerini kullanır.

    cd $BASE_DIR/java-app
    mvn liberty:run
    
  2. Test başarılı olursa, komut çıkışında şuna [INFO] [AUDIT] CWWKZ0003I: The application javaee-cafe updated in 1.930 seconds benzer bir ileti görüntülenir. Tarayıcınızda adresine http://localhost:9080/ gidin ve uygulamanın erişilebilir olduğunu ve tüm işlevlerin çalıştığını doğrulayın.

  3. Durdurmak için Ctrl+C'yi seçin.

AKS dağıtımı için görüntü oluşturma

Artık görüntüyü oluşturmak için komutunu çalıştırabilirsiniz docker build :

cd $BASE_DIR/java-app/target

docker buildx build --platform linux/amd64 -t javaee-cafe:v1 --pull --file=Dockerfile .

(İsteğe bağlı) Docker görüntüsünü yerel olarak test edin

Azure'a dağıtmadan önce Docker görüntüsünü yerel olarak test etmek için aşağıdaki adımları kullanın:

  1. Aşağıdaki komutu kullanarak görüntüyü çalıştırın. Bu komut, daha önce tanımladığınız ortam değişkenlerini kullanır.

    docker run -it --rm -p 9080:9080 \
       -e DB_SERVER_NAME=${DB_SERVER_NAME} \
       -e DB_NAME=${DB_NAME} \
       -e DB_USER=${DB_USER} \
       -e DB_PASSWORD=${DB_PASSWORD} \
       javaee-cafe:v1
    
  2. Kapsayıcı başlatıldıktan sonra, uygulamaya erişmek için tarayıcınızda adresine gidin http://localhost:9080/ .

  3. Durdurmak için Ctrl+C'yi seçin.

Görüntüyü Azure Container Registry'ye yükleme

Yerleşik görüntüyü teklifte oluşturduğunuz Container Registry örneğine yükleyin:

docker tag javaee-cafe:v1 ${LOGIN_SERVER}/javaee-cafe:v1
docker login -u ${USER_NAME} -p ${PASSWORD} ${LOGIN_SERVER}
docker push ${LOGIN_SERVER}/javaee-cafe:v1

Uygulamayı dağıtma ve test edin

Uygulamayı dağıtmak ve test etmek için aşağıdaki adımları kullanın:

  1. AKS kümesine Bağlan.

    değerini cmdToConnectToCluster bir kabuğa yapıştırın ve komutunu çalıştırın.

  2. Veritabanı gizli dizisini uygulama:

    cd $BASE_DIR/java-app/target
    kubectl apply -f db-secret.yaml
    

    Çıkış secret/db-secret-sql created olur.

  3. Dağıtım dosyasını uygulayın:

    kubectl apply -f openlibertyapplication-agic.yaml
    
  4. Aşağıdaki komutu kullanarak tüm podların başarıyla yeniden başlatılmasını bekleyin:

    kubectl get pods --watch
    

    Aşağıdaki örneğe benzer çıkış, tüm podların çalıştığını gösterir:

    NAME                                       READY   STATUS    RESTARTS   AGE
    javaee-cafe-cluster-agic-67cdc95bc-2j2gr   1/1     Running   0          29s
    javaee-cafe-cluster-agic-67cdc95bc-fgtt8   1/1     Running   0          29s
    javaee-cafe-cluster-agic-67cdc95bc-h47qm   1/1     Running   0          29s
    
  5. Sonuçları doğrulayın:

    1. Uygulamayla dağıtılan giriş kaynağının adresini alın:

      kubectl get ingress
      

      Çıkıştan ADDRESS değerini kopyalayın. Bu değer, dağıtılan Application Gateway örneğinin ön uç genel IP adresidir.

    2. https://<ADDRESS> Uygulamayı test etmek için adresine gidin. Size kolaylık sağlamak için bu kabuk komutu, değerini doğrudan tarayıcıya yapıştırabileceğiniz bir ortam değişkeni oluşturur:

      export APP_URL=https://$(kubectl get ingress | grep javaee-cafe-cluster-agic-ingress | cut -d " " -f14)/
      echo $APP_URL
      

      Web sayfası doğru şekilde işlenmiyorsa veya hata 502 Bad Gateway döndürüyorsa, uygulama arka planda çalışmaya devam ediyordur. Birkaç dakika bekleyin ve yeniden deneyin.

Kaynakları temizleme

Azure ücretlerinden kaçınmak için gereksiz kaynakları temizlemeniz gerekir. Kümeye artık ihtiyacınız kalmadığında az group delete komutunu kullanarak kaynak grubunu, kapsayıcı hizmetini, kapsayıcı kayıt defterini, veritabanını ve tüm ilgili kaynakları kaldırın:

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

Sonraki adımlar

Aşağıdaki başvurulardan daha fazla bilgi edinebilirsiniz: