GitHub Actions'ı kullanarak Azure Kubernetes Service'e (AKS) kapsayıcı oluşturma, test etme ve 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 Azure Container Registry'den (ACR) Azure Kubernetes Service'e (AKS) kapsayıcılara dağıtmak 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.
- Bir 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.
- Ekli ACR'ye sahip mevcut bir AKS kümesi. ACR'niz yoksa bkz . AKS'den ACR ile kimlik doğrulaması yapma.
AKS için GitHub Actions
GiHub Actions ile GitHub'ın içinden yazılım geliştirme iş akışlarınızı otomatikleştirebilirsiniz. Daha fazla bilgi için bkz . Azure için GitHub Actions.
Aşağıdaki tabloda AKS için kullanılabilir eylemler listelenir:
Veri Akışı Adı | Açıklama | Diğer ayrıntılar |
---|---|---|
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üme 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 aks kümesi oluşturma. | azure/aks-create-action |
azure/aks-github-runner |
GitHub Actions için şirket içinde barındırılan aracıları ayarlama. | 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.
ACR'nizi
azure-vote-all-in-one-redis.yaml
görüntü için kullanacak şekilde 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
deponuza işleyin.
Gizli dizi oluşturma
komutunu kullanarak
az ad sp create-for-rbac
rolleContributor
kaynak grubunuzla erişmek için bir hizmet sorumlusu oluşturun. değerini Azure hesabınızın abonelik kimliğiyle ve<RESOURCE_GROUP>
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.
Parola adı Gizli anahtar değeri AZURE_CREDENTIALS komutundan az ad sp create-for-rbac
tüm JSON çıkışı.service_principal değeridir <clientId>
.service_principal_password değeridir <clientSecret>
.aboneliği değeridir <subscriptionId>
.tenant değeridir <tenantId>
.Kayıt defteri 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.
Eylemler dosyası oluşturma
Deponuzda aşağıdaki içeriği oluşturup
.github/workflows/main.yml
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 tetikleniyor.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ü derlemek 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ı Ayarla Eylemi'ni kullanır.
- Kurulum kubectl, çalıştırıcınıza kubectl yüklemek için Azure AKS Kurulumu Kubectl Eylemi'ni 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 işleyin.Eylemin çalıştığını onaylamak için öğesini aşağıdaki içeriklerle 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
deponuza işleyin.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.
Azure Kubernetes Service