Application 구성하기에서는 별도의 App을 Template으로 구성하셔도 무방하고, 제공하는 Helm Chart와 Value를 사용해도 무방합니다. 이번 구성하기에더는 2048이라는 게임을 ArgoCD Application으로 배포해보고 접속해보는 실습을 진행해보도록 하겠습니다.
배포되는 Application의 Helm Template Chart는 k8s-app-chart에 있고, Template에 적용되는 Value는 k8s-chart-value에 있습니다.
App templateApp Valuek8s-chart-value/<cluster-name>/demo 로 이동하면 application.yaml, image.yaml, values.yaml 로 구성된 것을 확인할 수 있습니다.
여기서 values.yaml만 수정하도록 하겠습니다. 배포를 위한 기본적인 설정은 values.yaml에 공통적으로 잡혀있지만 Ingress의 annotation 중 alb.ingress.kubernetes.io/certificate-arn와 alb.ingress.kubernetes.io/inbound-cidrs , external-dns.alpha.kubernetes.io/hostname 이 3가지 값을 수정해야합니다.
external-dns.alpha.kubernetes.io/hostname: application에 접근하기 위한 domain으로 수정합니다.
alb.ingress.kubernetes.io/certificate-arn: 이전에 생성했던 star certifiaction으로 지정해줍니다.
alb.ingress.kubernetes.io/inbound-cidrs : 기본적으로 internet-facting이면 0.0.0.0/0으로 anyopen이 됩니다. 이를 제어하기 위해 Local 환경에서만 접근할 수 있도록 제어합니다. Local 환경에서 curl ipinfo.io 를 입력하면 아래와 같이 나오게 되는데, 제일 윗 부분이 현재 접속한 Network의 Public IP입니다. 해당 Public IP 뒤에 /32를 붙여서 Public IP에서만 접근할 수 있도록 지정해줍니다.
이제 수정한 image.yaml, values.yaml 파일을 Fork를 뜨신 분이라면 PR을 올려서 k8s-chart-value Repository에 반영해줍니다. 만약 반영하지 않은 상태에서 kubectl apply -f application.yaml 명령어를 치게 된다면 application.yaml 에서 참조하고 있는 value.yaml과 image.yaml을 제대로 불러올 수 없기 떄문에 Application이 생성되지 않습니다.
PR로 Repository에 반영한 다음 kubectl apply -f application.yaml 명령어를 치면 ArgoCD Dashboard에서 demo-app이라는 Application이 생성되고, Synced State로 되는 것을 확인해볼 수 있습니다. Ingress의 경우, Sync가 되더라도 AWS 상에서 Provisioning이 되는데 1~2분 정도 소요됩니다.
1~2분 정도 지난 이후 AWS Console에서 확인해보면 아래와 같이 ALB가 Internet-facing type으로 정상적으로 생성된 것을 확인해 볼 수 있습니다.
그리고 Ingress 생성 시, 지정했던 도메인으로 접속하면 아래와 같이 2048 게임이 정상적으로 접근되는 것을 확인할 수 있습니다.