Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BackEnd Helm 차트 작성 #3

Closed
4 tasks done
Tracked by #1
junha-ahn opened this issue Aug 1, 2023 · 4 comments · Fixed by #34
Closed
4 tasks done
Tracked by #1

BackEnd Helm 차트 작성 #3

junha-ahn opened this issue Aug 1, 2023 · 4 comments · Fixed by #34
Assignees
Labels
Major Major topic

Comments

@junha-ahn
Copy link
Member

junha-ahn commented Aug 1, 2023

Description

Hello World App을 배포해주세요.

  • Nginx 등 어떠한 Helm 차트여도 상관없습니다.
  • RDS 구성이 아직 진행중이기에 실제 Backend Project를 배포하지는 않습니다!

To do

  • Deploy Hello-World Helm Charts by ArgoCD application.yaml (Kind: Application)
  • Deploy ALB for public Access (Kind: Service)
  • need to automation by Terraform (you can't run kubectl apply command)

Test Checklist

  • curl tmp-aws-domain.com:80/ returns 200 status
$ curl aa6d4582ed8a64bdfae56607b91b5fd4-7994cdc9af7bb230.elb.ap-northeast-2.amazonaws.com:8080
OK

$ curl aa6d4582ed8a64bdfae56607b91b5fd4-7994cdc9af7bb230.elb.ap-northeast-2.amazonaws.com:8080/bookmarks
[]
@junha-ahn junha-ahn mentioned this issue Aug 1, 2023
8 tasks
@junha-ahn junha-ahn moved this to Todo in Kanban Infra Aug 1, 2023
@junha-ahn junha-ahn removed this from Kanban Infra Aug 6, 2023
@junha-ahn junha-ahn changed the title BackEnd, Redis 등 Helm 차트 작성 BackEnd 등 Helm 차트 작성 Aug 6, 2023
@junha-ahn junha-ahn changed the title BackEnd 등 Helm 차트 작성 BackEnd Helm 차트 작성 Aug 8, 2023
@jacepark12
Copy link
Collaborator

진행된 사항

  • helm chart를 통해 redis, kotlin 이미지를 가져와 배포한다.
  • redis는 standalone으로 설정하며, values.yaml에서 이를 변경가능.
  • kotlin앱의 컨테이너의 경우 LoadBalancer service를 통해 외부 접속이 가능.
  • Loadbalancer 타입을 clb, alb 2가지 경우로 테스트하였으며, 두 경우 모두 정상적으로 접속이 가능하며, 타입은 values.yaml에서 지정가능.
  • 현재 2개의 컨테이너를 띄울때 2개의 팟을 생성하도록 되어 있음. (1개의 팟 안에 2개의 컨테이너를 띄워서 배포하는것도 가능하더라!)

진행 방법

  1. helm cli 설치 및 helm 코드 받기
  2. 만약 여러개의 클러스터를 가지고 작업한다면 helm으로 배포할 클러스터를 지정한다.
    2-1. aws cli를 통해서 kubeconfig 생성하기.
    2-2. 환경변수로 사용할 kubeconfig 파일 경로 지정하기
  3. helm template 으로 helm에서 생성해주는 yaml 파일들 확인하기
  4. helm install --dry-run으로 배포전 확인하기
  5. helm install 으로 배포하기
  6. heml uinstall 으로 삭제하기

기타 메모

  • helm uninstall 직후 새로 install시 service.yaml에서 지정한 port가 이미 사용중이라고 뜨지만, kubectl로 조회하면 해당 port를 사용하는 service는 나오지 않는다. AWS Loadbalancer 삭제에 시간이 걸려서 그런듯.

@junha-ahn
Copy link
Member Author

junha-ahn commented Aug 11, 2023

와우... 매우 좋습니다. 완벽하네요 👍

ArgoCD

ArgoCD는 Terraform heml_release를 통해 이미 EKS에 설치/배포해놨습니다. (관련 PR)

The Helm provider is used to "deploy software packages in Kubernetes".

진행방법은 ArgoCD를 이용해 Helm chart를 배포하는 방식이면 될 것 같습니다

  • 참고로 ArgoCD에서 내부적으로는 helm template을 생성한 후에 kubectl apply -f template.yaml 방식을 사용한다고 하네요

배포 방법

  1. application.yaml 등의 파일에 해당 helm 차트들을 명시
  2. kubectl apply -n argocd -f application.yaml and Argo CD will start deploying the guestbook application. (참고)
  3. ArgoCD를 통해 라이프사이클 관리 (App of Apps 패턴 적용)

참고

helm_release ArgoCD

resource "helm_release" "argocd" {
  name       = "morgo"
  chart      = "argo-cd"
  repository = "https://argoproj.github.io/argo-helm"
  namespace  = "argocd"
}

+resource "kubernetes_manifest" "application" {
+  depends_on = [helm_release.argocd]
+
+  manifest = yamldecode(file("${path.module}/../argocd/applications.yaml"))
+}

https://honglab.tistory.com/233

App of Apps Yaml file

ECR

현재 ticketing backend image ECR에 존재합니다.

MYSQL_HOST: mysqldb
MYSQL_PORT: 3306
MYSQL_USERNAME: root
MYSQL_PASSWORD: test
MYSQL_SCHEMA: test
JWT_SECRET: d2VhcmVuYXZ5c3dkZXZlbG9wZXJzLmFuZGlhbW1pbmp1bjMwMjE=
JWT_EXPIRATION_HOURS: 24
JWT_ISSUER: minjun

@junha-ahn
Copy link
Member Author

ArgoCD 접속법

@junha-ahn junha-ahn linked a pull request Aug 15, 2023 that will close this issue
@junha-ahn
Copy link
Member Author

junha-ahn commented Aug 15, 2023

해당 PR Helm 차트 참고법

https://helm.sh/ko/docs/chart_template_guide/getting_started/
https://kouzie.github.io/kubernetes/k8s-helm-%EB%AC%B8%EB%B2%95/

  • 모르는 문법이 나오면 검색하면 됩니다

해당 가이드 읽으니까 PR template 들 겨우겨우 이해할 수 있네요.

Go template 문법 왜 이렇게 보기 힘든거 같죠... 저만 그런가
제가 흑백으로 인쇄해놓고 하이라이팅 없이 봐서 힘든거였네요...


@Private12 질문 하나 있는데 해당 template, NOTES, _helpers 는 어떻게 다 뽑으신건가요?

뭔가 툴같은거 쓴거 같은데 레퍼런스 부탁드립니다

@junha-ahn junha-ahn self-assigned this Aug 25, 2023
@junha-ahn junha-ahn linked a pull request Aug 25, 2023 that will close this issue
@junha-ahn junha-ahn reopened this Aug 25, 2023
@junha-ahn junha-ahn added the Major Major topic label Aug 28, 2023
@junha-ahn junha-ahn moved this to Todo in Kanban Infra Aug 28, 2023
@junha-ahn junha-ahn moved this from Todo to Done in Kanban Infra Aug 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Major Major topic
Projects
Status: Done
2 participants