And Brain said,
CI/CD Argonautica - Helm, 타륜 본문
CI/CD Argonautica
Docker, 선박
Kubernetes, 조타수 Harbor, 항구
Helm, 타륜
Istio, 돛
Jenkins, 선장
ArgoCD, 출항
1장/ Loki, Trickster
Troubleshooting
이제, 우리는 선박도 있고 조타수도 있고 우리만의 항구까지 갖췄습니다. 출항을 하려고 배를 봤지만 조종석에 키가 없습니다. 출항하기 위해선 조종석이 필요하겠죠. Helm은 우리 조종석의 키가 되줄 것입니다. 설치는 아래 링크를 참고바랍니다.
https://theworldaswillandidea.tistory.com/189
아래의 Helm 명령어를 통해 chart를 만드시길 바랍니다.
helm create msa-chart
우리의 MSA Chart의 기본 구조는 아래와 같을 것입니다.
msa-chart/
│
├── charts/
│ ├── discovery/
│ ├── config-server/
│ ├── apigateway/
│ ├── user-service/
│ └── ... (다른 서비스들)
│
├── templates/
│ ├── harbor-cert-secret.yaml
│ ├── harbor-regcred-secret.yaml
│ ├── hpa.yaml
│ └── ...
│
├── files/
│ ├── harbor-cert.pem
│
├── values.yaml
└── Chart.yaml
이전 시간에 만든 harbor-cert.pem 파일을 files 디렉토리 내에 만들어줍시다. Service Discovery 를 위해 MSA의 discovery pod를 올려보도록 할 것입니다.
image:
name: discovery
tag: latest
service:
type: ClusterIP
port: 8761
volume:
logPath: /usr/app/logs
discovery 차트 내의 values.yaml 파일에 위 부분만 추가해줍시다. discovery 차트는
이렇게 deployment yaml파일과 service yaml 파일로 구성될 것입니다. 아래는 deployment yaml 파일입니다. 간략하게 적은 것이니 참고하시길 바랍니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: discovery
labels:
app: discovery
spec:
replicas: 1
selector:
matchLabels:
app: discovery
template:
metadata:
labels:
app: discovery
spec:
containers:
- name: discovery
image: {{ .Values.global.imageRegistry }}/{{ .Values.image.name }}:{{ .Values.image.tag }}
imagePullPolicy: Always
ports:
- containerPort: 8761
env:
- name: apigateway.hostname
value: {{ .Values.env.apigatewayHostname }}
volumeMounts:
- mountPath: {{ .Values.volume.logPath }}
name: log-volume
- name: certs
mountPath: /etc/ssl/certs/
imagePullSecrets:
- name: harbor-regcred
volumes:
- name: certs
secret:
secretName: harbor-certs
- name: log-volume
emptyDir: {}
service yaml 파일은 아래와 같이 작성하였습니다.
apiVersion: v1
kind: Service
metadata:
name: discovery
spec:
type: {{ .Values.service.type }}
ports:
- port: 80
targetPort: 8761
protocol: TCP
selector:
app: discovery
이제 harbor에 접근을 위한 인증서 설정을 해볼 것입니다. 최상위 차트에 harbor-cert-secret.yaml 파일과 harbor-regcred-secret.yaml 파일을 작성합니다.
// harbor-cert-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: harbor-certs
type: Opaque
data:
harbor-cert.pem: {{ .Files.Get "files/harbor-cert.pem" | b64enc | quote }}
// harbor-regred-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: harbor-regcred
labels:
app: {{ template "msa-chart.name" . }}
chart: {{ template "msa-chart.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: {{ printf "{\"auths\":{\"%s\":{\"username\":\"%s\",\"password\":\"%s\"}}}" .Values.registry.server .Values.registry.username .Values.registry.password | b64enc | quote }}
이제,
helm install 명령어를 통해 배포해줍니다. kubectl get pods로 discovery pod 가 잘 띄워졌는지 확인까지하면 끝. 다음 시간에 config server와 apigateway 그리고, 서비스 하나까지 연결지어서 MSA 구축을 해보도록 할 것입니다. 그럼 다음에 만날 때까지 안녕~
(설정을 하면서 글을 적은 것이 아닌 완성 후 적은 것이니 빠진 부분이 있을 수 있습니다. 안되신다면 댓글을 남겨주세요.)
Thanks for watching, Have a nice day.
'IT > CICD Argonautica' 카테고리의 다른 글
CI/CD Argonautica - Troubleshooting (0) | 2023.09.14 |
---|---|
CI/CD Argonautica - Istio, 돛 (0) | 2023.09.14 |
CI/CD Argonautica - Harbor, 항구 (0) | 2023.09.11 |
CI/CD Argonautica - Kubernetes, 조타수 - 실습 [3] (0) | 2023.08.19 |
CI/CD Argonautica - Kubernetes, 조타수 - 실습 [2] (4) | 2023.08.12 |