Devops/Azure

Azure DevOpsμ—μ„œ Docker 및 Kubernetes 배포 μžλ™ν™”

develkbh 2025. 4. 9. 14:12


πŸ“£ Azure DevOpsμ—μ„œ Docker 및 Kubernetes 배포 μžλ™ν™”

🧭 μ™œ Docker 및 Kubernetes 배포 μžλ™ν™”κ°€ ν•„μš”ν• κΉŒ?
μ˜€λŠ˜λ‚  λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜μ™€ μ»¨ν…Œμ΄λ„ˆ 기반 λ°°ν¬λŠ” 점점 더 μ€‘μš”ν•΄μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.
βœ… DockerλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ»¨ν…Œμ΄λ„ˆν™”ν•˜μ—¬ 개발 ν™˜κ²½μ—μ„œ ν”„λ‘œλ•μ…˜ ν™˜κ²½κΉŒμ§€ μΌκ΄€λ˜κ²Œ μ‹€ν–‰ν•  수 있게 λ„μ™€μ€λ‹ˆλ‹€.
βœ… **Kubernetes(K8s)**λŠ” μ»¨ν…Œμ΄λ„ˆν™”λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΄€λ¦¬ν•˜κ³  μžλ™ν™”ν•˜λŠ” μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ ν”Œλž«νΌμž…λ‹ˆλ‹€.
배포 μžλ™ν™”κ°€ μ—†μœΌλ©΄, μˆ˜λ™μœΌλ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό κ΄€λ¦¬ν•˜λŠ” 데 λ“œλŠ” μ‹œκ°„κ³Ό 였λ₯˜κ°€ λŠ˜μ–΄λ‚  수 μžˆμŠ΅λ‹ˆλ‹€.
λ”°λΌμ„œ Azure DevOpsλ₯Ό ν™œμš©ν•˜μ—¬ Docker 이미지 λΉŒλ“œ 및 Kubernetes ν΄λŸ¬μŠ€ν„° 배포λ₯Ό μžλ™ν™”ν•˜λŠ” 방법을 μ•Œμ•„λ΄…μ‹œλ‹€!


βœ… 1. Azure DevOps와 Docker ν†΅ν•©ν•˜κΈ°

β–Ά 방법: Azure DevOpsμ—μ„œ Docker 이미지λ₯Ό λΉŒλ“œν•˜κ³  λ°°ν¬ν•˜λŠ” νŒŒμ΄ν”„λΌμΈ μ„€μ •
Dockerλ₯Ό μ‚¬μš©ν•˜λ©΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ»¨ν…Œμ΄λ„ˆν™”ν•˜μ—¬ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Azure DevOpsμ—μ„œ Dockerλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ λ‹€μŒ 절차λ₯Ό 따라야 ν•©λ‹ˆλ‹€.

Docker λΉŒλ“œ 및 이미지 ν‘Έμ‹œ νŒŒμ΄ν”„λΌμΈ


[yaml]

 

trigger:
  branches:
    include:
      - main

pool:
  vmImage: 'ubuntu-latest'

steps:
  - task: Docker@2
    inputs:
      command: 'buildAndPush'
      containerRegistry: '$(dockerRegistryServiceConnection)'
      repository: 'myapp'
      dockerfile: '**/Dockerfile'
      tags: |
        $(Build.BuildId)


이 YAML κ΅¬μ„±μ—μ„œλŠ” Docker@2 νƒœμŠ€ν¬λ₯Ό μ‚¬μš©ν•˜μ—¬ Docker 이미지λ₯Ό λΉŒλ“œν•˜κ³ , Azure Container Registry에 ν‘Έμ‹œν•©λ‹ˆλ‹€.


πŸ“© 2. Azure Kubernetes Service (AKS)둜 λ°°ν¬ν•˜κΈ°

β–Ά 방법: Azure DevOps νŒŒμ΄ν”„λΌμΈμ—μ„œ Kubernetes ν΄λŸ¬μŠ€ν„°λ‘œ 배포 μžλ™ν™”
Azure Kubernetes Service(AKS)λŠ” Azureμ—μ„œ Kubernetes ν΄λŸ¬μŠ€ν„°λ₯Ό κ΄€λ¦¬ν•˜λŠ” μ„œλΉ„μŠ€μž…λ‹ˆλ‹€. Azure DevOpsλ₯Ό μ‚¬μš©ν•˜μ—¬ AKS둜 배포λ₯Ό μžλ™ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Kubernetes 배포 νŒŒμ΄ν”„λΌμΈ


[yaml]

 

steps:
  - task: Kubernetes@1
    inputs:
      connectionType: 'Azure Resource Manager'
      azureSubscription: 'MyAzureSubscription'
      azureResourceGroup: 'MyResourceGroup'
      kubernetesCluster: 'MyAKSCluster'
      namespace: 'default'
      command: 'apply'
      arguments: '-f deployment.yaml'


πŸ’¬ 3. Docker 이미지 λΉŒλ“œ 및 AKS 배포 μžλ™ν™”

β–Ά 방법: Docker 이미지 λΉŒλ“œ ν›„ AKS둜 μžλ™ 배포 μ„€μ •
이제 Docker 이미지λ₯Ό λΉŒλ“œν•œ ν›„, 이λ₯Ό AKS ν΄λŸ¬μŠ€ν„°μ— μžλ™μœΌλ‘œ λ°°ν¬ν•˜λŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€.

νŒŒμ΄ν”„λΌμΈ μ„€μ •


[yaml]

 

trigger:
  branches:
    include:
      - main

pool:
  vmImage: 'ubuntu-latest'

steps:
  # Docker μ΄λ―Έμ§€ λΉŒλ“œ λ° ν‘Έμ‹œ
  - task: Docker@2
    inputs:
      command: 'buildAndPush'
      containerRegistry: '$(dockerRegistryServiceConnection)'
      repository: 'myapp'
      dockerfile: '**/Dockerfile'
      tags: |
        $(Build.BuildId)

  # Kubernetes λ°°ν¬
  - task: Kubernetes@1
    inputs:
      connectionType: 'Azure Resource Manager'
      azureSubscription: 'MyAzureSubscription'
      azureResourceGroup: 'MyResourceGroup'
      kubernetesCluster: 'MyAKSCluster'
      namespace: 'default'
      command: 'apply'
      arguments: '-f deployment.yaml'


이 νŒŒμ΄ν”„λΌμΈμ€ main λΈŒλžœμΉ˜μ— ν‘Έμ‹œλ  λ•Œλ§ˆλ‹€, Docker 이미지λ₯Ό λΉŒλ“œν•˜κ³  Azure Container Registry에 ν‘Έμ‹œν•œ ν›„, AKS ν΄λŸ¬μŠ€ν„°λ‘œ λ°°ν¬ν•˜λŠ” 과정을 μžλ™ν™”ν•©λ‹ˆλ‹€.


✨ μ‹€μ „ 예: Docker 이미지 λΉŒλ“œ + AKS 배포

  1. GitHub에 μ½”λ“œ 컀밋
  2. Docker 이미지 μžλ™ λΉŒλ“œ 및 Azure Container Registry에 ν‘Έμ‹œ
  3. Kubernetes ν΄λŸ¬μŠ€ν„°μ— μžλ™ 배포
  4. 배포 μ™„λ£Œ ν›„ μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§ 및 μžλ™ λ‘€λ°± κΈ°λŠ₯ μ„€μ •

βœ… 이 과정은 배포의 일관성을 높이고, μˆ˜λ™ λ°°ν¬μ—μ„œ λ°œμƒν•  수 μžˆλŠ” 였λ₯˜λ₯Ό μ€„μ—¬μ€λ‹ˆλ‹€. λ˜ν•œ, 배포 속도도 ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€!


πŸ” 마무리

Azure DevOps와 Docker, Kubernetesλ₯Ό ν™œμš©ν•œ 배포 μžλ™ν™”λŠ”
βœ”οΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 관리와 배포 과정을 크게 κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
βœ”οΈ μžλ™ν™”λœ λ°°ν¬λŠ” 개발 μ£ΌκΈ°λ₯Ό λ‹¨μΆ•μ‹œν‚€κ³ , 운영 ν™˜κ²½μ˜ 일관성을 μœ μ§€ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€.

DevOpsλŠ” κΈ°μˆ μ„ λ„˜μ–΄μ„œ, ν˜‘μ—…κ³Ό μ†Œν†΅μ„ μœ„ν•œ λ„κ΅¬μž…λ‹ˆλ‹€. μžλ™ν™”λŠ” νš¨μœ¨μ„±μ„ 높이고, μ‹€μˆ˜λ₯Ό 쀄이며, νŒ€ κ°„μ˜ ν˜‘λ ₯을 κ°•ν™”ν•©λ‹ˆλ‹€ 😊