manifests/hgate/service.yaml (71 lines of code) (raw):
# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# TODO: add a gateway injection
# TODO: add RBAC to create Service and WorkloadInstance for auto-registration
# TODO: option to use ILB ( requires Cloudrun connector ) or regular LB - can be used without connector
#
apiVersion: v1
kind: Service
metadata:
name: hgate
namespace: istio-system
annotations:
# The service is not meant for mesh use - excluding from cluster generation.
# Since it listens on 80/443, would break whitebox listeners.
# TODO: fix whitebox mode to honor UNTRUSTED
networking.istio.io/exportTo: .
labels:
topology.istio.io/network: hbone
spec:
ports:
# Standard port for SNI routing in gateways, same as east-west gateway
# Used by envoy, for Istio multi-network inbound traffic.
- port: 15443
name: tls
- port: 15008
name: https-hbone
# 15442 is the dedicated port for SNI to mTLS-over-hbone outbound tunneling.
# Not exposed on the public endpoint
# Reverse connections
- port: 15441
name: https-h2r
# Since we're deploying a Gateway, also include the std ports.
# It is possible to share the gateway for regular ingress.
- port: 443
name: https
targetPort: 8443
- port: 80
name: http
targetPort: 8080
# Used for docker containers on the public internet, or if CloudRun doesn't use a connector.
- port: 15012
name: tls-istiod
- port: 16012
name: tcp-istiod
selector:
app: hgate
type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
name: hgate-istiod
namespace: istio-system
spec:
ports:
- port: 15012
name: tcp-istiod
selector:
app: istiod
istio.io/rev: default
---
# https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing
#
apiVersion: v1
kind: Service
metadata:
name: internal-hgate
namespace: istio-system
annotations:
networking.gke.io/load-balancer-type: "Internal"
cloud.google.com/load-balancer-type: "Internal"
networking.gke.io/internal-load-balancer-allow-global-access: "true"
labels:
topology.istio.io/network: hbone
spec:
ports:
# Standard port for SNI routing in gateways, same as east-west gateway
- port: 15443
name: tls
# Dedicated port for SNI to mTLS-over-hbone tunneling.
- port: 15442
name: tls-tun
- port: 15008
name: https-hbone
# Reverse connection support.
- port: 15441
name: https-h2r
# Used for docker containers/VMs on internal VPC, or CloudRun using connector - for in-cluster Istiod.
- port: 15012
name: tls-istiod
selector:
app: hgate
type: LoadBalancer
---