GitHub Actions kullanarak kapsayıcıları derleme, test etme ve Azure Kubernetes Service 'a (AKS) dağıtma
GitHub Actions, otomatik yazılım geliştirme yaşam döngüsü iş akışı oluşturma esnekliği sunar. GitHub Actions ile kapsayıcılara Azure Container Registry (ACR) ile Azure Kubernetes Service (AKS) arasında dağıtım yapmak için birden çok Kubernetes eylemi kullanabilirsiniz.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Hesabınız yoksa ücretsiz bir hesap oluşturun.
- GitHub hesabı. Hesabınız yoksa ücretsiz olarak kaydolun.
- GitHub Actions kullanırken Azure ile GitHub deponuz arasındaki tümleştirmeyi yapılandırmanız gerekir. Tümleştirmeyi yapılandırmak için bkz. Azure'a bağlanmak için GitHub Actions kullanma.
- Bağlı ACR'ye sahip mevcut bir AKS kümesi. Yoksa bkz. AKS'den ACR ile kimlik doğrulama.
AKS için GitHub Actions
GiHub Actions ile yazılım geliştirme iş akışlarınızı GitHub'ın içinden otomatikleştirebilirsiniz. Daha fazla bilgi için bkz. Azure için GitHub Actions.
Aşağıdaki tabloda AKS için kullanılabilir eylemler listelenir:
Ad | Açıklama | Daha fazla ayrıntı’yı seçin |
---|---|---|
azure/aks-set-context |
Diğer eylemlerin kubectl komutlarını kullanması veya çalıştırması için hedef AKS kümesi bağlamını ayarlayın. | azure/aks-set-context |
azure/k8s-set-context |
Diğer eylemlerin kubectl komutlarını kullanması veya çalıştırması için hedef Kubernetes kümesi bağlamını ayarlayın. | azure/k8s-set-context |
azure/k8s-bake |
Helm, kustomize veya kompose kullanarak dağıtımlar için kullanılacak bildirim dosyasını pişirin. | azure/k8s-bake |
azure/k8s-create-secret |
Kubernetes kümesinde genel bir gizli dizi veya docker-registry gizli dizisi oluşturun. | azure/k8s-create-secret |
azure/k8s-deploy |
Bildirimleri Kubernetes kümelerine dağıtın. | azure/k8s-deploy |
azure/k8s-lint |
Bildirim dosyalarınızı doğrulayın/lint edin. | azure/k8s lint |
azure/setup-helm |
Çalıştırıcıya Helm ikili dosyasının belirli bir sürümünü yükleyin. | azure/setup-helm |
azure/setup-kubectl |
Çalıştırıcıya kubectl'nin belirli bir sürümünü yükleyin. | azure/setup-kubectl |
azure/k8s-artifact-substitute |
Kapsayıcı görüntüleri için etiketi veya özeti güncelleştirin. | azure/k8s-artifact-substitute |
azure/aks-create-action |
Terraform kullanarak bir AKS kümesi oluşturun. | azure/aks-create-action |
azure/aks-github-runner |
GitHub Actions için şirket içinde barındırılan aracılar ayarlayın. | azure/aks-github-runner |
azure/acr-build |
ACR kullanarak kapsayıcılar oluşturun. | azure/acr-build |
AKS ile GitHub Actions kullanma
Örneğin, GitHub deponuza her değişiklik gönderildiğinde AKS kümenize uygulama dağıtmak için GitHub Actions kullanabilirsiniz. Bu örnekte Azure Vote uygulaması kullanılır.
Not
Bu örnekte, ACR ve AKS kümenizle kimlik doğrulaması için bir hizmet sorumlusu kullanılır. Alternatif olarak, Open ID Connect 'i (OIDC) yapılandırabilir ve eylemi OIDC kullanacak şekilde güncelleştirebilirsiniz azure/login
. Daha fazla bilgi için bkz. OpenID Connect kimlik doğrulaması ile Azure Oturum Açma'yı ayarlama.
Deponun çatalını oluşturma ve güncelleştirme
Azure Vote deposuna gidin ve Çatal'ı seçin.
görüntü için
azure-vote-all-in-one-redis.yaml
ACR'nizi kullanacak şekilde öğesini güncelleştirinazure-vote-front
.<registryName>
değerini kayıt defterinizin adıyla değiştirin.... containers: - name: azure-vote-front image: <registryName>.azurecr.io/azuredocs/azure-vote-front:v1 ...
Güncelleştirilmiş
azure-vote-all-in-one-redis.yaml
öğesini deponuza kaydedin.
Gizli dizi oluşturma
komutunu kullanarak
az ad sp create-for-rbac
rolüyle kaynak grubunuz içinContributor
bir hizmet sorumlusu oluşturun. değerini Azure hesabınızın abonelik kimliğiyle ve<RESOURCE_GROUP>
değerini ACR'nizi içeren kaynak grubunun adıyla değiştirin<SUBSCRIPTION_ID>
.az ad sp create-for-rbac \ --name "ghActionAzureVote" \ --scope /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP> \ --role Contributor \ --json-auth
Çıkışınız aşağıdaki örnek çıkışa benzer olmalıdır:
{ "clientId": <clientId>, "clientSecret": <clientSecret>, "subscriptionId": <subscriptionId>, "tenantId": <tenantId>, ... }
GitHub depo ayarlarınıza gidin ve Güvenlik>Gizli Dizileri ve değişkenler>Eylemler'i seçin.
Her gizli dizi için Yeni Depo Gizli Dizisi'ni seçin ve gizli dizinin adını ve değerini girin.
Gizli dizi adı Gizli dizi değeri AZURE_CREDENTIALS komutundan az ad sp create-for-rbac
tüm JSON çıkışı.service_principal değeri <clientId>
.service_principal_password değeri <clientSecret>
.aboneliği değeri <subscriptionId>
.Kiracı değeri <tenantId>
.registry Kayıt defterinizin adı. depo azuredocs resource_group Kaynak grubunuzun adı. cluster_name Kümenizin adı.
Gizli dizi oluşturma hakkında daha fazla bilgi için bkz . Şifrelenmiş Gizli Diziler.
Eylem dosyası oluşturma
Deponuzda bir
.github/workflows/main.yml
oluşturun ve aşağıdaki içeriği yapıştırın:name: build_deploy_aks on: push: paths: - "azure-vote/**" jobs: build: runs-on: ubuntu-latest steps: - name: Checkout source code uses: actions/checkout@v3 - name: ACR build id: build-push-acr uses: azure/acr-build@v1 with: service_principal: ${{ secrets.service_principal }} service_principal_password: ${{ secrets.service_principal_password }} tenant: ${{ secrets.tenant }} registry: ${{ secrets.registry }} repository: ${{ secrets.repository }} image: azure-vote-front folder: azure-vote branch: master tag: ${{ github.sha }} - name: Azure login id: login uses: azure/login@v1.4.3 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Set AKS context id: set-context uses: azure/aks-set-context@v3 with: resource-group: '${{ secrets.resource_group }}' cluster-name: '${{ secrets.cluster_name }}' - name: Setup kubectl id: install-kubectl uses: azure/setup-kubectl@v3 - name: Deploy to AKS id: deploy-aks uses: Azure/k8s-deploy@v4 with: namespace: 'default' manifests: | azure-vote-all-in-one-redis.yaml images: '${{ secrets.registry }}.azurecr.io/${{ secrets.repository }}/azure-vote-front:${{ github.sha }}' pull-images: false
bölümü,
on
eylemi tetikleyen olayı içerir. Örnek dosyada, dizine bir değişiklik gönderildiğindeazure-vote
eylem tetikler.bölümü
steps
her ayrı eylemi içerir:- Kullanıma alma kaynak kodu, depoyu kopyalamak için GitHub Actions Kullanıma Alma Eylemi'ni kullanır.
- ACR derlemesi, görüntüyü oluşturmak ve kayıt defterinize yüklemek için Azure Container Registry Derleme Eylemi'ni kullanır.
- Azure oturum açma, Azure hesabınızda oturum açmak için Azure Oturum Açma Eylemi'ni kullanır.
- AKS bağlamını ayarlama , AKS kümenizin bağlamını ayarlamak için Azure AKS Bağlamı Ayarlama Eylemi'ni kullanır.
- Kubectl kurulumu, çalıştırıcınıza kubectl yüklemek için Azure AKS Kurulumu Kubectl Eylemini kullanır.
- AKS'ye dağıtma , uygulamayı Kubernetes kümenize dağıtmak için Azure Kubernetes Dağıtım Eylemi'ni kullanır.
.github/workflows/main.yml
Dosyayı deponuza kaydedin.Eylemin çalıştığını onaylamak için öğesini aşağıdaki içerikle güncelleştirin
azure-vote/azure-vote/config_file.cfg
:# UI Configurations TITLE = 'Azure Voting App' VOTE1VALUE = 'Fish' VOTE2VALUE = 'Dogs' SHOWHOST = 'false'
Güncelleştirilmiş
azure-vote/azure-vote/config_file.cfg
öğesini deponuza kaydedin.Deponuzda Eylemler'i seçin ve bir iş akışının çalıştığını onaylayın. Ardından, iş akışının yeşil bir onay işareti olduğunu ve güncelleştirilmiş uygulamanın kümenize dağıtıldığını onaylayın.
Sonraki adımlar
AKS için aşağıdaki başlangıç iş akışlarını gözden geçirin. Daha fazla bilgi için bkz. Başlangıç iş akışlarını kullanma.