Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu hızlı başlangıçta Kapsayıcılı Go web uygulamasını Azure Container Apps'e dağıtmayı öğreneceksiniz.
Azure Container Apps , karmaşık bulut altyapısını veya karmaşık kapsayıcı düzenleyicilerini yönetmeden herhangi bir kapsayıcıda paketlenmiş uygulama kodunu çalıştırmanıza olanak tanır. Ayrıca çalışma zamanı veya programlama modeliyle ilgili endişelenme gereksinimini ortadan kaldırır. Azure Container Apps'in yaygın kullanım alanları şunlardır: API uç noktalarını dağıtma, arka plan işleme uygulamalarını barındırma, olay temelli işlemeyi işleme ve mikro hizmetleri çalıştırma.
Docker görüntüsü oluşturma, bu görüntüyü Azure Container Registry'ye dağıtma ve Azure Container Apps'e Go web uygulaması dağıtma adımlarını izlemek için bu öğreticiyi izleyin.
Önkoşullar
- Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Go installed: Sürüm 1.18 veya üzeri
- Docker Desktop
Ayarlama
CLI'dan Azure'da oturum açmak için az login komutunu çalıştırın ve istemleri izleyerek kimlik doğrulama işlemini tamamlayın.
az login
CLI'nın en son sürümünü çalıştırdığınızdan emin olmak için az upgrade komutunu çalıştırın.
az upgrade
Ardından CLI için Azure Container Apps uzantısını yükleyin veya güncelleştirin.
Azure CLI'da komutları çalıştırdığınızda az containerapp eksik parametrelerle ilgili hatalar alırsanız, Azure Container Apps uzantısının en son sürümünün yüklü olduğundan emin olun.
az extension add --name containerapp --upgrade
Not
Mayıs 2024'den itibaren Azure CLI uzantıları artık önizleme özelliklerini varsayılan olarak etkinleştirmez. Container Apps önizleme özelliklerine erişmek için ile --allow-preview trueContainer Apps uzantısını yükleyin.
az extension add --name containerapp --upgrade --allow-preview true
Geçerli uzantı veya modül yüklendikten sonra , Microsoft.Appve Microsoft.ContainerRegistry ad alanlarını kaydedinMicrosoft.OperationalInsights.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.ContainerRegistry
az provider register --namespace Microsoft.OperationalInsights
Not
Azure Container Apps kaynakları Microsoft.Web ad alanından Microsoft.App ad alanına geçirildi. Daha fazla bilgi için bkz. Mart 2022'de Microsoft.Web'den Microsoft.App'a ad alanı geçişi.
Örnek uygulamayı indirme
Bu öğreticiyi izlemek için kapsayıcılı hale getirmek için örnek bir uygulama gerekir. msdocs-go-webapp-quickstart GitHub deposu örnek bir Go web uygulaması sağlar. Örnek uygulamayı yerel iş istasyonunuza indirin veya kopyalayın.
git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git
cd msdocs-go-webapp-quickstart
Azure Container Registry oluşturma
Azure Container Registry kapsayıcı görüntülerini oluşturmanıza, depolamanıza ve yönetmenize olanak tanır. Daha önce bahsedilen örnek depoda sağlanan örnek Go web uygulamasını içeren Docker görüntüsünü depolamak için bu görüntüyü kullanın.
Azure Container Registry oluşturmak için aşağıdaki komutları çalıştırın:
Oluşturacağınız kaynaklar için ortam değişkenlerini ayarlayın. Köşeli ayraç içindeki yer tutucu metni uygun değerlerle değiştirin. Azure Container Registry adınızın genel olarak benzersiz olması gerekir.
RESOURCE_GROUP_NAME="<resourceGroupName>" # Name of the Azure resource group to create LOCATION="<location>" # Azure region (For example, "eastus", "westus2") ACR_NAME="<azureContainerRegistryName>" # Globally unique name for Azure Container RegistryOrtam değişkenlerini ayarlamaya yönelik örnek komutlar Bash kabuğuna yöneliktir. Farklı bir kabuk kullanıyorsanız komutları uygun şekilde ayarlayın.
az group create komutuyla bir Azure kaynak grubu oluşturun.
az group create \ --name $RESOURCE_GROUP_NAME \ --location $LOCATIONaz acr create komutuyla bir Azure Container Registry oluşturun .
az acr create \ --resource-group $RESOURCE_GROUP_NAME \ --name $ACR_NAME \ --sku basicaz acr login komutuyla Azure kapsayıcı örneğinde oturum açın .
az acr login --name $ACR_NAMENot
Komutu çalıştırdığınızda
az acr loginaşağıdaki hataya benzer bir hata alırsanız Docker daemon'unun sisteminizde çalıştığından emin olun:You may want to use 'az acr login -n $ACR_NAME --expose-token' to get an access token, which doesn't require Docker to be installed. An error occurred: DOCKER_COMMAND_ERROR
Docker görüntüsünü derleme ve gönderme
Azure Container Registry oluşturduktan sonra örnek Go web uygulamasının Docker görüntüsünü derleyin ve gönderin.
Görüntüyü derlemek ve kayıt defterine göndermek için aşağıdaki komutları çalıştırın.
Oluşturacağınız Docker görüntüsü için ortam değişkenini ayarlayın. Köşeli ayraç içindeki yer tutucu metni uygun değerlerle değiştirin.
IMAGE_NAME="go-webapp" # Name for the Docker imageOrtam değişkenlerini ayarlamaya yönelik örnek komutlar Bash kabuğuna yöneliktir. Farklı bir kabuk kullanıyorsanız, komutları gerektiği şekilde ayarlayın.
az acr show komutuyla oturum açma sunucusu bilgilerini alın ve bir ortam değişkeninde depolayın.
LOGIN_SERVER=$(az acr show \ --name $ACR_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query loginServer \ --output tsv) echo "Login server: $LOGIN_SERVER"Docker görüntüsünü yerel olarak oluşturun.
docker build -t $LOGIN_SERVER/$IMAGE_NAME:latest .Docker görüntüsünü Azure Container Registry'ye gönderin.
docker push $LOGIN_SERVER/$IMAGE_NAME:latestAz acr repository list komutuyla görüntünün Azure Container Registry'ye başarıyla gönderildiğini doğrulayın.
az acr repository list \ --name $ACR_NAME \ --output table
Artık Azure Container Registry'de bir görüntüye sahip olduğunuz için Azure Container App'i ve ortamını dağıtmaya hazırsınız.
Azure Container Apps ortamı oluşturma
Azure Container Apps bir kapsayıcı düzenleyicinin karmaşıklığını içermez, ancak yine de güvenli sınırlar oluşturmak için bir yönteme ihtiyacı vardır. Azure Container Apps ortamları bu özelliği sağlar. Aynı ortama dağıtılan Container Apps aynı sanal ağı paylaşır ve günlükleri aynı Log Analytics çalışma alanına yazar. Azure Container App'i dağıtabilmeniz için önce dağıtılacak bir ortama ihtiyacınız vardır.
Oluşturacağınız kaynaklar için ortam değişkenlerini ayarlayın. Köşeli ayraç içindeki yer tutucu metni uygun değerlerle değiştirin.
CONTAINER_APP_ENV="mygoappenv" # Name for the Container Apps environment CONTAINER_APP_NAME="mygoapp" # Name for your container appOrtam değişkenlerini ayarlamaya yönelik örnek komutlar Bash kabuğuna yöneliktir. Farklı bir kabuk kullanıyorsanız, komutları o kabuğa uygun olacak şekilde ayarlayın.
Azure Container Apps ortamı oluşturmak için az containerapp env create komutunu çalıştırın.
az containerapp env create \ --name $CONTAINER_APP_ENV \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATION
Azure Container Apps'e dağıtma
Bu noktada aşağıdaki adımları tamamladınız:
- Azure Container Registry oluşturuldu.
- Bir Docker görüntüsü inşa edilip kayıt defterine yüklendi.
- Bir Azure Container Apps ortamı ayarlayın.
Son adım uygulamayı dağıtmaktır.
Go web uygulamasını Azure Container Apps'e dağıtmak için az containerapp create komutunu çalıştırın.
az containerapp create \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--environment $CONTAINER_APP_ENV \
--image "$LOGIN_SERVER/$IMAGE_NAME:latest" \
--registry-server "$LOGIN_SERVER" \
--registry-identity system \
--target-port 8080 \
--ingress external
parametresi, --registry-identity system kapsayıcı uygulamasında sistem tarafından atanan yönetilen kimliği yapılandırır. Kapsayıcı uygulaması, kapsayıcı kayıt defteriyle kimlik doğrulaması yapmak için kullanıcı adı ve parola yerine daha az güvenli olan bu kimliği kullanır. Komut ayrıca kimlik için otomatik olarak bir AcrPull rolü ataması oluşturur ve kayıt defterinden görüntü çekme yetkisi alır. Kimlik doğrulaması ve yetkilendirme için yönetilen kimlikleri kullanmak için kayıt defterinin bir Azure Container Registry olması gerekir.
Web uygulaması URL'sini doğrulama
Web uygulamasının girişinin FQDN'sini (Tam Etki Alanı Adı) almak için az containerapp show komutunu çalıştırın.
APP_FQDN=$(az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query properties.configuration.ingress.fqdn \ --output tsv) echo "App URL: https://$APP_FQDN"Curl komutunu FQDN'ye karşı çalıştırın ve çıkışın web sitesinin HTML'sini yansıtıp yansıtmadığını onaylayın. Web uygulamasıyla etkileşime geçmek için URL'yi bir web tarayıcısında da açabilirsiniz.
curl "https://$APP_FQDN"'Komut, web uygulamasının giriş sayfasının HTML'sini aşağıdakine benzer şekilde döndürür:
<!DOCTYPE html> <html> <head> <title>Hello Azure - Go Quickstart</title> <link rel="stylesheet" href="/assets/main.css"> <link rel="icon" type="image/x-icon" href="/assets/favicon.ico"> </head> <header> <h1>Welcome to Azure</h1> </header> <section> <img src="/assets/images/azure-icon.svg"> <form method="post"> <label for="form-label">Could you please tell me your name?</label><br> <input type="text" id="name" name="name" style="max-width: 256px;"><br> <button type="submit">Say Hello</button> </form> </section> </html>
Kaynakları temizle
Örnek uygulamayla işiniz bittiğinde, uygulamanın tüm kaynaklarını Azure'dan kaldırabilirsiniz. Bunun yapılması, devam eden ücretlendirmeleri önler ve Azure aboneliğinizi dağınık tutar. Kaynak grubunu kaldırmak, kaynak grubundaki tüm kaynakları da kaldırır ve uygulamanız için tüm Azure kaynaklarını kaldırmanın en hızlı yoludur.
Kaynak grubunu ve kaynaklarını silmek için az group delete komutunu çalıştırın.
az group delete \
--name $RESOURCE_GROUP_NAME \
--no-wait