본 실습은 다음과 같은 환경에서 진행되었습니다.
설치된 파드 정보
설치된 파드의 이미지 정보 (AWS 공식계정 ID : 602401143452
)
이러한 이미지들은 AWS에서 정식으로 제공하고 지원하는 것이며, 사용자가 EKS 클러스터를 구성할 때 기본적으로 이러한 이미지를 이용해서 EKS 환경 구축(파드배포)에 사용됨.
설치된 Add-on
// 스토리지 클래스 생성을 위한 gp3-sc.yaml 파일 만들기
cat <<EOT > gp3-sc.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: gp3
allowVolumeExpansion: true
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
type: gp3
allowAutoIOPSPerGBIncrease: 'true'
encrypted: 'true'
EOT
// gp3 스토리지 클래스 생성
kubectl apply -f gp3-sc.yaml
// 스토리지 클래스 확인
kubectl get sc
Prometheus🔥 서버의 TSDB가 사용할 스토리지 대상을 지정할 수 있다. 이 때, 별도의 설정이 없으면 로컬 내의 emptyDir
볼륨이 사용된다. (주로 PV를 사용한다)
그라파나☀️ 또한 데이터를 저장하는 목적으로 스토리지 영역을 지정할 수 있는데 이 또한 마찬가지로 PV를 사용할 수 있다.
따라서 EBS-CSI-Driver
를 통한 동적 프로비저닝 환경을 구성해야하고, 이를 수행하기 위해서는 PV를 정의하는 Storage Class
가 필요하다.
물론 EKS 환경에는 기본 스토리지 클래스인 gp2가 존재하나 성능적인 측면에서 좋지않아, gp3 유형의 스토리지 클래스를 생성하도록 한다.
// ACM 인증서 확인
aws acm list-certificates
// ACM 인증서 변수 선언
CERT_ARN=`aws acm list-certificates --query 'CertificateSummaryList[].CertificateArn[]' --output text`; echo $CERT_ARN
해당 실습에서는 특정 대상의 접근을 Ingress 유형의 ALB로 수행하는데, 이 때 자신의 도메인 주소에 서브 도메인을 구성하고 연결해서 해당 주소를 사용하게 된다.
그리고 내 해당 도메인에 HTTPS를 통한 접근 설정이 가능하도록 한다.
HTTPS로만 접근해야하는 게 있나? 프로메테우스나 그라파나 중에?
route53 등록 -> 등록한 거 기반으로 ACM 발급 -> ACM을 LB에 연결(리스너 규칙에 https 추가) -> Route53접속시 ALB DNS로 라우팅 되도록 레코드 생성
// ACM 인증서 신규 생성
aws acm request-certificate \
--domain-name *.${MyDomain} \
--validation-method DNS \
--options CertificateTransparencyLoggingPreference=DISABLED
DNS 방식으로 인증한다. 이는 Route53에서 CNAME
레코드를 이용하여 검증하는 방식이다. ACM 인증서에 들어가보면 실제 도메인을 검증할 때 CNAME
레코드를 통해 검증(확인)한 것을 볼 수 있다.
검증을 위해서는 Route53에서 레코드 생성을 누르면 검증에 사용할 DNS 레코드 CNAME
이 자동으로 출력된다. 레코드 생성
을 눌러서 DNS 방식으로 인증을 하면 자동으로 검증이 진행된다.