본문 바로가기

EKS

(38)
EKS Cloudwatch 연동 - 2. EKS Cluster Metric 수집 공식 다큐먼트와 똑같이 구성할 것이기 때문에, 이전 글에서 다큐먼트를 참고하셔도 좋습니다. 먼저 Cloudwatch namespace를 구성하도록 하겠습니다. kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/master/k8s-yaml-templates/cloudwatch-namespace.yaml 이제 kubernetes에서 매트릭 수집을 해서 Cloudwatch에 던져 줄 Role을 가진 account를 만들겠습니다. kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-contai..
EKS Cloudwatch 연동 - 1. Intro https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-EKS-quickstart.html https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-EKS-quickstart.html Amazon EKS에서 Container Insights 빠른 시작 설정 docs.aws.amazon.com 위의 공식 다큐를 통해 매트릭 수집 및 로그수집까지 빠르게 수행할 수 있습니다. 하지만, 각각의 요소들을 살펴보면서 디테일한 부분을 컨트롤하여 구성하기 원한다면, 매트릭 수집은 아래 링크를 htt..
EKS Mornitoring - 1. Prometheus & Grafana 세팅 Helm을 통해서 Promethus와 Grafana를 세팅할 것이기 때문에 Helm을 세팅하지 않으셨다면, Helm세팅하기를 보시고 세팅해주세요. 먼저 Metric Server를 구성하여서 쿠버네티스에서 Metric을 확인해보도록 하겠습니다. Metric Server를 통해 HPA나 Prometheus가 현재 쿠버네티스 Pod와 Node의 각 리소스를 체크할 수 있기 때문입니다. 먼저 명령행 JSON 처리기 jq를 설치해줍니다. sudo yum install -y jq 이후 아래 명령어를 수행해서 Metric Server를 세팅해주세요. DOWNLOAD_URL=$(curl -Ls "https://api.github.com/repos/kubernetes-sigs/metrics-server/releases/..
EKS CICD Automation - 3. Jenkins Pipeline (Rolling) 이제 모든 준비가 끝났습니다. 그저 젠킨스 파이프라인 코드만 잘 작성해주시면 됩니다. 저는 스크립트에서 아래와 같은 변수들을 젠킨스에서 선언하고 사용합니다. 스크립트는 아래와 같습니다. pipeline { agent any stages { stage('Git Clone') { steps { script { try { git url: "https://$GIT_URL", branch: "master", credentialsId: "$GIT_CREDENTIALS_ID" sh "sudo rm -rf ./.git" env.cloneResult=true } catch (error) { print(error) env.cloneResult=false currentBuild.result = 'FAILURE' } } } ..
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..