GitHub Actions ile Azure Container Apps'e dağıtma
Azure Container Apps, düzeltmeleri kapsayıcı uygulamanızda yayımlamak için GitHub Actions'ı kullanmanıza olanak tanır. İşlemeler GitHub deponuza gönderildiğinde, kapsayıcı kayıt defterindeki kapsayıcı görüntüsünü güncelleştiren bir iş akışı tetiklenir. Azure Container Apps, güncelleştirilmiş kapsayıcı görüntüsünü temel alan yeni bir düzeltme oluşturur.
GitHub Actions iş akışı, deponuzdaki belirli bir dala yapılan işlemeler tarafından tetikler. İş akışını oluştururken, iş akışını tetikleyen dala siz karar verirsiniz.
Bu makalede, tam olarak özelleştirilebilir bir iş akışının nasıl oluşturulacağı gösterilmektedir. Azure CLI ile başlangıç GitHub Actions iş akışı oluşturmak için bkz . Azure CLI ile GitHub Actions iş akışı oluşturma.
Azure Container Apps GitHub eylemi
Kapsayıcı uygulamanızı derlemek ve dağıtmak için eylemi GitHub Actions iş akışınıza eklersiniz azure/container-apps-deploy-action
.
Eylem aşağıdaki senaryoları destekler:
- Dockerfile'dan derleme ve Container Apps'e dağıtma
- Dockerfile olmadan kaynak koddan derleyin ve Container Apps'e dağıtın. Desteklenen diller .NET, Java, Node.js, PHP ve Python'dır
- Mevcut kapsayıcı görüntüsünü Container Apps'e dağıtma
Kullanım örnekleri
Eylemi kullanmaya yönelik bazı yaygın senaryolar aşağıdadır. Daha fazla bilgi için eylemin GitHub Market sayfasına bakın.
Container Apps'i derleme ve dağıtma
Aşağıdaki kod parçacığında kaynak koddan bir kapsayıcı görüntüsünün nasıl derlenip Container Apps'e nasıl dağıtılacağı gösterilmektedir.
steps:
- name: Log in to Azure
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Build and deploy Container App
uses: azure/container-apps-deploy-action@v1
with:
appSourcePath: ${{ github.workspace }}/src
acrName: myregistry
containerAppName: my-container-app
resourceGroup: my-rg
Eylem, kapsayıcı görüntüsünü oluşturmak için içindeki appSourcePath
Dockerfile dosyasını kullanır. Dockerfile bulunamazsa, eylem içindeki appSourcePath
kaynak kodundan kapsayıcı görüntüsünü oluşturmaya çalışır.
Mevcut kapsayıcı görüntüsünü Container Apps'e dağıtma
Aşağıdaki kod parçacığında, mevcut bir kapsayıcı görüntüsünün Container Apps'e nasıl dağıtılacağı gösterilmektedir.
steps:
- name: Log in to Azure
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Build and deploy Container App
uses: azure/container-apps-deploy-action@v1
with:
acrName: myregistry
containerAppName: my-container-app
resourceGroup: my-rg
imageToDeploy: myregistry.azurecr.io/app:${{ github.sha }}
Önemli
Ayrı bir adımda kapsayıcı görüntüsü oluşturuyorsanız, gibi latest
kararlı bir etiket yerine işleme SHA'sı gibi benzersiz bir etiket kullandığınızdan emin olun. Daha fazla bilgi için bkz . Görüntü etiketi en iyi yöntemleri.
Azure Container Registry ile kimlik doğrulaması
Kapsayıcı görüntüsünü göndermek için Azure Container Apps eyleminin Azure Container Registry ile kimlik doğrulaması yapması gerekir. Kapsayıcı uygulamasının kapsayıcı görüntüsünü çekmek için Azure Container Registry'nizle de kimlik doğrulaması yapması gerekir.
Görüntüleri göndermek için eylem, eyleme sağlanan azure/login
kimlik bilgilerini kullanarak içinde acrName
belirtilen kapsayıcı kayıt defteriyle otomatik olarak kimlik doğrulaması yapar.
Görüntüleri çekmek için Azure Container Apps, Azure Container Registry ile kimlik doğrulaması yapmak için yönetilen kimlik (önerilen) veya yönetici kimlik bilgilerini kullanır. Yönetilen kimliği kullanmak için eylemin dağıttığı kapsayıcı uygulamasının yönetilen kimliği kullanacak şekilde yapılandırılması gerekir. Kayıt defterinin yönetici kimlik bilgileriyle kimlik doğrulaması yapmak için eylemin acrUsername
ve acrPassword
girişlerini ayarlayın.
Yapılandırma
GitHub Actions iş akışını Azure Container Apps'e dağıtacak şekilde yapılandırmak için aşağıdaki adımları uygulayın.
- Uygulamanız için GitHub deposu oluşturma
- Yönetilen kimlik etkin bir kapsayıcı uygulaması oluşturma
AcrPull
Azure Container Registry rolünü kapsayıcı uygulamasının yönetilen kimliğine atama- GitHub deponuzda gizli dizileri yapılandırma
- GitHub Actions iş akışı oluşturma
Önkoşullar
Gereksinim | Yönergeler |
---|---|
Azure hesabı | Hesabınız yoksa ücretsiz bir hesap oluşturun. Devam etmek için Azure aboneliğinde Katkıda Bulunan veya Sahip iznine sahip olmanız gerekir. Ayrıntılar için Bkz. Azure portalını kullanarak Azure rolleri atama. |
GitHub Hesabı | Ücretsiz kaydolun. |
Azure CLI | Azure CLI’yi yükleyin. |
GitHub deposu oluşturma ve kaynak kodu kopyalama
İş akışını oluşturmadan önce uygulamanızın kaynak kodunun bir GitHub deposunda olması gerekir.
Azure CLI ile Azure'da oturum açın.
az login
Ardından CLI için en son Azure Container Apps uzantısını yükleyin.
az extension add --name containerapp --upgrade
Kendi GitHub deponuz yoksa bir örnekten bir depo oluşturun.
- Yeni bir depo oluşturmak için aşağıdaki konuma gidin:
- Deponuza adını verin
my-container-app
.
Depoyu yerel makinenize kopyalayın.
git clone https://github.com/<YOUR_GITHUB_ACCOUNT_NAME>/my-container-app.git
Yönetilen kimlik etkin bir kapsayıcı uygulaması oluşturma
Aşağıdaki adımlarda komutunu az containerapp up
kullanarak kapsayıcı uygulamanızı oluşturun. Bu komut Azure kaynaklarını oluşturur, kapsayıcı görüntüsünü oluşturur, görüntüyü bir kayıt defterinde depolar ve bir kapsayıcı uygulamasına dağıtır.
Uygulamanızı oluşturduktan sonra, uygulamaya bir yönetilen kimlik ekleyebilir ve kimliğin AcrPull
kayıt defterinden görüntü çekmesine izin vermek için bu kimliği atayabilirsiniz.
Kopyalanan deponun src klasörüne geçin.
cd my-container-app cd src
Komutuyla Azure kaynakları oluşturun ve bir kapsayıcı uygulaması dağıtın.
az containerapp up
az containerapp up \ --name my-container-app \ --source . \ --ingress external
Komut çıkışında Azure Container Registry'nin adını not edin.
Kapsayıcı kayıt defterinin tam kaynak kimliğini alın.
az acr show --name <ACR_NAME> --query id --output tsv
<ACR_NAME>
değerini kayıt defterinizin adıyla değiştirin.Kapsayıcı uygulaması için yönetilen kimliği etkinleştirin.
az containerapp identity assign \ --name my-container-app \ --resource-group my-container-app-rg \ --system-assigned
Komut çıkışında yönetilen kimliğin asıl kimliğini not edin.
AcrPull
Azure Container Registry rolünü kapsayıcı uygulamasının yönetilen kimliğine atayın.az role assignment create \ --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \ --role AcrPull \ --scope <ACR_RESOURCE_ID>
değerini yönetilen kimliğin asıl kimliğiyle ve
<ACR_RESOURCE_ID>
Azure Container Registry'nin kaynak kimliğiyle değiştirin<MANAGED_IDENTITY_PRINCIPAL_ID>
.Azure Container Registry'den görüntü çekmek için kapsayıcı uygulamasını yönetilen kimliği kullanacak şekilde yapılandırın.
az containerapp registry set \ --name my-container-app \ --resource-group my-container-app-rg \ --server <ACR_NAME>.azurecr.io \ --identity system
değerini Azure Container Registry'nizin adıyla değiştirin
<ACR_NAME>
.
GitHub deponuzda gizli dizileri yapılandırma
GitHub iş akışı, Azure'da kimlik doğrulaması yapmak için adlı AZURE_CREDENTIALS
bir gizli dizi gerektirir. Gizli dizi, kapsayıcı uygulamasını ve kapsayıcı kayıt defterini içeren kaynak grubunda Katkıda Bulunan rolüne sahip bir hizmet sorumlusunun kimlik bilgilerini içerir.
Kapsayıcı uygulamasını ve kapsayıcı kayıt defterini içeren kaynak grubunda Katkıda Bulunan rolüne sahip bir hizmet sorumlusu oluşturun.
az ad sp create-for-rbac \ --name my-app-credentials \ --role contributor \ --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/my-container-app-rg \ --json-auth \ --output json
değerini Azure aboneliğinizin kimliğiyle değiştirin
<SUBSCRIPTION_ID>
. Kapsayıcı kayıt defteriniz farklı bir kaynak grubundaysa, parametresinde her iki kaynak grubunu da--scopes
belirtin.komutundan JSON çıkışını kopyalayın.
GitHub deposunda Ayarlar> Secrets>Actions'a gidin ve Yeni depo gizli dizisi'ni seçin.
Ad olarak girin
AZURE_CREDENTIALS
ve JSON çıktısının içeriğini değer olarak yapıştırın.Add secret (Gizli dizi ekle) öğesini seçin.
GitHub Actions iş akışı oluşturma
GitHub deposunda Eylemler'e gidin ve Yeni iş akışı'nı seçin.
İş akışını kendiniz ayarlayın'ı seçin.
Aşağıdaki YAML'yi düzenleyiciye yapıştırın.
name: Azure Container Apps Deploy on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Log in to Azure uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Build and deploy Container App uses: azure/container-apps-deploy-action@v1 with: appSourcePath: ${{ github.workspace }}/src acrName: <ACR_NAME> containerAppName: my-container-app resourceGroup: my-container-app-rg
değerini Azure Container Registry'nizin adıyla değiştirin
<ACR_NAME>
. altındabranches
dal adının ve değerlerinin ,containerAppName
ve değerlerininappSourcePath
deponuz veresourceGroup
Azure kaynaklarınız için değerlerle eşleşip eşleşmediğini onaylayın.Değişiklikleri ana dala işleyin.
GitHub Actions iş akışı çalıştırması kapsayıcı uygulamanızı derlemeye ve dağıtmaya başlamalıdır. İlerleme durumunu denetlemek için Eylemler'e gidin.
Uygulamanızın yeni bir düzeltmesini dağıtmak için ana dala yeni bir işleme gönderin.