일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 데이터 분석
- 자동화
- zabbix
- powershell
- 8.0
- kibana
- Linux
- MySQL
- Selenium
- ELK
- GIT
- API
- 크롤링
- AWS
- elasticsearch
- ubuntu
- Automation
- ansible
- tcp
- DB
- 시스템자동화
- EKS
- airflow
- EC2
- 5.0
- GCP
- crawling
- module
- apt
- python
Archives
- Today
- Total
Oops - IT
EKS 생성하기 본문
반응형
요구조건
- EKS는 Private 망에다가 구성하며, 외부에서 들어오는 통신은 모두 차단
- EKS는 AWS Public ECR Gallery를 사용할 수 있게 구성
- EKS에서의 K8S RBAC 및 Pod 내부 권한을 IAM을 통해 할당 할 수 있도록 구성
VPC 구성
- EKS에 사용할 VPC를 생성해줍니다.
- 네트워크 구성
- 대상 요구 조건
- EKS는 Private 망에다가 구성하며, 외부에서 들어오는 통신은 모두 차단 (Private 서브넷으로 구성)
- Public AWS ECR Gallery 이미지 사용 (Private 망에서 Public AWS ECR 사용을 위해 Inetrnal -> External 통신 NAT GW 통한 흐름 구성)
- 구성 요약
- 요구조건에 맞추기 위해, Public - Private를 조합한 Hybrid 형태로 구성
- Public Subnet
- Default - IGW
- 내부 통신 - Local
- Private Subnet
- Default - NAT GW(Public Subnet)
- 내부 통신 - Local
- Public Subnet
- 대상 요구 조건
- VPC 및 관련 서비스 구성은 AWS에서 제공하는 CloudFormation 템플릿을 활용하여 구성합니다.
- CloudFormation 접속 -> 스택 생성
- 템플릿 주소
- 스택 생성 (저는 내부 VPC 대역을 10.0.0.0/16 대역으로변경해 주었습니다.)
- 리소스 생성 확인
- VPC 생성확인
- 서브넷 4개 생성 확인 (Public 2EA, Private 2EA)
- 인터넷 GW 생성 확인
- NAT GW 생성 확인
- 라우팅 테이블 확인
- Public
- 10.0.0.0/16 - Local
- 0.0.0.0/0 - IGW
- Private
- 10.0.0.0/16 - Local
- 0.0.0.0/0 - NAT GW
- Public
EKS 생성 (Console)
- EKS 생성
- 빠른 구성(★ 선택)
- EKS Default 구성
- 사용자 지정 구성
- 네트워크 및 클러스터 구성에 대한 세부 사항 커스터 마이징 가능
- 빠른 구성(★ 선택)
- 이번 포스팅에서 EKS 생성은 빠른 구성을 통해 진행하였습니다.
- 클러스터 이름 입력
- 클러스터 버전 선택
- default
- 클러스터 IAM 역할 및 노드 IAM 역할을 권장 생성 하여, 새로 고침 후 할당
- 서브넷 할당
- 기존에 생성한 Private 서브넷 2EA 할당
- 클러스터 생성에 약 15분 ~ 20분 정도 소요되므로, 천천히 기다려 주시면 됩니다.
- 생성 완료 시, EKS 선택 시 아래와 같이 접속 가능한 정보가 출력이 됩니다.
- 생성 완료 시, EKS 선택 시 아래와 같이 접속 가능한 정보가 출력이 됩니다.
Kubeconfig 업데이트
- 클러스터 접속을 위해 기존 생성된 IAM 유저 계정에 권한 할당
- 생성된 EKS 선택 -> IAM 엑세스 항목 선택 -> 액세스 항목 생성 -> IAM User 선택 및 알맞은 K8S RBAC 부여
- Kubeconfig 업데이트
## kubeconfig 파일 생성
# aws eks update-kubeconfig --region ap-northeast-2 --name <클러스터 이름>
## kubeconfig 파일 확인
# cat ~/.kube/config
## kubectl 명령어 확인
# kubectl get nodes
- kubectl 설치가 안되어 있으시다면, 아래 URL 참조하여 OS에 맞추어 설치
EKS 추가 기능 활성화
- EKS 본격적인 사용을 위해 EKS에서 제공하는 추가 기능을 활성화 해줍니다.
- 빠른 시작으로 선택 시 기본적으로 "metrics server" 기능만 활성화 됩니다.
- 추가 기능 배포
- Amazon VPC CNI
- Amazon에서 제공하는 Container Network Interface로 컨테이너 간의 네트워크 통신을 할 수 있게 지원합니다.
- 비슷한 기능으로는, Calico, Flannel 등이 있습니다.
- CoreDNS
- K8S 내부에서 DNS 역할을 하는 기능 (클러스터 내부에서 DNS 기반 통신 지원)
- ex) xxx.<namespace>.svc.cluster.local
- kube-proxy
- Pod에 대한 네트워크 매핑 지원
- Amazon EKS POD Identity 에이전트
- POD에 AWS IAM 기반 권할 할당 시 사용
- Amazon VPC CNI
- 추가 기능 배포는 EKS 내 추가 기능 탭을 통해서 손쉽게 배포 가능합니다.
테스트 파드 배포
- 테스트 Nginx Pod 배포
- nginx-deploy.yaml
## nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: web
image: public.ecr.aws/nginx/nginx:1.26-alpine-perl
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
selector:
app: nginx
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
- Pod 배포
## 테스트 Pod 배포
# kubectl apply -f nginx-deploy.yaml
## 테스트 Pod 확인
# kubectl get all -n default
다음 포스팅에서는 EKS 내에 생성한 Nginx Pod를 ELB를 통해 외부로 노출 시키는 방법에 대해서 다뤄보겠습니다.
반응형
'AWS' 카테고리의 다른 글
Lambda 사용 해보기 (2) | 2025.01.15 |
---|---|
EKS 생성하기 - LB를 통한 서비스 외부 노출 (0) | 2025.01.14 |
AWS 면접 후기 (에필로그) (0) | 2025.01.08 |
AWS 면접 후기 (10) | 2024.11.28 |
AWS SSO 구성 (0) | 2023.04.13 |