Application 구성하기(실습)

Application 구성하기에서는 별도의 App을 Template으로 구성하셔도 무방하고, 제공하는 Helm Chart와 Value를 사용해도 무방합니다. 이번 구성하기에더는 2048이라는 게임을 ArgoCD Application으로 배포해보고 접속해보는 실습을 진행해보도록 하겠습니다.

배포되는 Application의 Helm Template Chart는 k8s-app-chart에 있고, Template에 적용되는 Value는 k8s-chart-value에 있습니다.

App template
App Value

Demo App 배포하기

k8s-chart-value/<cluster-name>/demo 로 이동하면 application.yaml, image.yaml, values.yaml 로 구성된 것을 확인할 수 있습니다.

여기서 values.yaml만 수정하도록 하겠습니다. 배포를 위한 기본적인 설정은 values.yaml에 공통적으로 잡혀있지만 Ingress의 annotation 중 alb.ingress.kubernetes.io/certificate-arnalb.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에서만 접근할 수 있도록 지정해줍니다.

k8s-chart-value > curl ipinfo.io
{
  "ip": "a.b.c.d",
  "city": "Suwon",
  "region": "Gyeonggi-do",
  "country": "KR",
  "loc": "xxx,xxxx",
  "org": "AS4766 Korea Telecom",
  "postal": "xxxxx",
  "timezone": "Asia/Seoul",
  "readme": "https://ipinfo.io/missingauth"
}

이제 수정한 image.yaml, values.yaml 파일을 Fork를 뜨신 분이라면 PR을 올려서 k8s-chart-value Repository에 반영해줍니다. 만약 반영하지 않은 상태에서 kubectl apply -f application.yaml 명령어를 치게 된다면 application.yaml 에서 참조하고 있는 value.yamlimage.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 게임이 정상적으로 접근되는 것을 확인할 수 있습니다.

Last updated