본문 바로가기

AWS EKS 실습

(36)
Kubernetes access 관리를 위한 IAM Groups 사용 ㅁ Create IAM Roles 3개의 Role을 만든다. ㅇ k8sAdmin (EKS Cluster를 위한 admin 권한) ㅇ k8sDev (EKS Cluster의 developers namespace에 액세스 권한 할당) ㅇ k8sInteg (EKS Cluster의 Integration namespace에 액세스 권한 할당) POLICY=$(echo -n '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::'; echo -n "$ACCOUNT_ID"; echo -n ':root"},"Action":"sts:AssumeRole","Condition":{}}]}') echo ACCOUNT_ID=..
Intro to RBAC RBAC의 논리적 구성요소는 다음과 같다. ㅇ Entity 그룹, 사용자 또는 서비스 계정 (특정 작업을 실행하고 이를 수행하는데 권한이 필요한 애플리케이션을 나타내는 ID) ㅇ Resource Entity가 특정 작업을 사용하여 액세스하려는 Pod, Service 또는 Password ㅇ Role Entity가 다양한 Resource에 대해 수행 할 수 있는 작업에 대한 규칙을 정의하는데 사용 ㅇ Role binding 규칙 집합이 지정된 리소스에 대해 연결된 Entity가 허용하는 작업을 정의함을 나타내며 Role을 Entity에 연결(Binding) 한다. 두 가지 유형의 Roles(Role, ClusterRole)과 각 바인딩(RoleBinding, ClusterRoleBinding)이 있다. 이..
Autoscaling with HPA and CA K8S의 Autoscaling은 2가지 형태로 제공된다. - Horizontal Pod Autoscaler (HPA) : Deployment 또는 replica set에서 Pod를 확장한다. K8S API resource와 controller로 구현되고 Conteroller manager는 각각의 HPA 정의에 지정된 메트릭에 대해 리소스 사용률을 쿼리한다.리소스 메트릭 API(Pod당 리소스 메트릭) 또는 사용자 지정 메트릭 API에서 메트릭 정보를 가져온다. clarkshim.tistory.com/128포드와 클러스터 노드의 오토스케일링쿠버네티스의 스케일링 방안 - 포드에서 실행되는 애플리케이션은 리플리케이션컨트롤러, 레플리카셋, 디플로이먼트 또는 확장 가능한 리소스의 복제본 필드를 늘려서 수동으로 ..
HEALTH CHECKS 실습 (Liveness Probe/Readiness Probe) Kubernetes는 어떠한 이유로 충돌이 발생하면 컨테이너를 다시 시작한다. Traffic을 보낼 정상 컨테이너를 식별하고 필요할 때 다시 시작하도록 구성할 수 있는 Liveness 및 Readiness Probe를 사용한다. ㅁ Liveness Probe: Kubernetes에서 Pod가 살아있는지 죽었는지 확인할 때 사용된다. Pod는 다양한 이유로 Dead 상태로 될 수 있는데 Kubernetes는 Liveness probe가 통과하지 못하면 Pod를 죽이고 다시 만든다. clarkshim.tistory.com/76?category=1003649 라이브니스 프로브 (Liveness Probe) 쿠버네티스는 라이브니스 프로브 (Liveness probe)를 통해 컨테이너가 아직 살아 있는지 확인 할..
Helm으로 nginx 설치 Helm은 여러 Kubernetes Resource를 Chart 라는 단일 논리적 배포 단위로 패키징하는 Kubernetes용 패키지 관리자 및 애플리케이션 관리 도구 이다. Helm은 다음 이점을 제공한다. ㅇ 단순하고 (하나의 명령) 반복 적인 Deployment 수행 ㅇ 다른 애플리케이션 및 서비스의 특정 버전을 사용하여 애플리케이션간의 종속성 관리 ㅇ 여러 배포 구성 관리: Test, Stag, Production 등 ㅇ 업데이트 / 롤백 및 애플리케이션 배포 테스트 ㅇ Install the Helm CLI $ curl -sSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash ㅇ 설치된 버전 확인 $ helm..
Sample Application 배포 Sample Deployment YAML [deployment.yaml] apiVersion: apps/v1 kind: Deployment metadata: name: ecsdemo-nodejs labels: app: ecsdemo-nodejs namespace: default spec: replicas: 1 selector: matchLabels: app: ecsdemo-nodejs strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: app: ecsdemo-nodejs spec: containers: - image: brentley/ecsdemo-nodejs:lat..
3. EKSCTL을 사용하여 EKS 환경 구성 1. eksctl 설치 $ curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp sudo mv -v /tmp/eksctl /usr/local/bin $ eksctl version 0.38.0 ㅇ Enable eksctl bash-completion $ eksctl completion bash >> ~/.bash_completion . /etc/profile.d/bash_completion.sh . ~/.bash_completion 2. EKS Cluster 생성 ㅇ eks yaml 생성 cat eks-newelit..
2. 사전 준비 - 5 (Service Repo, SSH, KMS) 1. Clone the service Repos (예제에서 준비한 서비스에 대한 git 설정 $ cd ~/environment $ git clone https://github.com/brentley/ecsdemo-frontend.git brentley/ecsdemo-frontend Contribute to brentley/ecsdemo-frontend development by creating an account on GitHub. github.com $ git clone https://github.com/brentley/ecsdemo-nodejs.git brentley/ecsdemo-nodejs Part 3 of a 4 part ECS workshop. Contribute to brentley/ecsd..