데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      [AWS EKS-연재8] Argo CD 설치 및 설정

      Thomas 22.05.16
      5,635 5 2

      AWS EKS 에 상용을 위한 Kubernetes 서비스 설정 시리즈

      1. eksctl을 사용한 AWS EKS 생성

      2. AWS EKS 에 Istio 설치 및 설정

      3. AWS EKS 에서 Istio 와 Application Load Balancer 연결

      4. Kubernetes 의 Resources 설정을 위한 VPA 및 Goldilocks 

      5. AWS EKS 의 Cluster Autoscaler 설정

      6. Loki를 이용한 손쉬운 Kubernetes Logging

      7. Kubernetes/Istio 를 위한 Datadog 설정

      8. Argo CD 설치 및 설정


      ArgoCD는 GitOps 로 관리되는 Kubernetes manifests의 변경사항을 Monitoring 하며 실제 Cluster 에 배포된 형태를 이와 동일하게 계속 유지시키는 역할을 한다.


      Argo CD 설치

      https://argo-cd.readthedocs.io/en/stable/getting_started/ Argo CD를 kubernetes cluster 에 설치

      $ kubectl create namespace argocd
      $ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/ha/install.yaml

      운영에서는 HA 버전의 Argo CD를 설치한다.


      Argo CD CLI 설치

      Argo CD CLI 설치

      $ curl -sSL -o ~/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
      $ chmod +x ~/bin/argocd


      Argo CD 서비스 노출

      Argo CD는 default로 서버를 외부로 노출시키지 않는다. 아래와 같이 서비스타입을 LoadBalancer로 변경하여 외부로 노출시킨다.

      $ kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'


      admin password 변경

      Argo CD는 최초 admin account의 초기 password를 kubernetes 의 secret 으로 저장해 놓는다. 아래와 같이 password를 얻는다.

      $ kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

      Argo CD CLI를 이용하여 Argo CD에 로그인한다. 우선 생성된 Load Balancer의 주소를 얻는다.

      kubectl get svc argocd-server -n argocd

      그리고 Login 한다. Username은 admin 이다

      argocd login 

      admin 유저의 password를 업데이트 한다.

      $ argocd account update-password

      Argo CD는 Git repository를 3분에 한번씩 pollin 하면서 실제 kubernetes cluster 와 다른점을 확인한다. 따라서 배포시에 운이 없다면 최대 3분을 기다려야 Argo CD 가 변경된 image를 배포하게 된다. 이렇게 Polling 으로 인한 delay 를 없애고 싶다면 Git repository 에 Argo CD로 webhook을 만들어 놓으면 된다. 아래 link 참고 https://argo-cd.readthedocs.io/en/stable/operator-manual/webhook/

      그리고 보통 Argo CD는 내부 개발자나 운영자 외에는 접근을 막기 위해 Security group 에서 특정 IP 만 inbound 로 열어 놓는 경우가 있다. 이 때 위와 같이 webhook 을 만들어 놓았다면 반드시 Argo CD의 load balancer에 Github 의 webhook 관련 API 도 inbound로 열어줘야 한다.

      아래 링크에 GitHub 의 IP 주소 관련 내용이 있고, https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/about-githubs-ip-addresses 실제 inbound 에 넣줘야 하는 IP는 아래에서 확인할 수 있다.hooks 에 있는 리스트를 넣어주면 된다. https://api.github.com/meta

      Argo CD Notification 을 사용하여 Slack 에 notification 을 보내는 설정도 하면 개발팀에서 배포가 잘 안된 경우, 알림을 받을 수 있다.

      Argo CD의 ApplicationSet 을 활용하여 프로젝트를 셋업하는 방법도 있다. 예전에는 App of Apps 를 사용했다면 여기서 좀 더 발전된 개념이 Application Sets 이다.

      GitOps는 현재 1.0이 공식 버전이고 곧 업데이트 된 개념이 나올 예정이다. https://opengitops.dev/ https://github.com/open-gitops/documents

      GitOps 1.0 의 문제점은 The pains of GitOps 1.0 참고. 현재 Kubernetes 의 configuration 관리를 위해 kustomize를 사용중이고 Argo CD 에서 kustomize를 이용한 배포를 한다. 만약 kustomize나 helm에서 branching을 사용한다면 Stop Using Branches for Deploying to Different GitOps Environments 를 읽어보면 도움이 될거 같다. GitOps의 Best Practice는 아직 없는거 같다...

      실제 Argo CD를 사용하고 있는 스크린샷 Image description

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      Thomas 님의 최신 블로그

      더보기
      동영상 기고하기