当前位置: 首页 > 知识库问答 >
问题:

helm跳过istio虚拟服务的创建

王念
2023-03-14

我正在尝试用以下结构为我的服务创建一个舵手图:

.
├── my-app
│   ├── Chart.yaml
│   ├── templates
│   │   ├── deployment.yaml
│   │   ├── istio-virtualservice.yaml
│   │   └── service.yaml
│   └── values.yaml

安装helm chart后,部署和服务已成功创建,但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>

我的 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安装完成部署应用程序之后应用上面的yaml,那么就会创建virtualservice。

$ 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"}

共有1个答案

宁欣怿
2023-03-14

使用

kubectl get vs -n my-namespace

而不是

kubectl get vs

这是因为您已经在my namespace命名空间中部署了所有内容。

头盔安装-命名我的应用程序。/my-app -n我的命名空间

您正在默认名称空间中搜索虚拟服务。

当您自己应用它时,它是有效的,因为虚拟服务yaml中没有命名空间,它部署在默认的命名空间中。

附加信息,我看到您已经部署了网关,如果它与虚拟服务不在同一名称空间中,您应该像下面的示例那样添加它。

检查<代码>规格。网关部分

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.

我希望这能回答你的问题。如果您还有其他问题,请告诉我。

 类似资料:
  • 我正在Istio服务网格上观看Pluralsight视频。演示文稿的一部分是这样说的: VirtualService使用库伯内特斯服务查找所有pod的IP地址。VirtualService不会通过[库伯内特斯]服务路由任何流量,但它只是使用它来获取流量可能去往的endpoint列表。 它显示了这个图形(显示pod发现,而不是流量路由): 我对此有点困惑,因为我不知道Istio如何知道要查看哪个库伯

  • 行动时刻 - 创建两个虚拟服务器 在本练习中,我们将创建两个非常简单的虚拟服务器。 一个将接受所有身份验证请求,而另一个将拒绝所有身份验证请求。 在FreeRADIUS配置目录内的sites-available目录下,使用以下内容创建名为always_accept的文件: server always_accept { authorize { update control {

  • 在sites-available目录中创建新的虚拟服务器。 为此新虚拟服务器配置并指定单独的SQL数据库。 将此虚拟服务器链接到启用站点(sites-available)的目录。 在client.conf文件中将VPN服务器定义为客户端,并使用virtual_server指令强制将此新虚拟服务器用于RADIUS请求。 sites-available目录下的buffered-sql虚拟服务器可以用作

  • FreeRADIUS 2.x分支的一个主要新功能是引入虚拟服务器。 这个概念并不新鲜,并且在2.x分支诞生时已经被Web服务器使用。 然而,freeradius是第一个将虚拟服务器引入到radius中的。 本章将更深入地了解RADIUS中虚拟服务器的世界。 在本章中,我们将: 了解您使用虚拟服务器的原因 了解如何定义和启用虚拟服务器 探索监听和客户端部分 发现预定义的虚拟服务器 让我们继续吧...

  • 创建Azure VM时,必须将其放入云服务(新的或现有的)中。 这是否与通过Visual Studio部署Web和辅助角色时创建的Azure云服务的逻辑结构完全相同? 我可以将VS中的角色部署到通过VM创建创建的云服务中吗?我可以将VM部署到通过VS部署创建的云服务中?如果这两个都是真的,那么“独立”VM与角色VM之间的关系如何?它是否只是独立于虚拟机角色在云服务中浮动? 提前感谢!

  • 行动时刻 - 为计算机科学系创建一个虚拟服务器 Isaac发现,计算机科学系的教师通过默认设置来实现安全。 其RADIUS服务器使用端口2812进行身份验证,使用2813进行记帐。 它有一个用户文件,其中包含用户的entre详细信息。 RADIUS客户端仅向RADIUS服务器发送身份验证请求。 下表列出了重要信息: Informaton item Detail User store users f