istio - Istio 网关未应用于 istio-ingressgateway
问题描述
我正在尝试使 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
我在网关上打开的端口没有列出。
解决方案
如果您使用 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 会将默认端口与你将添加的端口“合并”。但是您可以尝试一下(让我们知道!)
推荐阅读
- cordova - 我可以从离子组件导航到离子页面吗?
- .net - 在 program.exe 中发生了“System.IO.FileNotFoundException”类型的未处理异常
- javascript - Fullpage.js:我可以使用哪个功能重新启动 ScrollOverflow 插件?
- partition - 如何在 slurm 中发现当前分区?
- angular5 - 重新排序 ngx-datatable 中的列
- javascript - 如何正确设置标签和文本框填充?
- android - 无法在图像视图中看到我拍摄的原始照片
- node.js - 在 NodeJS 中放置函数来操作 MongoDB 不起作用
- angular - Karma Runner 找不到从 tsconfig.json 到 ES6 模块的路径
- reactjs - GraphQL 订阅不会监听所有新的创作 - react-apollo