본문 바로가기

전체 글

(148)
EKS istio - 1. Intro istio는 무엇이며 istio를 사용했을 때, 어떠한 형태의 흐름을 갖게되는지 간단하게 설명하도록 하겠습니다. istio란 무엇일까요? 우리가 실제로 서비스를 구축하고 운영하게 되면 장애가 발생하지 않을 수는 없습니다. 특히나 MSA 아키텍쳐로 구성 개발하게 되면 각 서비스간의 트래픽의 장애 모니터링 및 조치를 고민하게 됩니다. Service Mesh를 통해 각 서비스간의 통신을 엮고 관리하는데, 그 방법은 아래와 같습니다. 먼저, istio는 control plane과 data plane으로 나뉩니다. Control Plane은 경량 프록시를 서비스 옆에 컨테이너로 하나 띄워서 정책을 주고, 그 정책을 가지고 트래픽을 컨트롤하게 됩니다. 각 구성요소를 하나씩 보면, Envoy 서비스 메시를 구성하는 ..
EKS Mornitoring - 2. AlertManager 세팅 공식다큐는 다음과 같으며, https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/ Alerting rules | Prometheus Alerting rules allow you to define alert conditions based on Prometheus expression language expressions and to send notifications about firing alerts to an external service. Whenever the alert expression results in one or more vector elements at a given po prometheus.io 각 Alert.y..
EKS Cloudwatch 연동 - 3. FluentD - Cloudwatch 연동 먼저, 앞의 부분을 수행하시고 지우지 않으셨다면, 네임스페이스가 생성되어있기 때문에 수행하지 않으셔도 됩니다. 아래 명령어를 수행해서, 네임스페이스를 만들어주세요. kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/master/k8s-yaml-templates/cloudwatch-namespace.yaml Fluent.D 설치 kubectl create configmap cluster-info \ --from-literal=cluster.name=CB-TEST-EKS-CLUSTER \ --from-literal=logs.region=ap-northeast-2 -n amazon-..
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..
ECS CICD Automation - 9. ECS Linear, Canary Deployment Intro https://aws.amazon.com/ko/blogs/containers/aws-codedeploy-now-supports-linear-and-canary-deployments-for-amazon-ecs/ AWS CodeDeploy now supports linear and canary deployments for Amazon ECS | Amazon Web Services AWS CodeDeploy has extended blue/green deployment support for Elastic Container Service (Amazon ECS) to include canary and linear deployments for applications hosted on AWS Fargate or Am..
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' } } } ..