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

  1. Azure Vote deposuna gidin ve Çatal'ı seçin.

  2. ACR'nizi azure-vote-all-in-one-redis.yaml görüntü için kullanacak şekilde güncelleştirin azure-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
    ...
    
  3. Güncelleştirilmiş azure-vote-all-in-one-redis.yaml deponuza işleyin.

Gizli dizi oluşturma

  1. komutunu kullanarak az ad sp create-for-rbac rolle Contributor 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>,
      ...
    }
    
  2. GitHub depo ayarlarınıza gidin ve Güvenlik>Gizli Dizileri ve değişkenler>Eylemler'i seçin.

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

  1. 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ğinde azure-vote eylem tetikleniyor.

    bölümü steps her ayrı eylemi içerir:

    1. Kullanıma alma kaynak kodu , depoyu kopyalamak için GitHub Actions Kullanıma Alma Eylemi'ni kullanır.
    2. ACR derlemesi, görüntüyü derlemek ve kayıt defterinize yüklemek için Azure Container Registry Derleme Eylemi'ni kullanır.
    3. Azure oturum açma, Azure hesabınızda oturum açmak için Azure Oturum Açma Eylemi'ni kullanır.
    4. AKS bağlamını ayarlama, AKS kümenizin bağlamını ayarlamak için Azure AKS Bağlamı Ayarla Eylemi'ni kullanır.
    5. Kurulum kubectl, çalıştırıcınıza kubectl yüklemek için Azure AKS Kurulumu Kubectl Eylemi'ni kullanır.
    6. AKS'ye dağıtma, Uygulamayı Kubernetes kümenize dağıtmak için Azure Kubernetes Dağıtım Eylemi'ni kullanır.
  2. .github/workflows/main.yml Dosyayı deponuza işleyin.

  3. 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'
    
  4. Güncelleştirilmiş azure-vote/azure-vote/config_file.cfg deponuza işleyin.

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