Aracılığıyla paylaş


Azure Container Apps'e Go web uygulaması dağıtma

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.

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:

  1. 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 Registry
    

    Ortam değişkenlerini ayarlamaya yönelik örnek komutlar Bash kabuğuna yöneliktir. Farklı bir kabuk kullanıyorsanız komutları uygun şekilde ayarlayın.

  2. az group create komutuyla bir Azure kaynak grubu oluşturun.

    az group create \
        --name $RESOURCE_GROUP_NAME \
        --location $LOCATION
    
  3. az acr create komutuyla bir Azure Container Registry oluşturun .

    az acr create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $ACR_NAME \
        --sku basic
    
  4. az acr login komutuyla Azure kapsayıcı örneğinde oturum açın .

    az acr login --name $ACR_NAME
    

    Not

    Komutu çalıştırdığınızda az acr login aş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.

  1. 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 image
    

    Ortam 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.

  2. 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"
    
  3. Docker görüntüsünü yerel olarak oluşturun.

    docker build -t $LOGIN_SERVER/$IMAGE_NAME:latest .
    
  4. Docker görüntüsünü Azure Container Registry'ye gönderin.

    docker push $LOGIN_SERVER/$IMAGE_NAME:latest
    
  5. Az 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.

  1. 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 app
    

    Ortam 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.

  2. 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

  1. 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"
    
  2. 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

Sonraki adımlar