728x90
목차
준비 자료
아래 깃허브의 올린 자료를 clone 받아서 따라 하면 이해하는 데 많은 도움이 될 것이다.
https://github.com/Parkjinman/spring-cloud-msa
msa 프레임워크 이미지 생성
생성한 이미지 docker registry에 push
$ docker login
Log in with your Docker ID or email address to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com/ to create one.
You can log in with your password or a Personal Access Token (PAT). Using a limited-scope PAT grants better security and is required for organizations using SSO. Learn more at https://docs.docker.com/go/access-tokens/
Username:
Password:
Login Succeeded
docker tag 880bb13d1f56 ${your-account}/spring-cloud-msa-business-service:v20240405
docker push ${your-account}/spring-cloud-msa-business-service:v20240405
docker tag 67d5c6ae5bc2 ${your-account}/spring-cloud-msa-batch-service:v20240405
docker push ${your-account}/spring-cloud-msa-batch-service:v20240405
docker tag ccf2b0ace4e4 ${your-account}/spring-cloud-msa-user-service:v20240405
docker push ${your-account}/spring-cloud-msa-user-service:v20240405
docker tag 248946dc9fbd ${your-account}/spring-cloud-msa-gateway-service:v20240405
docker push ${your-account}/spring-cloud-msa-gateway-service:v20240405
docker tag ab63301eea96 ${your-account}/spring-cloud-msa-discovery-service:v20240405
docker push ${your-account}/spring-cloud-msa-discovery-service:v20240405
docker tag 918889c458dd ${your-account}/spring-cloud-msa-postgres:v20240405
docker push ${your-account}/spring-cloud-msa-postgres:v20240405
저장된 docker hub의 이미지를 기준으로 deployment.yaml, service.yaml 작성
필자는 미리 작성해 뒀다. 이것의 이미지 경로만 수정하여 사용하면 된다.
작성한 deployment.yaml, service.yaml로 helm chart 자동 변환
helmify - deployment.yaml, service.yaml을 helm으로 자동으로 변환시켜 주는 도구이다.
helmify 설치
wget https://github.com/arttor/helmify/releases/download/v0.3.8/helmify_0.3.8_Linux_64-bit.tar.gz
tar xvfz helmify_0.3.8_Linux_64-bit.tar.gz
sudo mv helmify /usr/local/bin/.
helmify 사용하기
user@datapecker3:~/workspace/spring-cloud-app$ tree
.
├── batch-deployment.yaml
├── batch-service.yaml
├── business-deployment.yaml
├── business-service.yaml
├── discovery-deployment.yaml
├── discovery-service.yaml
├── gateway-deployment.yaml
├── gateway-service.yaml
├── postgres-deployment.yaml
├── postgres-service.yaml
├── user-deployment.yaml
└── user-service.yaml
user@datapecker3:~/workspace/spring-cloud-app$ awk 'FNR==1 && NR!=1 {print "---"}{print}' *.yaml | helmify msa-helm
msa-helm 파일이 생성된다.
user@datapecker3:~/workspace/spring-cloud-app$ tree
.
├── batch-deployment.yaml
├── batch-service.yaml
├── business-deployment.yaml
├── business-service.yaml
├── discovery-deployment.yaml
├── discovery-service.yaml
├── gateway-deployment.yaml
├── gateway-service.yaml
├── msa-helm
│ ├── Chart.yaml
│ ├── templates
│ │ ├── batch-service.yaml
│ │ ├── deployment.yaml
│ │ ├── discovery-service.yaml
│ │ ├── gateway-service.yaml
│ │ ├── _helpers.tpl
│ │ ├── kubernetes-service.yaml
│ │ ├── postgres.yaml
│ │ └── user-service.yaml
│ └── values.yaml
├── postgres-deployment.yaml
├── postgres-service.yaml
├── user-deployment.yaml
└── user-service.yaml
templates 폴더에 들어가서 모든 service.yaml의 metadata.name: 에서 {{ include "msa-helm.fullname" . }}- 꼭 이걸 지워야 한다.
helm 설치 테스트
user@datapecker3:~/workspace/spring-cloud-app$ cd msa-helm
user@datapecker3:~/workspace/spring-cloud-app/msa-helm$ helm install spring-cloud-msa-app . --namespace msa-ns
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /etc/kubernetes/admin.conf
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /etc/kubernetes/admin.conf
NAME: spring-cloud-msa-app
LAST DEPLOYED: Fri Apr 5 08:43:09 2024
NAMESPACE: msa-ns
STATUS: deployed
REVISION: 1
TEST SUITE: None
성공 화면
포트포워딩으로 외부접속
nohup kubectl port-forward --address=0.0.0.0 -n msa-ns service/discovery-service 8761:8761>> /opt/apps/kubernetes/logs/discovery.out 2>&1 &
nohup kubectl port-forward --address=0.0.0.0 -n msa-ns service/gateway-service 9000:9000>> /opt/apps/kubernetes/logs/gateway.out 2>&1 &
nohup kubectl port-forward --address=0.0.0.0 -n msa-ns service/postgres 5432:5432>> /opt/apps/kubernetes/logs/postgres.out 2>&1 &
API Gateway를 통해 user-service에 라우팅 되어 회원가입이 정상 실행되는 것을 확인할 수 있다.
helm chart github에 push
msa-helm 파일 내용을 자신의 github에 commit & push를 한다.
https://github.com/Parkjinman/spring-cloud-helm
helm uninstall로 실행한 app 제거
마무리로 CI & CD를 구축하면 argocd로 배포를 해야 하기 때문에 기존에 테스트로 실행한 helm은 삭제한다.
helm uninstall spring-cloud-msa-app -n msa-ns
728x90
'Infrastructure > Docker & Kubernetes' 카테고리의 다른 글
[kubernetes] on-premise 내부 환경 적합한 Service Type 비교 (0) | 2024.04.11 |
---|---|
[kubernetes] CI&CD 5탄 - Github Actions Workflow 작성하기 (2) | 2024.04.07 |
[kubernetes] CI&CD 4탄 - Argocd Github 연동 및 APP 설정으로 k8s환경에 배포하기 (2) | 2024.04.06 |
[kubernetes] CI&CD 3탄 - Argocd 설치 및 로그인 (2) | 2024.04.06 |
[kubernetes] CI&CD 1탄 - MSA기반 Gitops 개념 및 프로세스 (0) | 2024.04.06 |