【问题标题】:Istio Gateway not being applied to istio-ingressgatewayIstio 网关未应用于 istio-ingressgateway
【发布时间】:2021-04-17 20:36:01
【问题描述】:

我正在尝试使 istio 与我的 mssql 服务一起工作。 istio-ingressgateway LoadBalancer 似乎没有使用正确的端口值更新。

我在 GKE 上运行 1.10+

apiVersion: v1
kind: Service
metadata:
  name: mssql
  labels:
    app: mssql
    service: mssql
spec:
  selector:
    app: mssql
  ports:
    - protocol: TCP
      port: 1433
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: public-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 1433
      protocol: TCP
      name: tcp-1433
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: vservice-mssql
spec:
  hosts:
  - "*"
  gateways:
  - public-gateway
  tcp:
  - match:
    - port: 1433
    route:
    - destination:
        host: mssql
        port: 
          number: 1433

在运行时应用配置后,我希望在istio-ingressgateway 上打开端口,但结果是这样:

istio-ingressgateway   LoadBalancer   10.8.1.100   **REDACTED** 80:31380/TCP,443:31390/TCP,31400:31400/TCP,15011:30160/TCP,8060:32736/TCP,853:30641/TCP,15030:31124/TCP,15031:30849/TCP   90d

我在网关上打开的端口没有列出来。

【问题讨论】:

  • 我想我明白了。这是内部的。我必须手动编辑 istio-ingressgateway 配置以添加新端口。我正在等待有一个经过测试的解决方案在这里发布。
  • 嗨@Luc,您能否将您的解决方案添加为答案并将其标记为已批准?它可能会帮助其他有类似问题的人。

标签: istio


【解决方案1】:

使用以下资源定义

apiVersion: v1
kind: Service
metadata:
  name: mssql
  labels:
    app: mssql
    service: mssql
spec:
  selector:
    app: mssql
  ports:
    - protocol: TCP
      port: 1433
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: public-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 15011
      protocol: TCP
      name: tcp-15011
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: vservice-mssql
spec:
  hosts:
  - "*"
  gateways:
  - public-gateway
  tcp:
  - match:
    - port: 15011
    route:
    - destination:
        host: mssql
        port: 
          number: 1433
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: mssql
  namespace: istio-system
spec:
  host: mssql`enter code here`
  trafficPolicy:
    tls:
      mode: DISABLE

使用节点端口30160访问mssql

15011:30160/TCP

istio-ingressgateway   LoadBalancer   10.8.1.100   **REDACTED** 80:31380/TCP,443:31390/TCP,31400:31400/TCP,15011:30160/TCP,8060:32736/TCP,853:30641/TCP,15030:31124/TCP,15031:30849/TCP   90d

【讨论】:

    【解决方案2】:

    如果您使用 operator 安装 istio,则必须手动将端口添加到 operator spec:

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    metadata:
      namespace: istio-system
      name: istio-control-plane
    spec:
      values:
        ingressGateways:
          - enabled: true
            name: istio-ingressgateway
            k8s:
              service:
                ports:
                  - name: status-port
                    port: 15021
                    targetPort: 15021
                  - name: http2
                    port: 80
                    targetPort: 8080
                  - name: https
                    port: 443
                    targetPort: 8443
                  - name: tcp
                    port: 31400
                    targetPort: 31400
                  - name: tls
                    port: 15443
                    targetPort: 15443
                  - # ADD PORTS HERE
    

    此处列出的端口是默认端口。我不确定你是否删除它们,如果 istio-operator 会将默认端口与你将添加的端口“合并”。但是您可以尝试一下(让我们知道!)

    【讨论】:

      猜你喜欢
      • 2019-03-14
      • 2020-08-09
      • 2021-08-24
      • 2019-11-13
      • 2019-03-09
      • 2019-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多