Project/reciping

[reciping 2차] minikube로 로컬 쿠버네티스 테스트하기

S_N_Y 2025. 11. 5. 05:44

※ 기존에 기록해둔 노션 글을 옮겨적은 것으로, 노션 템플릿에 맞게 적게된 글이라 해당 링크를 통해 더 가독성있게 보실 수 있습니다.

https://www.notion.so/minikube-2690661ce62880e3a2ffdbb5d2d95a94

 

minikube로 로컬 쿠버네티스 테스트하기 | Notion

1. minikube 실행하기

pleasant-sand-55a.notion.site


 

1. minikube 실행하기

사전에 minikube 명령어 실행할 수 있도록 설치 필요
minikube start --memory=6g --cpus=4 --driver=docker

※ 제대로 생성됐는지 확인 절차

# 노드 확인
PS C:\Users\home> kubectl get nodes
NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   53m   v1.33.1
# minikube 상태 확인
PS C:\Users\home> minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
# 파드 확인
PS C:\Users\home> kubectl get pods -A
NAMESPACE              NAME                                         READY   STATUS    RESTARTS      AGE
kube-system            coredns-674b8bbfcf-k8tzc                     1/1     Running   0             56m
kube-system            etcd-minikube                                1/1     Running   0             56m
kube-system            kube-apiserver-minikube                      1/1     Running   0             56m
kube-system            kube-controller-manager-minikube             1/1     Running   0             56m
kube-system            kube-proxy-hn5x6                             1/1     Running   0             56m
kube-system            kube-scheduler-minikube                      1/1     Running   0             56m
kube-system            storage-provisioner                          1/1     Running   1 (56m ago)   56m
kubernetes-dashboard   dashboard-metrics-scraper-5d59dccf9b-b99cx   1/1     Running   0             2m43s
kubernetes-dashboard   kubernetes-dashboard-7779f9b69b-x88s4        1/1     Running   0             2m43s
PS C:\Users\home>
# Dashboard 확인
PS C:\Users\home> minikube dashboard
🔌  대시보드를 활성화하는 중 ...
    ▪ 이미지 docker.io/kubernetesui/dashboard:v2.7.0 사용 중
    ▪ 이미지 docker.io/kubernetesui/metrics-scraper:v1.0.8 사용 중
💡  Some dashboard features require the metrics-server addon. To enable all features please run:

        minikube addons enable metrics-server

🤔  Dashboard 의 상태를 확인 중입니다 ...
🚀  프록시를 시작하는 중 ...
🤔  Proxy 의 상태를 확인 중입니다 ...
🎉  Opening http://127.0.0.1:53167/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...

대시보드 활성화하였을 때, 이렇게 나타납니다.


 

2. 로컬 DB 세팅하기

사전에 Helm repo에 bitnami를 추가해줍니다.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

 

네임스페이스에 local-db 만들어둡니다.

kubectl create namespace local-db

 

Helm으로 MongoDB 배포(설치)해줍니다. (세팅값까지 넣기)

helm upgrade --install mongodb bitnami/mongodb \
  --namespace local-db \
  --set auth.rootPassword=admin123 \
  --set auth.username=reciping \
  --set auth.password=reciping123 \
  --set auth.database=reciping_db

 

이 설정은 아래 Mongo URI로 사용 가능합니다

mongodb://reciping:reciping123@mongodb.local-db.svc.cluster.local:27017/reciping_db

 

Helm으로 postgreSQL 배포(설치)해줍니다. (세팅값까지 넣기)

helm upgrade --install postgres bitnami/postgresql \
  --namespace local-db \
  --set auth.username=reciping \
  --set auth.password=admin123 \
  --set auth.postgresPassword=admin123 \
  --set auth.database=reciping_db

 

이 설정은 아래 JDBC URL로 사용 가능합니다

jdbc:postgresql://postgres.local-db.svc.cluster.local:5432/reciping_db

 

※ 띄운 후, 최종 DB 상태 확인

일반적으로 -hl이 붙은 서비스 (headless)는 내부 클러스터 DNS용이고, 클라이언트에서 직접 접속할 때는 postgres-postgresql
home@DESKTOP-0L33BAC MINGW64 ~/Desktop/groom/dev_sini/reciping-k8s-resources (feature-prod)
$ kubectl get all -n local-db
NAME                           READY   STATUS    RESTARTS   AGE
pod/mongodb-7d8b94b5fb-7cw6s   1/1     Running   0          50m
pod/postgres-postgresql-0      1/1     Running   0          104s

NAME                             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE
service/mongodb                  ClusterIP   10.107.135.183   <none>        27017/TCP   50m
service/postgres-postgresql      ClusterIP   10.100.205.158   <none>        5432/TCP    104s
service/postgres-postgresql-hl   ClusterIP   None             <none>        5432/TCP    104s

NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/mongodb   1/1     1            1           50m

NAME                                 DESIRED   CURRENT   READY   AGE
replicaset.apps/mongodb-7d8b94b5fb   1         1         1       50m

NAME                                   READY   AGE
statefulset.apps/postgres-postgresql   1/1     104s

 

※ (선택사항) 간편하게 Port Forward로 직접 접속 확인

MongoDB:

kubectl port-forward svc/mongodb 27017:27017 -n local-d

PostgreSQL:

# 클라이언트에서 직접 접속할 때는 postgres-postgresql 서비스에 포트포워딩
kubectl port-forward svc/postgres-postgresql 5432:5432 -n local-db

이후 로컬 터미널에서 접속:

  • MongoDB:
mongosh mongodb://reciping:reciping123@localhost:27017/reciping_db
  • PostgreSQL:
psql -h localhost -U reciping -d reciping_db
# Password: reciping123

 

3. ECR Image pull → tag 변경 → Minikube에 Image upload

기존에 CI 워크플로우로 ECR에 이미지 업로드하였는데, 편하게 이 이미지를 토대로 minikube에 pull해서 쓰겠습니다.

 

ECR에 로그인합니다.

aws ecr get-login-password --region ap-northeast-2 \
  | docker login --username AWS --password-stdin 892117097999.dkr.ecr.ap-northeast-2.amazonaws.com

 

이미지를 pull합니다.

docker pull 892117097999.dkr.ecr.ap-northeast-2.amazonaws.com/reciping-user-service:v1.0.8

 

로컬 테스트용 태그로 재태깅합니다.

docker tag 892117097999.dkr.ecr.ap-northeast-2.amazonaws.com/reciping-user-service:v1.0.8 user-service:local

 

minikube에 이미지를 올립니다.

minikube image load user-service:local

 

4. Minikube에 rollouts 사용을 위한 Argo Rollouts CRD 설치

공식적인 설치 명령어입니다. 이 명령어는 다음 리소스를 설치합니다.

  • CRDs (Rollout, AnalysisTemplate 등)
  • Controller (argo-rollouts-controller)
  • RBAC, ServiceAccount 등
kubectl create namespace argo-rollouts

kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml

 

※ 명령어 실행 및 설치 확인까지

home@DESKTOP-0L33BAC MINGW64 ~/Desktop/groom/dev_sini/reciping-k8s-resources (feature-prod)
$ kubectl create namespace argo-rollouts
namespace/argo-rollouts created

home@DESKTOP-0L33BAC MINGW64 ~/Desktop/groom/dev_sini/reciping-k8s-resources (feature-prod)
$ kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml
customresourcedefinition.apiextensions.k8s.io/analysisruns.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/analysistemplates.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/clusteranalysistemplates.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/experiments.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/rollouts.argoproj.io created
serviceaccount/argo-rollouts created
clusterrole.rbac.authorization.k8s.io/argo-rollouts created
clusterrole.rbac.authorization.k8s.io/argo-rollouts-aggregate-to-admin created
clusterrole.rbac.authorization.k8s.io/argo-rollouts-aggregate-to-edit created
clusterrole.rbac.authorization.k8s.io/argo-rollouts-aggregate-to-view created
clusterrolebinding.rbac.authorization.k8s.io/argo-rollouts created
configmap/argo-rollouts-config created
secret/argo-rollouts-notification-secret created
service/argo-rollouts-metrics created
deployment.apps/argo-rollouts created

# 설치 확인
home@DESKTOP-0L33BAC MINGW64 ~/Desktop/groom/dev_sini/reciping-k8s-resources (feature-prod)
$ kubectl get crd | grep rollouts
rollouts.argoproj.io                   2025-08-06T11:34:22Z

 

5. Helm chart 수동배포로 일단 서버가 제대로 뜨는지 확인해보기

Helm 배포 명령어를 실행합니다.

helm upgrade --install user-service ./charts/reciping-user-service \
  --namespace reciping \
  --create-namespace

후에 자잘한 오류 디버깅하면 됩니다!