Share via


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

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

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

  2. görüntü için azure-vote-all-in-one-redis.yaml ACR'nizi kullanacak şekilde öğesini 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 öğesini deponuza kaydedin.

Gizli dizi oluşturma

  1. komutunu kullanarak az ad sp create-for-rbac rolüyle kaynak grubunuz için Contributor 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>,
      ...
    }
    
  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.

    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

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

    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ü oluşturmak 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ı Ayarlama Eylemi'ni kullanır.
    5. Kubectl kurulumu, çalıştırıcınıza kubectl yüklemek için Azure AKS Kurulumu Kubectl Eylemini 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 kaydedin.

  3. 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'
    
  4. Güncelleştirilmiş azure-vote/azure-vote/config_file.cfg öğesini deponuza kaydedin.

  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.