Aracılığıyla paylaş


Azure Container Apps'te Open Liberty ile Java uygulaması dağıtma

Bu makalede, Open Liberty'yi Azure Container Apps'te nasıl çalıştırabileceğiniz gösterilmektedir. Bu makalede aşağıdaki etkinlikleri gerçekleştirebilirsiniz:

  • Open Liberty çalışma zamanında Java, Java Enterprise Edition (EE), Jakarta EE veya MicroProfile uygulamanızı çalıştırın.
  • Liberty kapsayıcı görüntülerini kullanarak uygulama Docker görüntüsünü oluşturun.
  • Kapsayıcılı uygulamayı Azure Container Apps'e dağıtın.

Open Liberty hakkında daha fazla bilgi için Open Liberty proje sayfasınabakın. Bu makale, dağıtıma hızlı bir şekilde başlamanıza yardımcı olmak için tasarlanmıştır. Üretime geçmeden önce Tuning Liberty'yi keşfetmeniz gerekir.

Azure üzerinde Java çözümleri geliştiren mühendislik ekibiyle geçiş senaryolarınız üzerinde yakından çalışmak veya geri bildirimde bulunmak istiyorsanız, Azure geçişi hakkında bu kısa anketi doldurup iletişim bilgilerinizi ekleyiniz. Program yöneticileri, mimarlar ve mühendislerden oluşan ekip, yakın işbirliği başlatmak için sizinle hemen iletişime geçecektir.

Önkoşullar

  • Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • Ubuntu, macOS veya Linux için Windows Alt Sistemi gibi Windows veya Unix benzeri işletim sistemi yüklü yerel bir makine hazırlayın.
  • Azure CLI komutlarını çalıştırmak için Azure CLI 2.62.0 veya üzerini yükleyin.
    • İstenirse 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 ve yönetme.
    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version çalıştırın. En son sürüme yükseltmek için az upgradeçalıştırın.
  • Java Standard Edition (SE) sürüm 17'yi yükleyin, örneğin Microsoft'un OpenJDK derlemesi.
  • Maven 3.9.8 veya üzerini yükleyin.
  • Git'in yüklü olduğundan emin olun.

Azure'da oturum açma

az login komutunu kullanarak Azure aboneliğinizde oturum açın ve ekrandaki yönergeleri izleyin.

az login

Not

PowerShell'de Azure CLI komutlarının çoğunu Bash ile aynı şekilde çalıştırabilirsiniz. Fark yalnızca değişkenler kullanılırken vardır. Aşağıdaki bölümlerde, fark gerektiğinde farklı sekmelerde ele alınıyor.

Azure kimlik bilgilerinizle ilişkilendirilmiş birden çok Azure kiracınız varsa, hangi kiracıda oturum açmak istediğinizi belirtmeniz gerekir. Kiracıyı --tenant seçeneğini kullanarak belirtebilirsiniz. Örneğin, az login --tenant contoso.onmicrosoft.com.

Tek bir kiracıda birden çok aboneliğiniz varsa, az account set --subscription <subscription-id>kullanarak kullanmayı planladığınız abonelikle oturum açtığınızdan emin olun.

Kaynak grubu oluşturma

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

java-liberty-project konumundaki az group create komutunu kullanarak eastus2 adlı bir kaynak grubu oluşturun. Bu kaynak grubu daha sonra Azure Container Registry (ACR) örneğini ve Azure Container Apps örneğini oluşturmak için kullanılır.

export RESOURCE_GROUP_NAME=java-liberty-project
export LOCATION=eastus2
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION

ACR örneği oluşturma

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

Not

Bu makalede, Container Registry için önerilen parolasız kimlik doğrulama mekanizması kullanılır. Kullanıcı adı ve parolayı almak için docker login kullandıktan sonra az acr credential show ile kullanıcı adı ve parola kullanmak mümkündür. Kullanıcı adı ve parola kullanmak, parolasız kimlik doğrulamasından daha az güvenlidir.

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

Kısa bir süre sonra aşağıdaki satırları içeren bir JSON çıkışı görmeniz gerekir:

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

Ardından, Container Registry örneğinin oturum açma sunucusunu almak için aşağıdaki komutu kullanın. Uygulama görüntüsünü daha sonra Azure Container Apps'e dağıtırken bu değere ihtiyacınız vardır.

export ACR_LOGIN_SERVER=$(az acr show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $REGISTRY_NAME \
    --query 'loginServer' \
    --output tsv)

Ortam oluşturun

Azure Container Apps'teki bir ortam, bir grup kapsayıcı uygulaması çevresinde güvenli bir sınır oluşturur. Aynı ortama dağıtılan Container Apps, ortak bir sanal ağa dağıtılır ve günlüklerini tek bir Log Analytics çalışma alanına yazar. Ortam oluşturmak için az containerapp env create komutunu kullanın. Aşağıdaki örnek, youracaenvnameadlı bir ortam oluşturur:

export ACA_ENV=youracaenvname
az containerapp env create \
    --resource-group $RESOURCE_GROUP_NAME \
    --location $LOCATION \
    --name $ACA_ENV

Uzantı yüklemeniz istenirse Y yanıtlayın.

Kısa bir süre sonra aşağıdaki satırları içeren bir JSON çıkışı görmeniz gerekir:

"provisioningState": "Succeeded",
"type": "Microsoft.App/managedEnvironments"
"resourceGroup": "java-liberty-project",

Azure SQL Veritabanı'nda tek bir veritabanı oluşturma

Bu bölümde, uygulamanızla kullanmak üzere Azure SQL Veritabanı'nda tek bir veritabanı oluşturacaksınız.

İlk olarak, veritabanıyla ilgili ortam değişkenlerini ayarlamak için aşağıdaki komutları kullanın. <your-unique-sql-server-name> değerini Azure SQL Veritabanı sunucunuz için benzersiz bir adla değiştirin.

export SQL_SERVER_NAME=<your-unique-sql-server-name>
export DB_NAME=demodb

Ardından, Azure SQL Veritabanı'nda tek bir veritabanı oluşturmak ve geçerli oturum açmış kullanıcıyı Microsoft Entra yöneticisi olarak ayarlamak için aşağıdaki komutları kullanın. Daha fazla bilgi için bkz. Hızlı Başlangıç: Tek veritabanı oluşturma - Azure SQL Veritabanı.

export ENTRA_ADMIN_NAME=$(az account show --query user.name --output tsv)

az sql server create \
    --name $SQL_SERVER_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --enable-ad-only-auth \
    --external-admin-principal-type User \
    --external-admin-name $ENTRA_ADMIN_NAME \
    --external-admin-sid $(az ad signed-in-user show --query id --output tsv)
az sql db create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $SQL_SERVER_NAME \
    --name $DB_NAME \
    --edition GeneralPurpose \
    --compute-model Serverless \
    --family Gen5 \
    --capacity 2

Ardından, yerel makinenizin daha sonra yerel test için veritabanına bağlanmasına izin vermek üzere yerel IP adresini Azure SQL Veritabanı sunucusu güvenlik duvarı kurallarına eklemek için aşağıdaki komutları kullanın.

export AZ_LOCAL_IP_ADDRESS=$(curl -s https://whatismyip.akamai.com)
az sql server firewall-rule create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $SQL_SERVER_NAME \
    --name AllowLocalIP \
    --start-ip-address $AZ_LOCAL_IP_ADDRESS \
    --end-ip-address $AZ_LOCAL_IP_ADDRESS

Not

Güvenlikle ilgili dikkat edilmesi gerekenler için SQL kimlik doğrulaması devre dışı bırakılmış bir Azure SQL sunucusu oluşturursunuz. Sunucuda kimlik doğrulaması yapmak için yalnızca Microsoft Entra Kimliği kullanılır. SQL kimlik doğrulamasını etkinleştirmeniz gerekiyorsa bkz. az sql server create.

Uygulama görüntüsünü yapılandırma ve oluşturma

Liberty uygulamanızı Azure Container Apps'te dağıtmak ve çalıştırmak için Open Liberty kapsayıcı görüntülerinikullanarak uygulamanızı Docker görüntüsü olarak kapsayıcıya ekleyin.

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 kılavuz için örnek kodu hazırlamak için aşağıdaki komutları kullanın. Örnek GitHub'dadır.

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

Eğer detached HEAD durumu hakkında bir mesaj görürseniz, bu mesajı yoksayın. Sadece bir etiketi incelediğiniz anlamına gelir.

Bu makalede java-app kullanılır. Uygulamanın önemli dosyalarının dosya yapısı aşağıdadır:

java-app
├─ src/main/
│  ├─ liberty/config/
│  │  ├─ server.xml
│  ├─ java/
│  ├─ resources/
│  ├─ webapp/
├─ Dockerfile
├─ pom.xml
├─ pom-azure-identity.xml

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

java-app kök dizininde, Open Liberty ile uygulama görüntüsünü oluşturmak için bir Dockerfile bulunur.

Liberty/config dizininde ,server.xml dosyası Open Liberty için veritabanı bağlantısını yapılandırmak için kullanılır. Azure SQL Veritabanı'na bağlanmak için kullanılan bir değişken azure.sql.connectionstring tanımlar.

pom.xml dosyası, projenin yapılandırma bilgilerini içeren Maven proje nesne modeli (POM) dosyasıdır. pom-azure-identity.xml dosyası, Microsoft Entra Id kullanarak Azure hizmetlerinde kimlik doğrulaması yapmak için kullanılan azure-identity bağımlılığını bildirir.

Not

Bu örnek, güvenlik konuları için önerilen Microsoft Entra kimlik doğrulamasını kullanarak Azure SQL Veritabanı'na kimlik doğrulaması yapmak için azure-identity kitaplığını kullanır. Liberty uygulamanızda SQL kimlik doğrulamasını kullanmanız gerekiyorsa bkz. JDBCile ilişkisel veritabanı bağlantıları .

Projeyi inşa et

Uygulamayı derlemek için aşağıdaki komutları kullanın:

cd $BASE_DIR/java-app
mvn clean install
mvn dependency:copy-dependencies -f pom-azure-identity.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources

Derleme başarılı olursa, derlemenizin sonunda aşağıdakine benzer bir çıktı görmeniz gerekir.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22.651 s
[INFO] Finished at: 2023-10-26T18:58:40-04:00
[INFO] ------------------------------------------------------------------------

Bu çıkışı görmüyorsanız devam etmeden önce sorunu giderin ve çözün.

Projenizi yerel olarak test etme

Artık Azure'a dağıtmadan önce projeyi yerel olarak çalıştırmak ve test etmek için aşağıdaki adımları kullanabilirsiniz. Kolaylık sağlamak için kullanın liberty-maven-plugin. Daha fazla bilgi edinmek için liberty-maven-plugin hakkında, bkz Maven ile web uygulaması oluşturma. Uygulamanız için, yerel IDE'niz gibi başka bir mekanizma kullanarak benzer bir şey yapabilirsiniz.

Not

"Sunucusuz" bir veritabanı dağıtımı seçtiyseniz SQL veritabanınızın duraklatma moduna girmediğini doğrulayın. Doğrulamayı gerçekleştirmenin bir yolu, Hızlı Başlangıç: Azure SQL Veritabanısorgulamak için Azure portal sorgu düzenleyicisini (önizleme) kullanma başlığı altında açıklandığı gibi veritabanı sorgu düzenleyicisinde oturum açmaktır.

  1. Uygulamayı liberty:run kullanarak başlatın.

    cd $BASE_DIR/java-app
    
    # The value of environment variable AZURE_SQL_CONNECTIONSTRING is read by the configuration variable azure.sql.connectionstring in server.xml.
    export AZURE_SQL_CONNECTIONSTRING="jdbc:sqlserver://$SQL_SERVER_NAME.database.windows.net:1433;databaseName=$DB_NAME;authentication=ActiveDirectoryDefault"
    mvn liberty:run
    
  2. Uygulamanın beklendiği gibi çalıştığını doğrulayın. Başarılı olursa, komut çıkışında [INFO] [AUDIT ] CWWKZ0001I: Application javaee-cafe started in 11.086 seconds. benzer bir ileti görmeniz gerekir. Uygulamanın erişilebilir olduğunu ve tüm işlevlerin çalıştığını doğrulamak için tarayıcınızda http://localhost:9080/ gidin.

  3. Durdurmak için Ctrl+C'ye basın. Toplu işi sonlandırmanız istenirse Y seçin.

İşiniz bittiğinde, aşağıdaki komutu kullanarak yerel IP adresinizin Azure SQL Veritabanı'na erişmesine izin veren güvenlik duvarı kuralını silin:

az sql server firewall-rule delete \
    --resource-group $RESOURCE_GROUP_NAME \
    --server $SQL_SERVER_NAME \
    --name AllowLocalIP

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

Şimdi aşağıdaki örnekte gösterildiği gibi görüntüyü oluşturmak için az acr build komutunu çalıştırabilirsiniz:

cd $BASE_DIR/java-app

az acr build \
    --registry ${REGISTRY_NAME} \
    --image javaee-cafe:v1 \
    .

az acr build komutu Dockerfile içinde belirtilen yapıtları Container Registry örneğine yükler, görüntüyü derler ve Container Registry örneğinde depolar.

Uygulamayı Azure Container Apps'e dağıtma

Görüntüyü ACR'den çektikten sonra uygulamayı çalıştırmak üzere bir Azure Container Apps örneği oluşturmak için aşağıdaki komutları kullanın. Bu örnek, youracainstancenameadlı bir Azure Container Apps örneği oluşturur:

export ACA_NAME=youracainstancename
az containerapp create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $ACA_NAME \
    --image ${ACR_LOGIN_SERVER}/javaee-cafe:v1 \
    --environment $ACA_ENV \
    --registry-server $ACR_LOGIN_SERVER \
    --registry-identity system \
    --target-port 9080 \
    --ingress 'external' \
    --min-replicas 1

Başarılı çıkış, özelliğini "type": "Microsoft.App/containerApps"içeren bir JSON nesnesidir.

Ardından, aşağıdaki adımları kullanarak Service Connector'ı kullanarak Azure SQL Veritabanı sunucusunu kapsayıcı uygulamasına bağlayın:

  1. Tarayıcınızda Azure portalını açın ve önceki adımda oluşturduğunuz Azure Container Apps örneğine gidin.
  2. Gezinti bölmesinde, Ayarlar>Hizmet Bağlayıcısı (önizleme) seçin.
  3. Oluştur'i seçin. Bağlantı oluştur Bağlantı oluştur açılan penceresini görmelisiniz.
  4. Basic bölmesinde, Hizmet türü için SQL Veritabanı seçeneğini seçin. İstemci türü için Java'yı seçin. Diğer alanları varsayılan değerlerinde bırakın, ardından İleri: Kimlik Doğrulaması'yı seçin.
  5. Kimlik Doğrulama bölmesinde, Kimlik Doğrulama türü için Sistem tarafından atanan yönetilen kimlik seçeneğini seçin, ardından İleri: Ağ seçeneğine tıklayın.
  6. bölmesinde İleri: Gözden Geçir ve Oluştur'u seçin.
  7. İncele + oluştur bölmesinde doğrulamanın geçmesini bekleyin ve ardından Cloud Shell'de Oluştur'u seçin. Cloud Shell açılır ve ardından bağlantıyı oluşturmak için komutları yürütür. Komutların tamamlanmasını bekleyin ve ardından Cloud Shell'i kapatın.

Not

Hizmet Bağlayıcısı, kapsayıcı uygulamasında AZURE_SQL_CONNECTIONSTRINGdeğerini içeren ve Azure SQL Veritabanı'na parolasız bir bağlantı dizesi olan bir gizli dizi oluşturur. Daha fazla bilgi için Azure SQL Veritabanı'nı Service Connector ile Tümleştirmekullanıcı tarafından atanan yönetilen kimlik bölümündeki örnek değere bakın.

Uygulamayı test etme

Uygulamaya erişmek üzere tam URL almak için aşağıdaki komutu kullanın:

echo https://$(az containerapp show \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $ACA_NAME \
    --query properties.configuration.ingress.fqdn \
    --output tsv)

Uygulamaya erişmek ve uygulamayı test etmek için URL'ye bir web tarayıcısı açın. Aşağıdaki ekran görüntüsünde çalışan uygulama gösterilmektedir:

Azure Container Apps'te başarıyla dağıtılan Java liberty uygulamasını gösteren ekran görüntüsü.

Kaynakları temizleme

Azure ücretlerinden kaçınmak için gereksiz kaynakları temizlemeniz gerekir. Küme artık gerekli olmadığında kaynak grubunu, kapsayıcı kayıt defterini, kapsayıcı uygulamalarını, veritabanı sunucusunu ve tüm ilgili kaynakları kaldırmak için az group delete komutunu kullanı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:

WebSphere ürünlerini Azure'da çalıştırma seçeneklerini keşfetmek için bkz . Azure'da WebSphere ürün ailesini çalıştırmaya yönelik çözümler nelerdir?