AWS 쿠버네티스 핸즈온 워크샵! EKS 빠르게 찍먹해보자

2022. 11. 7. 21:36Basic Web Servie

컨테이너로 서비스 배포할 생각에 가슴이 도키도커!

intro

금일 코엑스에서 진행한 aws EKS 관련 워크샵에 참석하고 나서  다시 생각하면 좋을 내용을 정리했습니다. 😋 필자는 예전에 서비스를 ECS로 운영을 해본 경험이 있어서 사용하면서 있었으면 했던 부분들이 EKS에 있는 것을 보며 새로웠습니다. 
 워크샵 당시 시간이 부족해서 내용들이 빠르게 지나갔는데 EKS를 도입한다면 알아야할 기본 개념과 워크샵 당시 추천해준 툴의 패스트 가이드를 공유합니다!

So Why K8s and Why EKS?

Conception of Node in k8s

k8s, 쿠버네티스가 길다고 줄인 단어라고 합니다. 우리가 보통 서버를 만들고 배포를 한다고 하면 서버가 돌아가는 '인스턴스'를 사람들이 접속할 수 있는 퍼블릭한 클라우드 컴퓨팅 서비스에 올리거나 자체 서버 포트에 연결하는 것을 생각합니다. 쿠버네티스는 이러한 서버 단위를 컨테이너로 만들어서 Pod, Node로 관리하여 대용량 트래픽과 서비스 운영을 보다 효율적으로 하기 위해서 컨테이너화된 워크로드와 서비스를 관리하기 위한 오픈 플랫폼 서비스라 생각하시면 됩니다.

출처: Techtarget

ECS, EKS 둘다 컨테이너 오케스트레이션 환경이라는 공통점은 있지만 ECS 같은 경우 AWS 내 서비스로만 사용해서 써야하기 때문에 호환성에 있어서 초큼 문제가 될 수 있다고 봅니다. (ECR에 이미지를 올려서 사용해야한다 든지...) 그렇기 때문에 EKS를 사용한다면 aws의 ECS를 사용하다가 클라우드 컴퓨팅 서비스를 변경하거나 비용 절감을 위한 다각도 전략을 사용하기 편리하다는 것 입니다.

 

 

 

RBAC  ( Role Based Access Control)


특정 애플리케이션을 실행 시키기 위한 Entity와 작업에 필요한 resource, Entity들의 작업 수행규친에 대한 Role을 가지고 Role binding을 진행하고 Name spaces(쿠버네티스의 보안경계 그룹)에 따라 Access를 조절하는 것을 RBAC라고 한다

* EKS를 사용하려면 전용 IAM을 role를 통해서 EKS 권한부여가 오히려 안전하다
자세한 내용은 여기!

 

 

ArgoCD

 

출처: https://kangwoo.kr/tag/argocd

ArgoCD는 쿠버네티스를 위한 CD툴로 Manifest 파일의 변경사항을 감지하여 현재 배포된 노드의 환경과 Github Repo의 최신 버전이 싱크가 된 상태를 유지할 수 있도록 도와준다. 터미널 CLI 환경에서 상태를 체크하기 어려움이 있는데 Argo CD를 위한 서버를 오픈한 다음에 브라우저에서 GUI로 보다 편리하게 사용할 수 있다는 장점이 있다.

1. argocd를 위한 namespace를 생성하고 argocd를 쿠버네티스 클러스터에 배포한다

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.4.7/manifests/install.yaml

2. 배포가 제대로 되었는지 확인한다.

kubectl get all -n argocd

3. argocd CLI를 설치한다

sudo curl --silent --location -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/v2.4.7/argocd-linux-amd64

sudo chmod +x /usr/local/bin/argocd

4. 서비스 타입을 로드벨런서로 설정한다 (로드밸런서 생성을 위해 삽분 기다려주는 것을 추천!)

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

5. nodeport 설정을 해준다

kubestl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'

6. Ingress 설정을 해준다 가이드 참조!

 

Ingress Configuration - Argo CD - Declarative GitOps CD for Kubernetes

Ingress Configuration Argo CD API server runs both a gRPC server (used by the CLI), as well as a HTTP/HTTPS server (used by the UI). Both protocols are exposed by the argocd-server service object on the following ports: 443 - gRPC/HTTPS 80 - HTTP (redirect

argo-cd.readthedocs.io

7. Port Fowarding 설정

kubestl port-forward svc/argocd-server -n argocd 8080:443

8. IP주소 및 포트확인!

kubestl describe svc argocd-server -n argocd

9. 아이디는 admin 비밀번호는 터미널 결과 참조!

export ARGO_PWD=`kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d`

 

 

helm(쿠버네티스 패키지 매니저)

helm은 쉽게 말하자면 쿠버네티스에게 nodeJS 의 npm, yarn과 비슷한 존재라고 생각하면 된다. YAML 형식으로 이루어져 있으며 이것을 chart라고 한다. chart에는 values.yaml과 templates 디렉토리가 있다. values.yaml에는 사용자가 원하는 설정 값들이 변수처럼 저장되어 있으며, 이를 터미널 상에서 환경변수처럼 사용이 가능하다. templates 디렉토리에는 설치할 리소스 파일이 존재한다.

 

 

 helm을 잘 활용하면 오픈소스 애플리케이션도 손쉽게 내 소유의 쿠버네티스 클러스터로 가져올 수 있다. 도커가 단순히 프로세스 레벨에서 외부의 것을 가져다 쓸 수 있게 해준것이라면, 쿠버네티스에서는 helm을 이용하여 애플리케이션에서 필요한 모든 자원들을 외부에서 가져올 수 있게 한다.

 


이에대한 실습은 아래 링크에서 자세하게 할 수 있다.

https://www.eksworkshop.com/beginner/060_helm/helm_micro/create_chart/

 

 

이외 중요하게 기억하고 넘어갈 요소들은 AWS에서 발표자료를 이메일로 보내주면 추가보충하려고 한다!

'Basic Web Servie' 카테고리의 다른 글

24년 인앱결제 연동 최신 가이드, feat U.I 변동으로 골머리가 났다면 click!  (2) 2024.11.06
21일 AWS 컨퍼런스 후기  (0) 2021.01.21
CI / CD  (0) 2020.11.11
Session? Cookie?  (0) 2020.10.28
schema  (0) 2020.10.21