Skip to content

wafflestudio/waffle-world

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

waffle-world

[K8S] everything in wafflestudio-cluster

wafflestudio-cluster 의 선언적 관리GitOps 를 위한 repository 입니다.

cluster 의 현 상태를 정확하고 투명하게 파악하며, 누가 언제 어떤 변경을 적용했는지 기록하는 것을 목표로 합니다.

Structures of Directory

  • Argo CD 로 관리하는 서비스 Application 들의 manifest 파일들이 위치합니다. adminkubectl 등의 도구로 수동 적용하지 않습니다.
  • App Of Apps Pattern 을 적용하여, autodeploy-app 에 의해 대부분의 Argo CD Application 이 관리됩니다.
  • 대부분 서비스가 /apps/templates/* 에 Application 을 정의, /apps/{namespace}/{name}/* 에 Application 에 포함될 manifest 파일들을 정의하고 있습니다. (manifest 예시: snutt-prod/snutt-timetable)
  • autodeploy-app 이 관리하는 /apps/templates/* 의 Application 들은 main branch 의 변경이 Argo CD 에 의해 cluster 에 자동 적용됩니다.
  • Helm 으로 관리하는 Chart 들이 정의되어 있습니다. Argo CD, Istio, Prometheus, Grafana 등 일반 서비스보다는 핵심적인 clsuter infra 와 관련되어 있습니다.
  • 오픈소스의 Chart 를 바로 사용하지 않고, dependencies에 이들을 포함한 새로운 Chart 를 정의하고, values.yaml로 필요한 부분을 override 하고 있습니다. (values.yaml 예시: argocd)
  • helm install, helm upgrade 등의 커맨드로 admin 이 관리합니다.
  • adminkubectl로 수동으로 관리하는 manifest 들이 위치합니다. load-balancer-controller, cluster-autoscaler, cert-manager 등 핵심적인 clsuter infra 와 관련되어 있습니다.

Related Links

  • Argo CD 가 관리하는 /apps/* 의 Application 들을 모니터링, 관리할 수 있습니다.
  • GitHub wafflestudio org 구성원들은 누구나 GitHub SSO 로 로그인 가능합니다.
  • Prometheus 에 있는 데이터를 기반으로 Grafana 에서 cluster 및 서비스에 대한 여러 모니터링이 가능합니다.
  • GitHub wafflestudio org 구성원들은 누구나 GitHub SSO 로 로그인 가능합니다.

Related Repositories

detects ecr push and reflects it to waffle-world

how it works

  1. GitHub Actions (in each repo) build and push docker image to ECR
  2. ECR push event triggers AWS Lambda function
  3. This Lambda function updates the image tag of the corresponding manifest file in waffle-world
  4. ArgoCD detects the change in the manifest file and deploys the new image
  • 주기적인 모니터링을 통해, Pod, Job 의 동작 실패 시 지정된 wafflestudio Slack 채널로 메시지를 전송합니다.
  • 일부 서비스는 유저 인증 관련 부분을 waffle-account-server 에 위임하여 와플스튜디오 SSO 를 사용합니다.
  • 해당 서비스 서버를 kong-gateway 뒤에 위치시켜 waffle-account-server 에서 발급한 access token 을 검증하고 이를 내부에서 사용 가능한 waffle-user-id 헤더로 바꿔주는 plugin 을 활용할 수 있습니다.

Related Blog Posts