我有一个GKE群集,一个静态ip和一个容器/容器,该容器/容器公开2个端口:8081(UI https)和8082(WSS https)。我必须连接到同一IP上的“ UI Https”和“ WSS Https”。 “ WSS Https”服务没有没有运行状况检查终结点。
我需要使用Isito,Consul,Nginx入口或某些服务网格来允许这些IP连接到具有不同端口的同一IP吗?
我尝试过的事情:
NodePort
更改为LoadBalancer
。这将不允许我更改准备情况检查并始终还原。下面是我的入口,服务和部署。
入口
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app-ingress
namespace: myappnamespace
annotations:
kubernetes.io/ingress.global-static-ip-name: global-static-ip-name
labels:
app: appname
spec:
backend:
serviceName: ui-service
servicePort: 8081
tls:
- hosts:
- my-host-name.com
secretName: my-secret
rules:
- host: my-host-name.com
http:
paths:
- backend:
serviceName: ui-service
servicePort: 8081
- host: my-host-name.com
http:
paths:
- backend:
serviceName: app-service
servicePort: 8082
服务
---
apiVersion: v1
kind: Service
metadata:
labels:
name: ui-service
name: ui-service
namespace: myappnamespace
annotations:
cloud.google.com/app-protocols: '{"ui-https":"HTTPS"}'
beta.cloud.google.com/backend-config: '{"ports":{"8081":"cloud-armor"}}'
spec:
selector:
app: appname
ports:
- name: ui-https
port: 8081
targetPort: "ui"
protocol: "TCP"
selector:
name: appname
type: NodePort
---
apiVersion: v1
kind: Service
metadata:
labels:
name: app-service
name: app-service
namespace: myappnamespace
annotations:
cloud.google.com/app-protocols: '{"serviceport-https":"HTTPS"}'
beta.cloud.google.com/backend-config: '{"ports":{"8082":"cloud-armor"}}'
spec:
selector:
app: appname
ports:
- name: serviceport-https
port: 8082
targetPort: "service-port"
protocol: "TCP"
selector:
name: appname
type: NodePort
---
部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: appname
namespace: myappnamespace
labels:
name: appname
spec:
replicas:1
selector:
matchLabels:
name: appname
strategy:
type: Recreate
template:
metadata:
name: appname
namespace: appnamespace
labels:
name: appname
spec:
restartPolicy: Always
serviceAccountName: myserviceaccount
containers:
- name: my-container
image: image
ports:
- name: service-port
containerPort: 8082
- name: ui
containerPort: 8081
readinessProbe:
failureThreshold: 3
httpGet:
path: /api/health
port: 8081
scheme: HTTPS
livenessProbe:
exec:
command:
- cat
- /version.txt
[......]
答案 0 :(得分:1)
通过入口公开的服务必须响应来自负载均衡器的health checks。
GKE Ingress创建的外部HTTP(S)负载均衡器仅支持https流量的端口443。
在这种情况下,您可能想要:
使用两个单独的Ingress资源为同一IP地址和端口上的两个不同主机名路由流量:
ui-https.my-host-name.com
wss-https.my-host-name.com
请让我知道是否有帮助。