본문 바로가기

전체 글

(148)
EKS CICD Automation - 2. Install ArgoCD 먼저, ArgoCD가 바라보게 할 Repository를 만들어줍니다. 이제 ArgoCD를 설치해보겠습니다. 먼저 ArgoCD 버전을 체크하도록 하겠습니다. 저는 현재 작성 기준 1.4.2가 가장 최신이며, HA로 구성을 하도록 하겠습니다. ArgoCD CLI를 설치하는 명령어입니다. curl -LO https://github.com/argoproj/argo-cd/releases/download/v1.4.2/argocd-linux-amd64 chmod u+x argocd-linux-amd64 sudo mv argocd-linux-amd64 /usr/local/bin/argocd 만약 CLI 명령어를 찾지 못한다면, 아래와 같이 Path 등록을 해주시면 됩니다. export PATH=/usr/local/bi..
EKS CICD Automation - 1. Intro EKS 자동화 배포에 대한 부분은 굉장히 많은 방법이 있습니다. 저는 많은 방법들 중 GitOps 방식만 먼저 작성해보도록 하겠습니다. 전체적인 흐름은 아래와 같습니다. EC2 및 ECS에서의 배포흐름을 충분히 공부하셨으니 어렵지 않게 이해가 되실거라고 봅니다. 추가적인 부분으로는 kubernetes가 yaml로 정의된 형태로 서비스가 구축되기 때문에 서비스에 대한 코드부터 실제 서비스가 수행되는 인프라부분까지 모두 git에서 관리하는 GitOps Style 구성을 가지게 됩니다. 이때 kubernetes yaml에 대한 repository를 지속적으로 모니터링 체크하고있다가 Sync하여 쿠버네티스를 구성했던 그대로 유지 및 배포하게 하는 ArgoCD를 사용하여 GitOps방식의 CICD 자동화를 구축할..
EKS Cluster 구축 - 5. Helm2 설치 Helm이란 Kubernetes Package manage tool로 Mac의 brew, NodeJS의 npm과 같은 느낌이라고 생각하시면 됩니다. 각 패키지를 Chart라고 부르며, 이를 통해 필요한 리소스들을 쉽게 설치하고 운영할 수 있습니다. 아래 쉘을 수행해서 Helm을 다운로드 받습니다. mkdir -p ~/environment cd ~/environment curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh chmod 700 get_helm.sh ./get_helm.sh 만약 Amazon Linux에서 위의 명령어를 수행하는 중에 path에러가 난다면, 아래 쉘을 수행해주세요 export PATH=/..
EKS LoadBalancer - 3. Network LoadBalancer AWS공식다큐를 읽어보면, NLB는 CLB와 같이 LoadBalancer type으로 지원됩니다. 따라서 아래와 같이 적용하여서 NLB를 만들어보도록 하겠습니다. apiVersion: v1 kind: Service metadata: name: cb-test-api namespace: prd-api annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:ap-northeast-2:{account-number}:certificate/{id} external-dns.alpha.kubernetes.io/hostname: {dom..
EKS LoadBalancer - 2. Application LoadBalancer EKS에서 ALB를 사용하기 위한 공식 링크들을 먼저 다음과 같습니다. https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/alb-ingress.html https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/alb-ingress.html Amazon EKS의 ALB 수신 컨트롤러 docs.aws.amazon.com kubernetes-sigs.github.io/aws-load-balancer-controller/guide/ingress/annotations/#annotations Annotations - AWS LoadBalancer Controller Ingress annotations You can add an..
EKS LoadBalancer - 1. Classic LoadBalancer, External DNS 파드를 노출시키는 부분은 Service이기 때문에 service.yaml을 수정하도록 하겠습니다. service.yaml을 다음과 같이 수정 배포하도록 하겠습니다. apiVersion: v1 kind: Service metadata: name: cb-test-api namespace: prd-api spec: ports: - port: 80 targetPort: 9000 protocol: TCP type: LoadBalancer selector: app: cb-test-api 혹은 아래와 같은 명령어를 주셔서 바꿀 수도 있습니다. kubectl patch svc cb-test-api -n prd-api -p '{"spec": {"type": "LoadBalancer"}}' 수정한 후 아래와 같이 CLB가..
EKS Cluster 구축 - 4. Pod 배포하기 kubenetes는 사용자가 kubectl을 통해 API을 Kubernetes Mater Node에 콜하게 되면, 마스터노드는 yaml 파일을 가지고 정의된 대로 Object를 생성하고 Worker Node에 이를 구축하게 되는 형태입니다. 따라서 yaml파일 작성하는 방법에 대해 완벽하게 이해할 수록 좋습니다. 공식 다큐 링크들을 참고하시면 도움이 많이 됩니다. https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/ 쿠버네티스 오브젝트 이해하기 kubernetes.io https://github.com/kubernetes/community/blob/master/contributors/devel/sig..
EKS Cluster 구축 - 3. Worker Node Group, Security Group 설정 EKS CLUSTER가 모두 완성되었기 때문에 Node Group을 추가해보도록 하겠습니다. 서브넷을 Private만 선택하여서 실제 서비스는 Private Network에만 구성되도록 하겠습니다. 인트로에서 말씀드렸듯 EC2 Type에 따라서 Pod수의 제한이 있습니다 원활한 구성을 위해서 t3.large를 골라주도록 하겠습니다. Type별 Pod제한을 통해서 체크해주세요 이제 구성이 끝나면 Security Group 설정을 아래와 같이 해주시면 되겠습니다. Cluster를 Security Group 설정 없이 그냥 구축하게 되면 eks-cluster-~~~ 라 나오는 것이 Cluster SG이고, remoteAccess-~~~가 WorkerNode SG입니다. 다큐링크를 참고하셔서 구성하시면 됩니다...