23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
지난 블로그 링크 : AKS로 쿠버네티스 시작하기 : CI 구성하기
ACR까지 컨테이너 push가 완료되었으니, 다음은 해당 컨테이너를 간단한 kubectl 명령으로 AKS에 배포해 보겠습니다.
우선 AKS가 ACR의 컨테이너를 당겨와서(pull) 클러스터에 배포하기 위해 AKS가 ACR에 연결하는 과정이 필요합니다.
아래의 AKS 중에 개발용 AKS클러스터에 해당하는 'AKS-D-AOP' 를 통해 구성해 보겠습니다.
GPT4에게 아래와 같이 방법을 물어 보았습니다.
아래의 절차로 친절한 안내를 받았습니다.
Azure Kubernetes Service(AKS)에서 Azure Container Registry(ACR)를 연결하는 방법은 다음과 같습니다.
아래에서 핵심 명령어는 "az aks update -n -g --attach-acr " 입니다.
Azure CLI 설치: Azure CLI를 설치하고 로그인합니다. 설치 방법은 여기를 참고하세요.
ACR에 로그인: 다음 명령어로 ACR에 로그인합니다.
az acr login --name <acr-name><acr-name>을 실제 ACR 인스턴스의 이름으로 변경해주세요.
AKS 클러스터의 리소스 그룹 이름과 클러스터 이름 확인: 클러스터 정보를 확인하려면 다음 명령어를 실행하세요.
az aks list --output tableACR와 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> 형식으로 입력하세요.
먼저 타겟 AKS(AKS-D-AOP)를 사용 상태로 전환(context switching)하기 위한 명령을 수행해야 합니다.
azure cloud shell 에서 아래와 같이 수행합니다.
$ kubectl config use-context AKS-D-AOP예상과 달리 아래와 같은 error가 발생합니다.
타겟 클러스터인 'AKS-D-AOP' 에 대한 context를 제가 가지고 있지 않다고 합니다.
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 로 전환이 되었습니다.
az aks update 명령어 수행 위한 context 전환이 완료가 되어 az aks update 명령어 수행이 가능합니다.
cloud shell 에서 수행합니다.
권한 문제가 있어 수행할 수 없습니다.
내부 거버넌스 조직을 통해서 권한 부여를 받아야 가능합니다. 다른 방법을 찾아 보았습니다.
imagePullSecrets 이용하여 설정하는 방법이 있습니다. 아래의 링크를 통해 상세한 방법은 확인하실 수 있습니다.
아래의 명령어로 ACR의 username/password 인증을 위한 Secret을 생성할 수 있습니다.
$ kubectl create secret docker-registry acraopdev-secret --namespace default --docker-server=acraopdev.azurecr.io --docker-username=acraopdev --docker-password=xxxpod 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-secretimage는 ACR로그인서버/컨테이너명:tags 형식으로 표현합니다.
여기서 tags를 빼먹지 않도록 주의 하여야 합니다.
아래의 예시에서는 tags가 v1 입니다.
아래와 같이 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 44sACR 접속을 인증하는 방법을 2가지로 알아 보았습니다. 여기서는 secret을 적용해서 ACR의 컨테이너 이미지를 pull 할 수 있었습니다.
이제 CI구성을 통해 ACR에 업로드된 컨테이너 이미지를 ACR로부터 pull 하여 AKS에 배포하는 것까지 확인을 완료하였습니다.
CI 과정과 AKS~ACR간의 배포 환경 구성이 완료되어 배포가 가능하였으니, 이제 CD(continuous delivery) 과정을 진행해 보도록 하겠습니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.