본문 바로가기

AWS EKS 실습

(36)
Implement Logging with EFK Fluent Bit: 다양한 소스에서 데이터/로그를 수집하고 통합하여 여러 대상으로 보낼 수 있는 오픈 소스 및 다중 플랫폼 로그 프로세서 및 Fowarder이다. Docker 및 Kubernetes 환경과 완벽하게 호환된다. Amazon Elasticsearch 서비스: Elasticsearch를 비용 효율적으로 배포, 보호 및 대규모로 실행 할 수 있게 해주는 완전 관리형 서비스이다. Kibana: Elasticsearch를 기반으로 오픈 소스 FrontEnd Application으로, Elasticsearch에서 인덱싱 된 데이터에 대한 검색 및 데이터 시각화 기능을 제공한다. Fluent Bit, Elasticsearch 및 Kibana를 함께 사용하면 EFK Stack이라고 한다. ㅁ Confi..
CI/CD with CodePipeline (다시 볼것) ㅁ Create IAM Role 간단한 sample kubernetes service를 deploy하기 위하여 AWS CodeBuild를 사용한다. 이 것을 위하여 먼저 EKS Cluster와 Interacting이 가능한 IAM role을 먼저 정의한다. 다음과 같이 정의한다. cd ~/environment TRUST="{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::${ACCOUNT_ID}:root\" }, \"Action\": \"sts:AssumeRole\" } ] }" echo '{ "Version": "2012-10-17", "Stateme..
Deploying Jenkins for Kubernetes 먼저 CodeCommit repository를 생성한다. 이 repository는 application code와 Jenkinsfile을 저장하기 위한 장소이다. aws codecommit create-repository --repository-name eksworkshop-app { "repositoryMetadata": { "repositoryName": "eksworkshop-app", "cloneUrlSsh": "ssh://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/eksworkshop-app", "lastModifiedDate": 1616109672.528, "repositoryId": "826bfbfd-2a75-4242-ac8d-87ad614..
Advanced POD CPU and Memory management LimitRange는 namespace에서 Request와 Limit 사이의 비율을 계산, 저장 또는 적용하는데 사용된다. 이 섹션에서는 컴퓨터 워크로드를 low-usage, high-usage 그리고 unrestricted-usage로 구분한다. 먼저 분리된 Namespace를 만든다. mkdir ~/environment/resource-management kubectl create namespace low-usage kubectl create namespace high-usage kubectl create namespace unrestricted-usage ㅁ Create Limit Range low-usage와 high-usage namespace level에 대한 LimitRange spec을 만..
Pod Priority And Preemption Pod Priority는 다른 Pod에 비해 Pod의 중요도를 적용하는데 사용된다. 이 섹션에서는 두 개를 만들고 PriorityClass Pod의 상호 작용을 확인 한다. ㅁ PriorityClass 만들기 cat
Resource Quotas ResoureQuotas는 CPU, Mem, Storage 및 서비스와 같은 리소스를 제한하는 데 사용된다. 이 섹션에서는 ResourceQuotas를 Blue, Red 두 팀을 만들어 설정한다. # Create different namespaces kubectl create namespace blue kubectl create namespace red Resource Quota 생성 두 팀이 같은 리소스를 공유한다. Red팀은 Load Balancer 수에 제한을 두고 Blue팀은 메모리/CPU 사용량 제한을 한다. kubectl create quota blue-team --hard=limits.cpu=1,limits.memory=1G --namespace blue kubectl create quota..
Resource management 기본 ㅁ Resource Management 기능 정의 Kubernetes Request Pod에 사용 가능한 정의된 리소스가 충분히 있는지 확인하는데 사용된다. Pod가 지정된 것보다 더 많이 사용할 수 있다. 이것은 Soft Limit으로 간주된다. Kubernetes Limit Pod가 지정된 범위 이상으로 사용하지 않도록 하는데 사용된다. 이것은 Hard Limit으로 간주된다. Kubernetes Quotas Namespace당 리소스 사용량을 제한하는데 사용된다. Kubernetes Pod Priority and Preemption Pod별 우선 순위를 적용하는데 사용된다. Pod를 Node에 배치할 수 없는 경우 우선 순위가 낮은 Pod를 선점하거나 제거할 수 있다. ㅁ POD CPU 및 MEMO..
OPA Policy - Example 1: 승인된 Container Registry 만 사용하도록 정책 정의 Amazon EKS Cluster 내에서 컨테이너 이미지에 대해 승인된 내부 레지스트리를 사용하도록 사용자를 제한할 수 있다. 기본적으로 Cluster는 공개 이미지 리포지토리를 사용하도록 허용되어 있다. 먼저 Public Repository에서 nginx 이미지를 풀링하도록 허용하는 test Pod manifest를 생성한다. cat > public-nginx.yaml