728x90
진행 순서
- 포드 간 데이터 통신 이해
- 먼저, 쿠버네티스에서 포드 간 통신을 설정하고 테스트합니다. 이 과정은 Helm, CI/CD, 모니터링을 진행할 때 기본이 되는 네트워킹 이해를 돕습니다.
- Helm 설치 및 사용
- 포드 간 통신을 이해한 후, Helm을 사용하여 애플리케이션 배포를 템플릿화합니다. 이는 CI/CD와 모니터링 도구 설치 시 작업을 더 간단하게 만들어줍니다.
- CI/CD 연습
- Jenkins를 Minikube에 배포하고 파이프라인을 구성합니다. Helm을 사용해 Jenkins를 설치하면 훨씬 간편합니다.
- 모니터링 툴 추가
- Prometheus와 Grafana를 설치해 클러스터 상태를 시각적으로 모니터링합니다. 이것도 Helm으로 설치하면 쉽습니다.
1. 포드 간 데이터 통신 이해
(1) 두 개의 애플리케이션 배포
- 프론트엔드와 백엔드 역할을 하는 두 개의 Deployment를 생성합니다.
- 프론트엔드에서 백엔드로 데이터를 요청하고 응답을 확인합니다.
프론트엔드 Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
spec:
replicas: 1
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend
image: curlimages/curl # 간단히 요청 테스트용으로 curl 사용
command: ["sleep", "3600"]
백엔드 Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
spec:
replicas: 1
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
containers:
- name: backend
image: hashicorp/http-echo # 간단히 HTTP 응답 테스트용
args:
- "-text=Hello from backend"
(2) 백엔드 서비스 생성
프론트엔드가 백엔드에 접근할 수 있도록 Service를 생성합니다.
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
selector:
app: backend
ports:
- protocol: TCP
port: 80
targetPort: 5678
(3) 포드 간 통신 테스트
프론트엔드 Pod에 접속하여 백엔드에 요청을 보냅니다.
kubectl exec -it <frontend-pod-name> -- sh
curl <http://backend-service>
결과로 "Hello from backend"가 출력되면 포드 간 통신이 성공적으로 설정된 것입니다.
2. Helm 설치 및 사용
Helm을 설치하고, 이를 통해 애플리케이션 배포를 템플릿화합니다.
(1) Helm 설치
brew install helm
(2) Nginx 배포 예제
Helm으로 Nginx를 배포하는 간단한 예제를 실행합니다.
helm repo add bitnami <https://charts.bitnami.com/bitnami>
helm install my-nginx bitnami/nginx
배포된 Nginx를 확인:
kubectl get all
3. CI/CD 연습
Jenkins를 Minikube 클러스터에 배포하고, 간단한 빌드 파이프라인을 설정합니다.
(1) Jenkins 설치
Helm을 사용해 Jenkins를 설치:
helm repo add jenkins <https://charts.jenkins.io>
helm repo update
helm install my-jenkins jenkins/jenkins
(2) Jenkins 초기 비밀번호 확인
kubectl get secret --namespace default my-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode
(3) Jenkins 웹 인터페이스 접속
Jenkins를 외부에서 접근할 수 있도록 Service를 NodePort로 설정하거나 Port Forward를 사용합니다:
kubectl port-forward svc/my-jenkins 8080:8080
4. 모니터링 툴 추가
Prometheus와 Grafana를 설치해 쿠버네티스 클러스터를 모니터링합니다.
(1) Prometheus & Grafana 설치
Helm으로 설치:
helm repo add prometheus-community <https://prometheus-community.github.io/helm-charts>
helm repo update
helm install prometheus prometheus-community/kube-prometheus-stack
(2) Grafana 웹 인터페이스 접속
kubectl port-forward svc/prometheus-grafana 3000:80
Grafana 기본 계정:
- 사용자: admin
- 비밀번호: 설치 과정에서 출력된 값을 확인.
결론
- 포드 간 통신 실습 → 네트워킹 이해.
- Helm 설치 → 배포 템플릿화.
- CI/CD 연습 → Jenkins 파이프라인 구성.
- 모니터링 툴 추가 → 클러스터 상태 모니터링.
728x90
'IT 끄적이기' 카테고리의 다른 글
쿠버네티스(k8s) 학습하기 - 클러스터란? (2) | 2024.12.27 |
---|---|
쿠버네티스(k8s) 학습하기 - yaml 파일 작성 후 포드 통신 확인 (5) | 2024.12.27 |
쿠버네티스(k8s) 학습하기 - Minikube 실행 테스트 (0) | 2024.12.27 |
쿠버네티스(k8s) 학습하기 - 용어 설명 (2) | 2024.12.27 |
쿠버네티스(k8s) 학습하기 - 쿠버네티스에 대한 기본 개념 (2) | 2024.12.27 |