본문 바로가기

EKS

(38)
EKS CICD Automation - 4. ArgoCD Blue/Green Deployment 공식 다큐는 아래와 같습니다. argoproj.github.io/argo-rollouts/features/bluegreen/ BlueGreen - Argo Rollouts - Kubernetes Progressive Delivery Controller BlueGreen Deployment Strategy A Blue Green Deployment allows users to reduce the amount of time multiple versions running at the same time. Overview In addition to managing ReplicaSets, the rollout controller will modify a Service resource during the BlueG ..
Kubernetes - Affinity & NodeSelector 사용하기 클러스터를 운영하다 보면 노드의 부하, Zombie Pod 이슈등 많은 이유로 인해 노드가 뻗을 수 있습니다. 이때, 뻗은 노드에 어떤 서비스들이 올라가 있는지 파악되지 않아 대처에 오토스케일링만을 기다리다가는 트러블 슈팅의 시간이 너무 오래걸릴 수 도 있으며, 리소스를 너무 많이 잡아먹거나 특별하게 따로 관리해야 하는 서비스인 경우 노드를 선택하여 파드를 띄울 필요성이 있습니다. 이러한 부분을 해결하기 위한 것이 NodeSelector와 Affinity입니다. NodeSelector는 차후 사용되지 않을 예정이기 때문에, Affinity를 사용하여 진행해 주셔야합니다. 쿠버네티스 Docs는 상당히 정리가 잘 되어있기 때문에, Docs링크를 먼저 공유드립니다. kubernetes.io/ko/docs/ta..
Istioctl로 Istio 구성하기 - 3. Kiali 소개 Kiali는 Istio를 통해 서비스매쉬를 구성하시고 이를 모니터링할 수 있는 툴입니다. 아래와 같이 실제 데모로 구축한 fo / bo 어플리케이션의 request per second 값이나 보안통신이 되고있는지 등 여러 내역들에 대해서 서비스매쉬가 그래프로 그려지면서 한눈에 쉽게 확인 할 수 있습니다. 조금 더 살펴보면 해당 응답들에 대한 비율도 살펴볼 수 있습니다. 위의 그림에서 우측 부분을 좀더 확대해 본 형태입니다. 만약 실시간으로 트래픽에서 다른 400, 500 Error가 발생한다면, 그래프의 색깔이 변경되면서 한눈에 들어오게 됩니다. 또한 Application단을 클릭하여 해당 파드의 로그도 바로 체크를 할 수 있습니다. External-DNS의 파드 로그를 아래와 같이 대시보드에서 실시간으..
Istioctl로 Istio 구성하기 - 2. Values.yaml istio.io/pt-br/docs/reference/config/istio.operator.v1alpha12.pb/ 공식다큐도 충분히 잘 나와있지만 간단한 샘플이 없어서 글을 작성하게 되었습니다. 위의 공식 다큐를 참고하면, values.yaml을 만들어서 아래 명령어로 istio 구성에 대해 수정 및 구축을 할 수 있습니다. istioctl install -f ./istioctl_values.yaml istioctl upgrade -f ./istioctl_values.yaml 잘 읽어보시면, helm으로 설치하며 지원하던 values의 형태도 지원하기 때문에 해당 내역을 같이 섞어서 아래와 같이 사용하였습니다. apiVersion: install.istio.io/v1alpha1 kind: IstioO..
Istioctl로 Istio 구성하기 - 1. Intro discuss.istio.io/t/istios-helm-support-in-2020/5535 Istio's Helm Support in 2020 I would like to take some time to clarify Istio’s plans for Helm support in 1.5, 1.6, and beyond. By way of background, Istio 1.3 introduced the Istio Operator as an experimental feature which allows administrators greater ease of use and flexibility whe discuss.istio.io 위의 내용에서와 같이 istio 1.6이상의 버전에서는 helm 차트를 지원하지 ..
Kubernetes - ConfigMap & Secret / Spring Boot 연동 우리나라는 그래도 자바공화국이니 Spring Boot를 기준으로 ConfigMap, Secret을 활용하는 법을 알아보겠습니다. Kubernetes의 ConfigMap과 Secret은 컨테이너 환경 변수를 통해 어플리케이션에 Key Value 형태로 데이터를 매핑하여 사용할 수 있습니다. 가장 쉬운 예로 Database URL / User / Password 같은 값들을 변경하거나 직접 코드에 입력하는 것이 보안상의 이유로 불가능 하거나, 이러한 설정값을 변경을 한 후 배포하게 되어 수 많은 CICD Pipeline을 타야 할 경우 상당히 번거로울 수 있습니다. 따라서 코드에 작성할 부분들과, 쿠버네티스에서 관리할 수 있는 부분들을 나눠 운영하게 되면 서비스 운영에 효율성을 높일 수 있습니다. 먼저 Co..
EKS Cluster 구축 - 8. EKS IAM User - RBAC 권한 부여 EKS Cluster를 구축하면, 구축한 IAM에 대해서는 마스터 권한이 있습니다. 또한 아래와 같이 수정하여 다른 IAM 유저에게도 그 권한을 부여할 수 있습니다. kubectl edit configmap aws-auth -n kube-system apiVersion: v1 data: mapRoles: | - groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::{account_id}:role/{workernode-role} username: system:node:{{EC2PrivateDNSName}} mapUsers: | - userarn: arn:aws:iam::{account_id}:user/{user_name1} username..
EKS Cluster 구축 - 7. Pod에 IAM Role 부여하기 기존에 Pod에 IAM Role을 부여하기 위해서는 Kube2IAM or KIAM을 사용하였습니다. KIAM은 하나의 노드에서 어슘롤을 가지고 모든 SDK의 응답을 대신해서 처리해주는 방식, Kube2IAM은 모든 노드가 어슘롤을 가지고 각 파드들의 응답을 처리하는 방식입니다. 하지만 이제 EKS 1.14이상부터는 IAM OIDC를 통해 Service Account와 연동되게 구성할 수 있습니다. 이렇게 되면, 각 노드에 어슘롤이 부여 될 필요가 없으며 정말 해당 파드가 EC2에 롤을 부여하듯 롤을 가지게 됩니다. 제가 이해한 바로는 아래와 같습니다. 틀릴 수도 있으니 참고용으로만 보시기 바랍니다. 제가 이해한 바로는 쿠버네티스 API는 아래와 같은 절차를 거쳐 처리되게 됩니다. API 서버로 들어오는 ..