Azure

[Azure] AKS (Azure Kubernetes Service) 사용해보기 -2

seolbinzz 2023. 12. 1. 15:04

1. AGIC ( Application Gateway 수신 컨트롤러 ) 설정하기

AGIC는 Kubernetes 애플리케이션으로, L7 부하 분산 장치를 활용하여 클라우드 소프트웨어를 인터넷에 노출할 수 있도록 합니다.

수신 컨트롤러는 AKS에서 자체 pod로 실행됩니다.

 

 

 

 

 

 

[ AGIC 설정 ]

Kubernetes 서비스에서 aks 선택한 후 네트워킹 -> 수신 컨트롤러 사용을 체크해줍니다.

 

 

 

그러면 자동으로 ingress gateway가 생성됩니다.

 

 

 

 

 

[ OpenSSL로 인증서 만들기 ]

#RSA 개인키를 생성하고 tls.key 파일에 저장
openssl genrsa -out tls.key 2048


#X.509 자체 서명 인증서를 생성 #인증서유효기간 365지정 #주체기관 node2.example.com설정 (자체 서명 인증서)
openssl req -new -x509 -key tls.key -out tls.crt -days 365 -subj /CN=node2.example.com


#kubernete 안에 tls-secret인 비밀키 생성
kubectl create secret tls tls-secret --cert=tls.crt --key=tls.key

 

 

#crt -> prx로 변경
openssl pkcs12 -export -in tls.crt -inkey tls.key -out www.sslcert.co.kr.pfx

 

 

 

 

이렇게 하면 아래와 같은 이름으로 키가 생성됩니다.

 

 

 

 

 

이 키 파일을 로컬 컴퓨터로 저장해놓고 수신기에 해당 인증서를 넣어줍니다.

 

 

 

 

 

2. ingress.yaml 작성 및 배포하기

아래와 같이 ingress.yaml를 작성해줍니다.

vi ingress.yaml



apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: aspnetapp
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
spec:
  tls:
   - hosts:
     secretName: tls-secret 
  rules:
  - http:
      paths:
      - path: /
        backend:
          service:
            name: web-server-svc
            port:
              number: 80
        pathType: Prefix

 

 

 

 

 

 

ingress.yaml을 적용하면

$ kubectl apply -f ingress.yaml

$ kubectl get ingress

 

 

 

 

 

이렇게 IP가 부여됩니다!

 

 

 

 

 

 

 

이렇게 하고 https://ip 로 접속하면 뜹니다!

 

 

 

 

 

3. HPA 설정

일반적으로 HPA(Horizontal Pod Autoscaler)을 사용하려면 클러스터에 메트릭 서버를 설치해야합니다.

그러나 AKS에서는 기본적으로 Kubernetes 클러스터에 매트릭 서버가 설치되어 있어서 별도로 설치가 필요없습니다.

vi web-hpa.yaml


apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: webserver-hpa
spec:
  maxReplicas: 10
  minReplicas: 3
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web-server
  targetCPUUtilizationPercentage: 50

 

 

실시간으로 hpa로 볼 수 있습니다.

$ watch kubectl get hpa -o wide

 

 

 

 

 

 

 


 

 

 

1편 2편 요약 

VM을 통해 Docker 이미지를 생성 -> ACR에 push -> aks 노드에 접속해 ACR에 올린 이미지를 pull 후  web과 was의 pod를 구성 -> ingress를 통해 https 접속 -> was와 web pod들은 HPA를 통해 오토스케일링