Kubernetes Helm跳过istio虚拟服务的创建
我正在尝试为我的服务创建具有以下结构的掌舵图:Kubernetes Helm跳过istio虚拟服务的创建,kubernetes,kubernetes-helm,istio,Kubernetes,Kubernetes Helm,Istio,我正在尝试为我的服务创建具有以下结构的掌舵图: . ├── my-app │ ├── Chart.yaml │ ├── templates │ │ ├── deployment.yaml │ │ ├── istio-virtualservice.yaml │ │ └── service.yaml │ └── values.yaml 安装helm图表后,将成功创建部署和服务,但不会创建virtualservice $ helm install -name m
.
├── my-app
│ ├── Chart.yaml
│ ├── templates
│ │ ├── deployment.yaml
│ │ ├── istio-virtualservice.yaml
│ │ └── service.yaml
│ └── values.yaml
安装helm图表后,将成功创建部署和服务,但不会创建virtualservice
$ 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>
$ kubectl apply -f istio-vs.yaml
$ kubectl get vs
NAME GATEWAYS HOSTS AGE
my-virtual-service [my-api-gateway] [my-host.com] 60s
令人惊讶的是,如果我在helm安装完成部署应用程序后应用上述yaml,那么就会创建virtualservice
$ 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>
$ 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"}
使用
kubectl get vs -n my-namespace
kubectl get vs
而不是
kubectl get vs -n my-namespace
kubectl get vs
这是因为您已经在我的命名空间中部署了所有内容 helm install-命名我的应用程序。/我的应用程序-n我的命名空间 您正在默认名称空间中搜索
当您自己应用它时,它就工作了,因为虚拟服务yaml中没有名称空间,它部署在默认名称空间中
其他信息,我看到您已经部署了,如果它与虚拟服务不在同一名称空间中,您应该像下面的示例中那样添加它 检查
spec.gateways
部分
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo-Mongo
namespace: bookinfo-namespace
spec:
gateways:
- some-config-namespace/my-gateway # can omit the namespace if gateway is in same
namespace as virtual service.
我希望这能回答你的问题。如果您还有任何问题,请告诉我。使用
kubectl get vs -n my-namespace
kubectl get vs
而不是
kubectl get vs -n my-namespace
kubectl get vs
这是因为您已经在我的命名空间中部署了所有内容 helm install-命名我的应用程序。/我的应用程序-n我的命名空间 您正在默认名称空间中搜索
当您自己应用它时,它就工作了,因为虚拟服务yaml中没有名称空间,它部署在默认名称空间中
其他信息,我看到您已经部署了,如果它与虚拟服务不在同一名称空间中,您应该像下面的示例中那样添加它 检查
spec.gateways
部分
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo-Mongo
namespace: bookinfo-namespace
spec:
gateways:
- some-config-namespace/my-gateway # can omit the namespace if gateway is in same
namespace as virtual service.
我希望这能回答你的问题。如果您还有任何问题,请告诉我。您是否看到使用
--dry run-o yaml
呈现的virtualservice?是的,我在dry run中看到了。我还尝试了helm模板。/my app | kubectl apply-n my ns-f-
,但虚拟服务仍没有创建。您是否看到使用--dry run-o yaml
呈现的虚拟服务?是的,我在dry run中得到了。我还尝试了helm template./my app | kubectl apply-n my ns-f-
,但虚拟服务仍然没有创建。好的,vs正在指定的命名空间中创建,我错过了。但是spec.gateways
中的位有助于使事情正常运行。谢谢。好的,vs是在指定的名称空间中创建的,我错过了。但是spec.gateways
中的位有助于使事情正常运行。谢谢