ACR 접속
Linux VM에서 Azure와 연결을 진행한다.
az login
구독 확인
az account show
az account set --subscription 7c2a31c5-b215-4bd4-864a-6378cdc501f2
ACR에 AKS 권한부여
az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acr-resource-id>
az aks -n kubernetes-cluster-lsc -g 20240116-test-RG-LSC --attach-acr /subscriptions/7c2a31c5-b215-4bd4-864a-6378cdc501f2/resourceGroups/20240116-test-RG-LSC/providers/Microsoft.ContainerRegistry/registries/containerregistrylsc
az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acr-name>
az aks -n kubernetes-cluster-lsc -g 20240116-test-RG-LSC --attach-acr containerregistrylsc
❗에러 발생
3-1) 역할 할당에 대한 문제인거 같아서 내가 구독에 대해서 어떤 역할이 할당 되어있는지 확인해보았다.
#현재 사용자 ID를 확인 하는 명령어
az ad signed-in-user show --query objectId -o tsv
#사용자 ID 기반 구독에 어떤 역할이 부여되어있는지 확인하는 명령어
az role assignment list --assignee fa43c4f5-bf47-4d9d-b28f-199f6a3db5af --scope /subscriptions/7c2a31c5-b215-4bd4-864a-6378cdc501f2
해결 : az cli 버전 문제였다. 최신 버전으로 설치한 후 진행하니까 바로 됨..
ACR에 이미지 import
az acr import -n containerregistrylsc --source mcr.microsoft.com/azuredocs/aks-helloworld:v1 --image containerregistrylsc/aks-helloworld:v1
ACR에서 리포지토리 확인
AKS 접속
deployment 배포
apiVersion: apps/v1
kind: Deployment
metadata:
name: aks-helloworld-one
spec:
replicas: 1
selector:
matchLabels:
app: aks-helloworld-one
template:
metadata:
labels:
app: aks-helloworld-one
spec:
containers:
- name: aks-helloworld-one
image: containerregistrylsc.azurecr.io/containerregistrylsc/aks-helloworld:v1
ports:
- containerPort: 80
env:
- name: TITLE
value: "Welcome to azure kubernetes service"
deployment 배포
Service 배포
Service one
apiVersion: v1
kind: Service
metadata:
name: aks-helloworld-one
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: aks-helloworld-one
Service two
apiVersion: v1
kind: Service
metadata:
name: aks-helloworld-two
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: aks-helloworld-two
Nginx Ingress 설치 및 ILB 생성
3-1) helm install
$ curl -fsSL -o get_helm.sh <https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3>
$ chmod 700 get_helm.sh
$ ./get_helm.sh
3-2) Add repository
helm repo add ingress-nginx <https://kubernetes.github.io/ingress-nginx>
3-3) helm으로 Ingress-controller 생성
helm install ingress-nginx ingress-nginx/ingress-nginx \\
--set controller.service.annotations."service\\.beta\\.kubernetes\\.io/azure-load-balancer-health-probe-request-path"=/healthz \\
--set controller.replicaCount=2 \\
--set controller.service.annotations."service\\.beta\\.kubernetes\\.io/azure-load-balancer-internal"=true
Ingress 생성
# 각 경로별로 따로 생성해도 무방
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-world-ingress
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: “false”
spec:
ingressClassName: nginx
rules:
- host: hello-world-one.cheolee.com
http:
paths:
- path: /
backend:
service:
name: aks-helloworld-one
port:
number: 80
pathType: Prefix
- host: hello-world-two.cheolee.com
http:
paths:
- path: /
backend:
service:
name: aks-helloworld-two
port:
number: 80
pathType: Prefix
AGW 생성
5-1) 구성
5-2) 백엔드 풀
Ingress Nginx의 Internal LB Private IP
5-3) 백엔드 설정
5-4) 수신기
5-5) 규칙
5-6) 상태 프로브
5-7) AKS >> 네트워킹 >> AGW 수신기 허용
5-8) 백엔드풀 상태 프로브 헬스 체크
도메인 서비스 설정
6-1) AppService 도메인 구매
6-2) Public DNS 영역 추가
AGW의 Frontend IP 추가