Skip to content

Latest commit

 

History

History
193 lines (116 loc) · 7.96 KB

3.Helm_ArgoCD.md

File metadata and controls

193 lines (116 loc) · 7.96 KB

Helm 이란

참조사이트

  • helm이란 쿠버네티스 패키지 매니저입니다. centOS에서 yum 이나 python에서는 pip 툴 MAC OS에서는 brew와 같이 패키지를 관리 주는 툴입니다. helm을 이용하면 원하는 패키지들을 쿠버네티스에 쉽게 설치할 수 있습니다.

  • helm은 docker hub와 비슷하게 helm 패키지들을 저장하고 있는 저장소(repository)가 있습니다. 사용자는 저장소를 추가하고 해당 저장소의 패키지를 install하기만 하면 됩니다. helm 차트로 원하는 패키지를 install할때 values.yaml 을 이용하여 사용자의 환경에 따라 커스텀하여 사용할 수 있습니다.

helm chart 구조

  • Chart.yaml: 차트 이름, 버전등 기본적인 메타 정보를 정의하는 파일

  • templates: 쿠버네티스에 배포될 리소스들의 매니페스트 템플릿이 포함된 폴더

  • values.yaml: 템플릿에 사용될 변수(Value)값들을 정의하는 파일

  • Helm 설치

    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    chmod 700 get_helm.sh
    ./get_helm.sh

Helm Chart Repo 생성

  • Helm chart repo를 위한 CodeCommit 레포 생성 후 README.md 파일을 생성합니다.

    Untitled

  • 해당 레포를 cloud9 환경으로 클론 합니다.

    cd ~/environment
    git clone codecommit::ap-northeast-2://chart-repo
  • book-sample/helm/game-2048 폴더 하위 (templates/ , Chart.yaml, values.yaml)파일을 Chart 레포지토리로 복사합니다.

    cd ~/environment
    mkdir chart-repo/game-2048
    cp -r book-sample/helm/game-2048/* chart-repo/game-2048
    
  • Chart 레포지토리에 변경사항을 커밋한 후 푸시 합니다.

    cd chart-repo
    git add .
    git commit -m "Updated game chart"
    git push origin main
    

ArgoCD 설정

  • ArgoCD 설치 & 네임스페이스 생성합니다.

    kubectl create namespace argocd
    kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
    
  • 외부에서 ArgoCD에 접속할 수 있도록 CLB를 생성하도록 합니다.

    kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
    
  • ArgoCD 접속 주소를 확인 합니다.

    export ARGOCD_SERVER=`kubectl get svc argocd-server -n argocd -o json | jq --raw-output .status.loadBalancer.ingress[0].hostname`
    echo $ARGOCD_SERVER
    
  • 초기 admin 사용자 암호를 확인합니다.

    ARGO_PWD=`kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d`
    echo $ARGO_PWD
    
  • ARGO_SERVER를 브라우저에서 오픈 하고 admin유저로 로그인합니다.

    Untitled

  • ArgoCD가 레포지토리에 접속할 수 있도록 IAM User 및 Git Credential을 생성합니다.

    Untitled

    CodeCommit 레포지토리에 접근 할 수 있도록 AWSCodeCommitPowerUser 권한을 할당 합니다.

    image

    IAM User의 보안 자격 증명으로 이동하여 Git Credential을 생성 한 후 다운로드하거나 다른 곳에 메모합니다.

    Untitled

ArgoCD Chart Repo 연동

ArgoCD로 이동하여 Setting > Repository로 이동 후 Connnect Repo를 통해 CodeCommit 레포지토리를 연동합니다.

  • VIA HTTPS 방식으로 및 default 프로젝트 설정 후 저장해놓은 username 및 password 입력하여 레포지토리를 연결합니다.

    Untitled

    Untitled

ArgoCD Application 생성

  • Application 탭으로 이동 후 default 프로젝트, Manual SYNC POLICY, 기존 설정한 Repository URL, game-2048 Path, 기본 Cluster URL을 선택한 다음 ArgoCD App을 생성합니다.

    image
  • Application 으로 이동하여 Chart 레포지토리와 Sync를 맞춰 줍니다.

    image
  • 3~4분 후 ingress를 통하여 ALB가 프로비저닝 된 후 ALB DNS를 통하여 브라우저에 접속합니다. image

  • Values.yaml에 ReplicaSet 갯수를 변경 후 Chart 레포에 푸시합니다.

    image
    git add .
    git commit -m "Updated replicas to 4"
    git push origin main
    
  • ArgoCD로 이동하여 Application을 Sync 후 변경된 replica 갯수를 확인합니다.

    image image
💡Book-Sample api 레포에서 ArgoCD를 이용한 GitOps 형태의 지속적 배포를 구성하기 위해선 어떤 작업이 필요할까요??

Container insight 활용을 위한 CloudWatch Agent 설치

ArgoCD로 이동하여 Setting > Repository로 이동 후 Connnect Repo를 통해 Public EKS Chart 레포지토리를 연동합니다. image

Cloudwatch Metrics ArgoCD Application 생성

  • Application 탭으로 이동 후 아래와 같은 값을 입력 후 ArgoCD App을 생성합니다.

    • Application Name: cloudwatch-metrics
    • Project Name: default
    • SYNC POLICY: Manual
    • AUTO-CREATE NAMESPACE: true
    • Sourece: eks-charts
    • Path: stable/aws-cloudwatch-metrics
    • Cluster URL: https://kubernetes.default.svc
    • Namespace: amazon-cloudwatch
    • Helm/clusterName: <Your_Cluster_Name>
    image
  • 생성한 Application을 클릭하여 sync를 통해 Cloudwatch Metric Helm 차트를 배포합니다.

    image
  • Daemonset 이 잘 동작하는지 로그를 확인 합니다.

      kubectl logs <Daemonset_name> -n amazon-cloudwatch
    

Container insight 확인

  • Cloudwatch agent를 통해서 메트릭을 잘 수집하고 있는지 확인하기 위해 Cloudwatch > Container Insight로 이동합니다.

    image

Cloudwatch Dashboard 배포

  • Custom Cloudwatch Dashboard를 구성하여 EKS와 관련된 지표 및 알림을 확인 합니다. image