이제 istio-gateway차트를 만들도록 하겠다. istio에서 service-mesh를 사용하기 위해서는 virtualservice와 gateway가 세트로 움직이는데 이 2개를 세트로 서비스를 만들때마다 만드는 것은 여간 귀찮은 일이 아니다. 그래서 helm repository에다가 만들어서 추후에 계속 사용하도록 하겠다.(사실상 이게 처음에 더 귀찮다.) 그러나 앞으로 argocd가 되었든 서비스가 추가 될 때마다 이 차트를 이용하면 되므로 앞으로는 이게 더 편해질거다. 처음에만 조금 고생하는 식으로 하자. ㅠㅠ
처음에 devopscharts에서
$ helm create istio-gateway
$ cd istio-gateway
이렇게 들어가면
이런식으로 파일이 만들어지게 되는데
templates 폴더안에 모든 파일을 지운다. 그리고 templates폴더안에 2개의 파일을 만든다.
gateway.yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: {{ .Values.name }}
namespace: {{ .Release.Namespace }}
spec:
selector:
istio: ingressgateway
servers:
{{- range .Values.gatewayPort }}
- port:
number: {{ .number }}
name: {{ .name }}
protocol: {{ .protocol }}
{{- end }}
hosts:
{{- range .Values.hosts }}
- {{ . | quote }}
{{- end }}
virtualservice.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: {{ .Values.name }}
namespace: {{ .Release.Namespace }}
spec:
hosts:
{{- range .Values.hosts }}
- {{ . | quote }}
{{- end }}
gateways:
- {{ .Values.name }}
http:
{{- toYaml .Values.virtualService.http | nindent 2}}
파일을 만들고 나면 values.yaml내용을 전부 지우고 아래 내용으로 덮어 써준다.
name: istiogateway-name
hosts:
- your.domain.com
gatewayPort:
- number: 8090
name: http2
protocol: HTTP2
virtualService:
http:
- match:
- uri:
prefix: /
route:
- destination:
host: productpage
port:
number: 9080
Chart.yaml도 수정한다.
apiVersion: v2
name: istio-gateway
description: istio-gateway for kubernetes
type: application
version: 1.0.0
appVersion: "1.0.0"
devopscharts폴더에서 다음 명령어를 입력하게 되면
$ helm package istio-gateway
istio-gateway-1.0.0.tgz 파일이 만들어진다.
쓸데 없는 파일도 지워주고 repo 명령어로 index.yaml도 만들어준다.
$ rm -rf foo-0.1.0.tgz
$ rm -rf istio-gateway
$ helm repo index .
이런식으로 tgz zip 파일과 index.yaml이 만들어지는데 이 것을 main branch에 푸쉬하도록 하겠다.
차트작업은 마무리했으니 github에서 배포를 하면 된다.
github에 본인 레파지토리를 가면 중앙에 compare & pull request라는 것이 뜰텐데 이것을 눌러도되고 만약 이 창이 안보인다면 상단에 pull request를 눌러도된다.
Pull request를 만들도록 하자. 여기서 주의할점은 compare 브랜치를 main으로 바꿔야 한다는 점이다.
마지막으로 Merge pull request를 눌러서 마무리한다.
Actions를 눌러서 현재 상황을 체크해볼 수 있다. 노란불이 꺼지고 녹색불이 되면 배포가 완료된거다.
아래 명령어를 이용해서 helm chart가 정상적으로 배포되었는지 확인해본다.
$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "ggocamping" chart repository
Update Complete. ⎈Happy Helming!⎈
$ helm search repo ggocamping
NAME CHART VERSION APP VERSION DESCRIPTION
ggocamping/istio-gateway 1.0.0 1.0.0 istio-gateway for kubernetes
아주 예쁘게 들어간걸 보니 기분이 매우 좋구나~
'devops > minikube' 카테고리의 다른 글
11. argocd 접속 (24) | 2024.11.20 |
---|---|
10. argocd 설치 (0) | 2024.11.20 |
8. 나만의 헬름차트 만들기 (1) (24) | 2024.11.19 |
7. [Ubuntu] 서비스 등록 (systemd) (0) | 2024.11.19 |
6. Istio: 서비스 메쉬의 선두주자 (25) | 2024.11.19 |