通过Helm chart部署nacos
本文介绍如何改写官方Chart以支持通过Virtual Service访问部署的nacos。
官方Chart
-
官方Chart地址: 官方Chart地址
-
官方Chart目录结构:
改Chart,增加Virtual Service
配置
官方Chart提供了Ingress
访问,此处增加Virtual Service
配置,支持通过vs访问nacos服务。
templates增加Virtual Service
资源
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: {{ .Release.Name }}-vs
namespace: {{ .Release.Namespace | quote }}
spec:
gateways:
- yzy-gateway.istio-system # 网关,改为环境对应的istio网关
hosts:
- {{ .Values.Namespace }}-{{ .Release.Name }}.{{ .Values.domain }} # 域名,改为环境对应的域名
http:
- route:
- destination:
{{- if eq .Values.global.mode "cluster" }}
host: nacos-hs
{{- else }}
host: nacos-cs
{{- end }}
port:
number: {{ .Values.service.port }}
values.yaml增加domain配置项
domain: abc.xyz # 对应Virtual Service资源中使用的domain
修改后的Chart目录结构
相比于官方Chart目录结构,新增了vs.yaml
文件,该文件里面是对应的Virtual Service
资源
访问nacos
使用Helm命令部署后,通过域名+/nacos
访问对应的nacos服务。
注意:未做特殊配置的话,访问nacos时必须追加/nacos。
通过VirtualService
实现域名访问自动跳转
通过VirtualService
的match
、rewrite
实现自动跳转
修改vs.yaml文件
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: {{ .Release.Name }}-vs
namespace: {{ .Release.Namespace | quote }}
spec:
gateways:
- biyi-gateway.istio-system
hosts:
- {{ .Release.Name }}.{{ .Values.domain }}
http:
- match:
- uri:
prefix: /nacos
route:
- destination:
{{- if eq .Values.global.mode "cluster" }}
host: nacos-hs
{{- else }}
host: nacos-cs
{{- end }}
port:
number: {{ .Values.service.port }}
- rewrite:
uri: /nacos
route:
- destination:
{{- if eq .Values.global.mode "cluster" }}
host: nacos-hs
{{- else }}
host: nacos-cs
{{- end }}
port:
number: {{ .Values.service.port }}
至此,通过Chart部署的nacos可以直接通过域名访问。