본문 바로가기

kubernetes

(12)
AWS EKS 클러스터 인증 및 kubectl RBAC 설정 방법 외부 호스트에서 새로운 IAM 정보로 AWS EKS의 kubernetes API로 kubectl 명령을 날릴 수 있는 방법을 안내한다. 기본적인 AWS 사용법 및 IAM 서비스에 대한 이해도가 있다는 것을 바탕으로 안내한다. STEP 1 : IAM 사용자에게 할당할 정책 생성 및 할당 아래의 json 내용으로 RBAC을 설정할 IAM 계정에 할당할 정책을 생성한 후 할당한다. { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "eks:ListFargateProfiles", "eks:UpdateClusterVersion", "eks:ListNodegroups", "eks:Descr..
Argo CD Webhook(with Bitbucket) Argo CD에서는 기본적으로 3분 뒤 Git Repository를 폴링하여 새로운 manifest의 업데이트를 감지한다. 이런 지연 시간이 맘에 안든다면, Argo CD API 서버가 Git Repository의 Webhook 이벤트를 수신하도록 구성할 수 있다. Argo CD는 Github, GitLab, Bitbucket, Bitbucket Server 및 Gogs의 git webhook 알림을 지원한다. 이번 글에서는 Bitbucket Webhook 이벤트를 트리거하여 Argo CD Sync를 자동으로 하는 방법을 알아본다. 사전 준비사항은 아래와 같다. kubectl이 설치되어 있어야 한다. Argo CD 대시보드가 있어야 한다.(Argo CD가 설치되어 있어야 한다.) Argo CD에 Webh..
쿠버네티스 Pod의 우아한 셧다운(Graceful shutdown of Pod with Kubernetes) 쿠버네티스에서 새로운 버전의 Pod를 배포할 때, blue-green 방식으로 Rolling update된다. 따라서 기존 Pod를 삭제하고 새로운 Pod로 트래픽을 절체하게 된다. 이 때, 기존 Pod 내부에서 돌아가고 있는 어플리케이션(예를 들어 백엔드 어플리케이션)의 Task가 모두 완료되지 않은 상태에서 기존 Pod를 삭제하게 된다면, 해당 Task 혹은 세션이 만료되지 않은 상태이기 때문에 애플리케이션 레이어의 네트워크 에러 및 장애가 발생할 수 있다. 이는 굉장히 위험할 수 있기 때문에(결제와 관련된 Task의 경우) 반드시 기존 Task를 모두 완료한 상태에서 기존 Pod를 삭제하도록 해야 한다. 일단 Pod의 종료 이벤트에 대해서 알아보자. 참고 Pod의 종료 이벤트 순서는 Pod를 시작하..
kubernetes Pod의 진단을 담당하는 리소스 : probe 프로브(Probe)는 컨테이너에서 kubelet에 의해 주기적으로 수행되는 진단(diagnostic)이다. 진단을 수행하기 위해서, kubelet은 컨테이너에 의해서 구현된 핸들러를 호출한다. 핸들러에는 다음과 같이 세 가지 타입이 있다. ExecAction : 컨테이너 내에서 지정된 명령어를 실행한다. 명령어 상태 코드 0으로 종료되면 진단이 성공한 것으로 간주한다. TCPSocketAction : 지정된 포트에서 컨테이너의 IP 주소에 대해 TCP 검사를 수행한다. 포트가 활성화되어 있다면 진단이 성공한 것으로 간주한다. HTTPGetAction : 지정된 포트 및 경로에서 컨테이너의 IP 주소에 대한 HTTP Get 요청을 수행한다. 응답의 상태코드가 200 보다 크고 400 보다 작으면 진단이 성..
Argo CD Notification Overview Argo CD에서 Slack 혹은 Email로 Notification 작업을 할 수 있는 라이브러리를 스터디한다. 선행 작업 : 쿠버네티스 클러스터가 구성되어있어야 한다. 쿠버네티스 클러스터에 Argo CD가 세팅되어 있어야 한다. 순서(요약) : Slack App 생성 링크 : https://api.slack.fom/apps?new_app=1 App 생성 왼쪽 메뉴에서 OAuth & Permissions 들어가기 Scope 설정(chat:write:bot) Slack App Install OAuth token 확인 k8s 클러스터에 아래 명령어를 통해 notification에 필요한 manifest 적용 kubectl apply -n argocd -f https://raw.githubu..
AWS EKS 클러스터 구축하기 Overview AWS EKS 서비스를 활용하여 kubernetes 클러스터를 구축하는 방법을 스터디한다. 스터디에 앞서 준비사항은 아래와 같다. 로컬 PC에 aws cli 설치 로컬 PC에 kubectl 설치 로컬 PC에 eksctl 설치 EKS에 대한 권한을 가진 AWS IAM 계정 AWS EKS에서는 아래와 같은 방법으로 kubernetes 서비스를 제공한다. 마스터 노드는 AWS가 직접 관리해주고 워커 노드를 프로비저닝하여 사용자가 직접 관리할 수 있도록 워커 노드 EC2를 생성 해주는 방법 마스터 노드와 워커 노드 자체를 AWS에서 모두 관리해주고 사용자는 Pod만 띄워 사용할 수 있도록 해주는 방법 (Fargate) 첫번째 방법의 경우, 워커 노드에 Pod를 띄워 서비스를 배포 및 관리할 때 ..
kubectl에서 연결할 쿠버네티스 클러스터 변경하는 방법 여러개의 쿠버네티스 클러스터를 사용하고 있을 경우 로컬 pc에서 하나의 kubectl로 각 클러스터를 스위칭 해가며 연결할 수 있어야 한다. 예를 들어 아래 두 개의 클러스터가 있다고 가정한다. kube-cluster-1 kube-cluster-2 그리고 kubectl을 사용할 pc(혹은 서버)의 ./kube/config 내용 중 contexts 내용이 아래와 같다고 가정한다. ... contexts: - context: cluster: kube-cluster-1 user: foo@kube-cluster-1 name: foo@kube-cluster-1 - context: cluster: kube-cluster-2 user: var@kube-cluster-2 name: var@kube-cluster-2 ...
AWS EKS에 ALB Ingress Controller 한큐에 세팅하는 스크립트 #/bin/bash echo '>>> CREATE ALBIngressControllerIAMPolicy ' aws iam create-policy \ --policy-name ALBIngressControllerIAMPolicy \ --policy-document https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.3/docs/examples/iam-policy.json echo '' echo '>>> Connecting ALBIngressControllerIAMPolicy To WorkerNode Role' NG_ROLE=`kubectl -n kube-system describe configmap aws-au..