This chapter describes how to configure the expose strategy when setting up a Kubermatic Kubernetes Platform (KKP). The expose strategy defines how the control plane components are exposed outside the seed cluster.
The expose strategies rely on a component called nodeport-proxy. It is
basically a L4 service proxy (TCP only is supported at the moment), capable of
routing the traffic based on:
The expose strategy can be configured globally with the KubermaticConfiguration as follow:
apiVersion: operator.kubermatic.io/v1alpha1
kind: KubermaticConfiguration
metadata:
name: kubermatic
namespace: kubermatic
spec:
exposeStrategy: NodePort
featureGates:
TunnelingExposeStrategy:
enabled: true
The valid values for exposeStrategy are:
NodePort: With this strategy a service of type nodeport is created for each
exposed component (e.g. Kubernetes API Server). If services of type
LoadBalancer are available all the services will be made available through
a single load balancer, passing from the nodeport-proxy.LoadBalancer: A service of type LoadBalancer will be created for each user cluster.
This strategy requires services of type LoadBalancer to be available on the seed
clusters.Tunneling: (alpha) With this strategy the traffic is routed to the based on
a combination of SNI and HTTP/2 tunnels by the nodeport-proxy.Alternatively, the expose strategy can be overridden at Seed level, meaning
that it is possible to have different expose strategies on the same KKP
cluster. e.g.
apiVersion: kubermatic.k8s.io/v1
kind: Seed
metadata:
name: kubermatic
namespace: kubermatic
spec:
# these two fields are only informational
country: FR
location: Paris
# List of datacenters where this seed cluster is allowed to create clusters in
# In this example, user cluster will be deployed in eu-central-1 on AWS.
datacenters:
aws-eu-central-1:
country: DE
location: EU (Frankfurt)
spec:
aws:
images: null
region: eu-central-1
enforceAuditLogging: false
enforcePodSecurityPolicy: false
# Override the default expose strategy with 'LoadBalancer'
expose_strategy: LoadBalancer
# reference to the kubeconfig to use when connecting to this seed cluster
kubeconfig:
name: kubeconfig-cluster-example
namespace: kubermatic
This strategy is available starting from KKP 2.16 as a tech preview.
In order to enable this strategy the TunnelingExposeStrategy feature gate
should be enabled.
apiVersion: operator.kubermatic.io/v1alpha1
kind: KubermaticConfiguration
metadata:
name: kubermatic
namespace: kubermatic
spec:
exposeStrategy: Tunneling
featureGates:
TunnelingExposeStrategy:
enabled: true
The current limitations of this strategy are:
192.168.30.10.