Skip to main content
설명서에 자주 업데이트를 게시하며 이 페이지의 번역이 계속 진행 중일 수 있습니다. 최신 정보는 영어 설명서를 참조하세요.

이 버전의 GitHub Enterprise는 다음 날짜에 중단되었습니다. 2023-03-15. 중요한 보안 문제에 대해서도 패치 릴리스가 이루어지지 않습니다. 성능 향상, 향상된 보안, 새로운 기능을 위해 최신 버전의 GitHub Enterprise로 업그레이드합니다. 업그레이드에 대한 도움말은 GitHub Enterprise 지원에 문의하세요.

Azure Kubernetes Service에 배포

CD(지속적인 배포) 워크플로의 일부로 AKS(Azure Kubernetes Service)에 프로젝트를 배포할 수 있습니다.

참고: GitHub 호스트 실행기는 현재 GitHub Enterprise Server에서 지원되지 않습니다. GitHub public roadmap에 예정된 향후 지원에 대해 자세히 알아볼 수 있습니다.

소개

이 가이드에서는 GitHub Actions를 사용하여 프로젝트를 Azure Kubernetes Service 에 빌드하고 배포하는 방법에 대해 설명합니다.

필수 조건

GitHub Actions 워크플로를 만들기 전에 먼저 다음 설정 단계를 완료해야 합니다.

  1. 대상 AKS 클러스터 및 ACR(Azure Container Registry)을 만듭니다. 자세한 내용은 Azure 설명서의 “빠른 시작: Azure Portal - Azure Kubernetes Service를 사용하여 AKS 클러스터 배포” 및 “빠른 시작 - 포털에서 레지스트리 만들기 - Azure Container Registry”를 참조하세요.

  2. Azure 자격 증명을 저장하기 위해 AZURE_CREDENTIALS이라는 비밀을 만듭니다. 이 정보를 찾고 비밀을 구성하는 방법에 대한 자세한 내용은 Azure/login 작업 설명서를 참조하세요.

워크플로 만들기

필수 구성 요소를 완료한 후에는 워크플로 만들기를 진행할 수 있습니다.

다음 예제 워크플로에서는 코드를 리포지토리에 푸시할 때 Azure Kubernetes Service 프로젝트를 빌드하고 배포하는 방법을 보여 줍니다.

워크플로 env 키에서 다음 값을 바꿉니다.

  • AZURE_CONTAINER_REGISTRY를 컨테이너 레지스트리의 이름으로 바꿉니다.
  • PROJECT_NAME을 프로젝트의 이름으로 바꿉니다.
  • RESOURCE_GROUP을 AKS 클러스터가 포함된 리소스 그룹으로 바꿉니다.
  • CLUSTER_NAME을 AKS 클러스터 이름으로 바꿉니다.

이 워크플로는 azure/k8s-bake 작업에 대해 helm 렌더링 엔진을 사용합니다. helm 렌더링 엔진을 사용하는 경우 CHART_PATH 값을 helm 파일의 경로로 변경합니다. CHART_OVERRIDE_PATH을 재정의 파일 경로 배열로 변경합니다. 다른 렌더링 엔진을 사용하는 경우 azure/k8s-bake 작업에 전송된 입력 매개 변수를 업데이트합니다.

YAML
# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.
# 작업은 타사에서 제공하며
# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.
# 참조하세요.

# 커밋 SHA에 작업을 고정하는 것이 좋습니다.
# 최신 버전을 얻으려면 SHA를 업데이트해야 합니다.
# 태그 또는 분기를 참조할 수도 있지만 경고 없이 작업이 변경될 수 있습니다.

name: Build and deploy to Azure Kubernetes Service

env:
  AZURE_CONTAINER_REGISTRY: MY_REGISTRY_NAME # set this to the name of your container registry
  PROJECT_NAME: MY_PROJECT_NAME              # set this to your project's name
  RESOURCE_GROUP: MY_RESOURCE_GROUP          # set this to the resource group containing your AKS cluster
  CLUSTER_NAME: MY_CLUSTER_NAME              # set this to the name of your AKS cluster
  REGISTRY_URL: MY_REGISTRY_URL              # set this to the URL of your registry
  # If you bake using helm:
  CHART_PATH: MY_HELM_FILE                   # set this to the path to your helm file
  CHART_OVERRIDE_PATH: MY_OVERRIDE_FILES     # set this to an array of override file paths

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - name: Azure Login
      uses: azure/login@89d153571fe9a34ed70fcf9f1d95ab8debea7a73
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}

    - name: Build image on ACR
      uses: azure/CLI@7378ce2ca3c38b4b063feb7a4cbe384fef978055
      with:
        azcliversion: 2.29.1
        inlineScript: |
          az configure --defaults acr=${{ env.AZURE_CONTAINER_REGISTRY }}
          az acr build -t  -t ${{ env.REGISTRY_URL }}/${{ env.PROJECT_NAME }}:${{ github.sha }}
    
    - name: Gets K8s context
      uses: azure/aks-set-context@4e5aec273183a197b181314721843e047123d9fa
      with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}
          resource-group: ${{ env.RESOURCE_GROUP }}
          cluster-name: ${{ env.CLUSTER_NAME }}
      id: login

    - name: Configure deployment
      uses: azure/k8s-bake@773b6144a3732e3bf4c78b146a0bb9617b2e016b
      with:
        renderEngine: 'helm'
        helmChart: ${{ env.CHART_PATH }}
        overrideFiles: ${{ env.CHART_OVERRIDE_PATH }}
        overrides: |     
          replicas:2
        helm-version: 'latest' 
      id: bake

    - name: Deploys application
    - uses: Azure/k8s-deploy@c8fbd76ededaad2799c054a9fd5d0fa5d4e9aee4
      with:
        manifests: ${{ steps.bake.outputs.manifestsBundle }}
        images: |
          ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.PROJECT_NAME }}:${{ github.sha }}
        imagepullsecrets: |
          ${{ env.PROJECT_NAME }}

추가 리소스

다음 리소스도 유용할 수 있습니다.