데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      AKS로 쿠버네티스 시작하기 : ACR 접속 인증하여 배포

      broccoli 23.05.10
      4,242 10 0

      'AKS로 쿠버네티스 시작하기 : CI 구성하기' 에 이어서

      지난 블로그 링크 : AKS로 쿠버네티스 시작하기 : CI 구성하기

      ACR까지 컨테이너 push가 완료되었으니, 다음은 해당 컨테이너를 간단한 kubectl 명령으로 AKS에 배포해 보겠습니다.


      AKS가 ACR에 연결

      우선 AKS가 ACR의 컨테이너를 당겨와서(pull) 클러스터에 배포하기 위해 AKS가 ACR에 연결하는 과정이 필요합니다.


      아래의 AKS 중에 개발용 AKS클러스터에 해당하는 'AKS-D-AOP' 를 통해 구성해 보겠습니다.

      image.png


      GPT4 에 물어보기

      GPT4에게 아래와 같이 방법을 물어 보았습니다.


      image.png


      상세 절차

      아래의 절차로 친절한 안내를 받았습니다.

      Azure Kubernetes Service(AKS)에서 Azure Container Registry(ACR)를 연결하는 방법은 다음과 같습니다.

      아래에서 핵심 명령어는 "az aks update -n -g --attach-acr " 입니다.

      1. Azure CLI 설치: Azure CLI를 설치하고 로그인합니다. 설치 방법은 여기를 참고하세요.

      2. ACR에 로그인: 다음 명령어로 ACR에 로그인합니다.

        az acr login --name <acr-name>

        <acr-name>을 실제 ACR 인스턴스의 이름으로 변경해주세요.

      3. AKS 클러스터의 리소스 그룹 이름과 클러스터 이름 확인: 클러스터 정보를 확인하려면 다음 명령어를 실행하세요.

        az aks list --output table
      4. ACR와 AKS 클러스터 연결: 다음 명령어를 사용하여 AKS 클러스터와 ACR을 연결하세요.

        az aks update -n <aks-cluster-name> -g <aks-resource-group> --attach-acr <acr-name>

        <aks-cluster-name>을 실제 AKS 클러스터 이름으로, <aks-resource-group>을 AKS 클러스터가 속한 리소스 그룹의 이름으로, <acr-name>을 연결하려는 ACR 인스턴스의 이름으로 변경해주세요.

      이제 AKS에서 ACR에 저장된 이미지를 사용할 수 있습니다.

      이미지를 사용하려면 Kubernetes의 Deployment 또는 Pod 설정 파일에서 image 필드에 ACR 이미지의 이름을 입력해야 합니다.

      이미지 이름은 <acrname>.azurecr.io/<image-name>:<tag> 형식으로 입력하세요.


      az aks update 명령어 방식으로 attach

      az aks update 명령어 수행 위한 context 전환

      먼저 타겟 AKS(AKS-D-AOP)를 사용 상태로 전환(context switching)하기 위한 명령을 수행해야 합니다.


      azure cloud shell 에서 아래와 같이 수행합니다.

      $ kubectl config use-context AKS-D-AOP


      결과

      예상과 달리 아래와 같은 error가 발생합니다.

      image.png

      타겟 클러스터인 'AKS-D-AOP' 에 대한 context를 제가 가지고 있지 않다고 합니다.


      AKS-D-AOP 컨텍스트 사용 환경 준비

      AKS-D-AOP 클러스터에 대한 context 상태를 위해서는 'azure credential 가져오기'를 실행해야 합니다.

      # 구독을 선택 명령
      $ az account set --subscription Jump_Project
      # credential 가져오기 명령
      $ az aks get-credentials --resource-group RG-AOP-DEV --name AKS-D-AOP
      Merged "AKS-D-AOP" as current context in /home/azureuser/.kube/config

      ~/.kube/config 파일에 AKS-D-AOP를 현재의 default context로 병합하였다는 안내가 표시됩니다.


      현재의 context를 한 번 보겠습니다.

      아래의 명령어(kubectl config get-contexts)로 확인해 보면 현 시점의 context가 AKS-D-AOP 로 전환이 되었습니다.

      image.png

      az aks update 명령어 수행 위한 context 전환이 완료가 되어 az aks update 명령어 수행이 가능합니다.


      az aks update 명령어 수행

      cloud shell 에서 수행합니다.

      image.png

      권한 문제가 있어 수행할 수 없습니다.

      내부 거버넌스 조직을 통해서 권한 부여를 받아야 가능합니다. 다른 방법을 찾아 보았습니다.


      Secret 방식으로 배포 환경 구성

      Secret 생성

      imagePullSecrets 이용하여 설정하는 방법이 있습니다. 아래의 링크를 통해 상세한 방법은 확인하실 수 있습니다.

      이미지 pull을 위한 secret사용

      아래의 명령어로 ACR의 username/password 인증을 위한 Secret을 생성할 수 있습니다.

      $ kubectl create secret docker-registry acraopdev-secret --namespace default --docker-server=acraopdev.azurecr.io --docker-username=acraopdev --docker-password=xxx

      pod yaml 파일의 imagePullSecrets에 secret(여기서는 위에서 생성한 acraopdev-secret)을 적용합니다.

      # acr-nginx-pod.yaml
      apiVersion: v1
      kind: Pod
      metadata:
        name: nginx
        namespace: nginx
      spec:
        containers:
        - name: nginx-container
          image: acraopdev.azurecr.io/nginx:v1
        imagePullSecrets:
        - name: acraopdev-secret

      image는 ACR로그인서버/컨테이너명:tags 형식으로 표현합니다.

      여기서 tags를 빼먹지 않도록 주의 하여야 합니다.

      아래의 예시에서는 tags가 v1 입니다.

      image.png


      AKS에 배포해 보기

      아래와 같이 kubectl apply -f <pod yaml파일> 으로 ACR에 있는 컨테이너 이미지 배포를 성공하였습니다.

      # 배포하기 
      $ kubectl apply -f acr-nginx-pod.yaml
      pod/nginx created
      # 확인하기 
      $ kubectl get pod  -n nginx
      NAME    READY   STATUS    RESTARTS   AGE
      nginx   1/1     Running   0          44s


      정리

      ACR 접속을 인증하는 방법을 2가지로 알아 보았습니다. 여기서는 secret을 적용해서 ACR의 컨테이너 이미지를 pull 할 수 있었습니다.

      이제 CI구성을 통해 ACR에 업로드된 컨테이너 이미지를 ACR로부터 pull 하여 AKS에 배포하는 것까지 확인을 완료하였습니다.


      다음은

      CI 과정과 AKS~ACR간의 배포 환경 구성이 완료되어 배포가 가능하였으니, 이제 CD(continuous delivery) 과정을 진행해 보도록 하겠습니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      broccoli 님의 최신 블로그

      더보기
      동영상 기고하기