AWS EKS에서 그라파나 사이트를 띄울 수 있는 pod를 띄우고
사이트에 접속할 수 있도록 설정하는 방법에 대하여
간략하게 정리해보도록 하겠습니다.
Step 1. 그라파나 도커 이미지 다운로드 및 ECR에 업로드
로컬 시스템에 Docker가 설치되어 있다고 가정하겠습니다.
먼저, Grafana 공식 도커 이미지를 다운로드해야 하는데, 다음 명령어로 쉽게 가능합니다.
docker pull grafana/grafana
해당 로컬 환경에서 AWS 인증을 하고, ECR 레포지터리를 생성합니다.
(여기서는 grafana-repo라는 이름의 레포지터리를 가정하겠습니다.)
aws ecr create-repository --repository-name grafana-repo
이제 도커 이미지 태깅 및 push를 진행해줍니다. [ECR 레포지터리 URI]가 필요합니다.
docker tag grafana/grafana:latest [ECR 리포지토리 URI]:latest
docker push [ECR 리포지토리 URI]:latest
Step 2. Grafana Deployment yaml 파일 적용 및 pod 생성
이제 앞 과정에서 push한 ECR 이미지를 통하여 pod를 먼저 띄워야 합니다.
이를 위해서는 Deployment 종류의 yaml 파일이 필요한데, 작성 예시는 다음과 같습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: grafana
name: grafana
namespace: grafana
spec:
replicas: 1
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
containers:
- name: grafana
image: [ECR 리포지토리 URI]:latest
ports:
- containerPort: 3000
이후, kubectl apply -f [파일명].yaml 명령어를 입력해주시면
그라파나 pod를 띄우는 작업이 완료됩니다.
Step 3. Kubernetes Service yaml 파일 적용
이제 실제로 url을 통하여 그라파나에 접속하기 위해서는 추가 작업이 필요합니다.
바로 쿠버네티스 서비스와 ingress 설정을 위한 yaml 파일 적용이 필요한 것인데요.
우선, 쿠버네티스 서비스를 위한 Loadbalancer yaml 파일 예시는 다음과 같습니다.
apiVersion: v1
kind: Service
metadata:
name: grafana-service
namespace: grafana
spec:
ports:
- protocol: TCP
port: 80
targetPort: 3000
selector:
app: grafana
selector의 app 이름이 Step 2에서 지정했던 pod의 이름과 맞춰주어야 합니다.
작성 이후에는 해당 파일도 kubectl apply -f [파일명].yaml 명령어로
적용을 시켜주시면 됩니다.
Step 4. Ingress yaml 파일 적용
이제 AWS ALB에서 특정 url을 타고 그라파나 사이트에 접속이 가능하게 하도록
ingress 설정 yaml 파일을 작성해보도록 하겠습니다.
yaml 파일 예시 스니펫은 다음과 같습니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/group.name: grafana
alb.ingress.kubernetes.io/group.order: '1'
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
alb.ingress.kubernetes.io/security-groups: [보안그룹 번호]
alb.ingress.kubernetes.io/manage-backend-security-group-rules: "true"
name: grafana-ingress
namespace: grafana
spec:
ingressClassName: alb
rules:
- http:
paths:
- backend:
service:
name: grafana-service
port:
number: 3000
path: /
pathType: Prefix
여기서 가장 아래의 service: name 부분은 Step 3에서 작성했던 서비스의 이름과
일치시키는 것이 중요합니다.(grafana-service로 일치합니다.)
이 파일 역시 kubectl apply -f [파일명].yaml 명령어로 적용을 시켜주시면
그라파나 접속 준비가 모두 완료됩니다.
접속을 하기 위한 url은 kubectl get ingress -n [namespace] 명령어로 조회가 가능합니다.
(이 예제에서는 [namespace] 부분에 grafana가 들어가면 됩니다.)
사이트에 접속하면 초기 아이디와 패스워드는 모두 admin으로 설정되어 있으니,
비밀번호를 변경해서 사용하시길 바랍니다.
단, HTTPS 접속이나 원하는 도메인 주소로 접속하기 위해서는 다른 설정이 추가로 필요합니다.
'Infra > Kubernetes & EKS' 카테고리의 다른 글
[EKS] ArgoCD 설치 및 ingress 설정 방법 (0) | 2023.12.09 |
---|---|
AWS EKS 클러스터 생성 방법 정리(eksctl 사용) (2) | 2023.12.05 |
helm 소개 및 기초 명령어 예시 정리 (0) | 2023.11.29 |