Kubernetes 운영하기
Kubernetes 클러스터 운영에 필요한 내용을 정리해 봅니다.
Kubernetes in production
-
Infrastructure as Code (IaC)
Terraform 등을 이용해 클러스터 구축을 코드화하는게 좋다.
-
Monitoring & Centralized logging
Prometheus/Grafana 등을 이용해 서버 모니터링을 시각화하는게 좋다.
Filebeat/ElasticSearch 등을 이용해 로그를 집중해 놓는게 좋다.
-
Centralized Ingress Controller with SSL certificate management
외부에서 service 에 직접 접속하게 하는 것보다,
Ingress 를 통해 접속하게 하고,
Ingress 를 한곳으로 모아,
서비스가 어떻게 외부에 노출되고 있는지를 한번에 알수 있게 하자.
Ingress 를 한곳으로 모으면 SSL 인증키 관리도 쉬워진다. -
Role-Based Access Control (RBAC)
-
GitOps Deployments
kubectl apply
를 이용한 app 배포는 비효율적이다.
CI/CD 툴을 이용하자.
jenkins/ArgoCD 가 좋다. -
Secret Management
Hashicorp Vault 등을 이용해 인증키를 관리하자.
helm 설치
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
helm help
Jenkins 설치
ingress-nginx 설치
Prometheus/Grafana 설치
웹로그 관리
기본방향
ingress-nginx 를 통해 모든 service 가 운영되므로,
ingress-nginx pod 에 access log 를 생성하게 하고,
access log 를 PV 에 저장한다.
Fluentd 가 로그를 조회해서 S3 and/or ElasticSeatch 에 전송하도록 한다.
일단 방향은 이렇게 잡았는데 더 좋은 방법이 있는지는 찾아봐야겠군요.
MetalLB (Software Load-Balancer)
MetalLB 가 Software Load-Balancer 로 기능한다.
그닥인듯…
```
```bash
https://jerryljh.medium.com/metallb-%EC%86%8C%EA%B0%9C-ha-%EB%B0%8F-%EC%84%B1%EB%8A%A5-%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%8F%AC%ED%95%A8-f984fa92af1
metallb