본문 바로가기

♻ Terraform(테라폼)/Terraform-EKS

Terraform을 활용한 EKS 클러스터 설계

# Terraform을 활용한 EKS 설계...

- 일단 Terraform을 활용해서 EKS 클러스터까지 구성을 하였는데, 소감은 복잡하다. 아직 Terraform을 완벽히 숙지하지 못한 부분도 있겠지만, 리소스 영역이 확립이 안돼서 그런 것 같다. 예를 들어 EKS 클러스터를 생성할 때 필요한 디펜던시 요소들이 어떤 것들이 있는지... 등등 정확한 리소스 사용에 대한 확립이 없이는 자유 자재로 컨트롤하기가 쉽지는 않을 거 같다.

- 아래는 설계한 아키텍처 흐름을 표현한 그림이다. (내가 그렸지만 나도 하나하나 자세히 봐야하는건 문제다...)

terraform AC_Worker.drawio
0.01MB

- 관련 소스는 보완이 되는대로 올리자.

- Terraform을 활용해서 자유자재로 리소스를 컨트롤 하게끔 많은 노력과 연습이 필요할 듯싶다.

# Terraform을 활용한 EKS 클러스터 설계 Ver.02

- 추가내용은 아래와 같다.

- 일단 노드그룹이 추가가 되었다.

- 그리고 nginx 웹서버를 간단하게 올려보고 http를 통해 웹 브라우저에서 접속해 보았다.

- 추가된 아키텍처는 아래와 같다.

terraform AC_Worker.drawio
0.01MB

 

- 외부에서의 접속은 간단하게 CLB를 통해 DNS 주소를 생성하여 접근 한다.

- nginx 웹서버를 생성하는 deployment.yaml 파일의 내용은 아래와 같다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: nginx
  labels:
    app: nginx
spec:
  replicas: 8
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.14.2
          ports:
            - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: nginx
  annotations:
    alb.ingress.kubernetes.io/healthcheck-path: "/healthy"
spec:
  selector:
    app: nginx
  type: LoadBalancer
  ports:
    - port: 8080
      protocol: TCP
      targetPort: 80

# 외부의 웹브라우저에서 접속한 결과

- 테라폼 코드는 나중에 올리고, 일단 완벽한 자동화를 위해서 helm chart를 통한 리소스 설계 등을 고려해 봐야 한다.

- helm chart를 생성하고 chart에 올라간 리소스를 활용하여 여러가지 리소스를 만들어보는 작업을 해보자.