【发布时间】:2020-06-30 20:43:22
【问题描述】:
我正在尝试使用以下结构为我的服务创建掌舵图:
.
├── my-app
│ ├── Chart.yaml
│ ├── templates
│ │ ├── deployment.yaml
│ │ ├── istio-virtualservice.yaml
│ │ └── service.yaml
│ └── values.yaml
安装 helm chart 后,部署和服务已成功创建,但未创建虚拟服务。
$ helm install -name my-app ./my-app -n my-namespace
$ kubectl get pods -n my-namespace
NAME READY STATUS RESTARTS AGE
my-app-5578cbb95-xzqzk 2/2 Running 0 5m
$ kubectl get vs
NAME GATEWAYS HOSTS AGE
<Empty>
我的 istio 虚拟服务 yaml 文件如下所示:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-virtual-service
spec:
hosts:
- {{$.Values.props.host | quote}}
gateways:
- my-api-gateway
http:
- match:
- uri:
prefix: /app/
rewrite:
uri: "/"
route:
- destination:
port:
number: 8083
host: my-service.my-namespace.svc.cluster.local
令人惊讶的是,如果我在 helm install 完成部署应用程序后应用上述 yaml,那么就会创建虚拟服务。
$ kubectl apply -f istio-vs.yaml
$ kubectl get vs
NAME GATEWAYS HOSTS AGE
my-virtual-service [my-api-gateway] [my-host.com] 60s
请帮我调试问题,如果需要更多调试信息,请告诉我。
$ helm version
version.BuildInfo{Version:"v3.0.1", GitCommit:"7c22ef9ce89e0ebeb7125ba2ebf7d421f3e82ffa", GitTreeState:"clean", GoVersion:"go1.13.4"}
$ istioctl version
client version: 1.4.1
control plane version: 1.4.1
data plane version: 1.4.1 (2 proxies)
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"16+", GitVersion:"v1.16.6-beta.0", GitCommit:"e7f962ba86f4ce7033828210ca3556393c377bcc", GitTreeState:"clean", BuildDate:"2020-01-15T08:26:26Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"16+", GitVersion:"v1.16.6-beta.0", GitCommit:"e7f962ba86f4ce7033828210ca3556393c377bcc", GitTreeState:"clean", BuildDate:"2020-01-15T08:18:29Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"linux/amd64"}
【问题讨论】:
-
你看到用
--dry-run -o yaml渲染的虚拟服务了吗? -
是的,我在试运行中得到了这个。我也试过
helm template ./my-app|kubectl apply -n my-ns -f -,仍然没有创建虚拟服务。
标签: kubernetes kubernetes-helm istio