Create a namespace kubelb for the CCM to be deployed in.
The agent expects a Secret with a kubeconf file named kubelb to access the management/load balancing cluster.
kubectl --namespace kubelb create secret generic kubelb-cluster --from-file=<path to kubelb kubeconf file>
The name of secret can be overridden using .Values.kubelb.clusterSecretName
Update the tenantName in the values.yaml to a unique identifier for the tenant. This is used to identify the tenant in the manager cluster. This can be any unique string that follows lower case RFC 1123.
At this point a minimal values.yaml should look like this:
kubelb:
clusterSecretName: kubelb-cluster
tenantName: <unique-identifier-for-tenant>
At this point a minimal values.yaml should look like this:
imagePullSecrets:
- name: <imagePullSecretName>
kubelb:
clusterSecretName: kubelb-cluster
tenantName: <unique-identifier-for-tenant>
helm pull oci://quay.io/kubermatic/helm-charts/kubelb-ccm-ee --version=v1.0.0 --untardir "kubelb-ccm" --untar
## Create and update values.yaml with the required values.
helm install kubelb-ccm kubelb-ccm/kubelb-ccm-ee --namespace kubelb -f values.yaml
| Key | Type | Default | Description |
|---|---|---|---|
| affinity | object | {} |
|
| autoscaling.enabled | bool | false |
|
| autoscaling.maxReplicas | int | 10 |
|
| autoscaling.minReplicas | int | 1 |
|
| autoscaling.targetCPUUtilizationPercentage | int | 80 |
|
| autoscaling.targetMemoryUtilizationPercentage | int | 80 |
|
| extraVolumeMounts | list | [] |
|
| extraVolumes | list | [] |
|
| fullnameOverride | string | "" |
|
| image.pullPolicy | string | "IfNotPresent" |
|
| image.repository | string | "quay.io/kubermatic/kubelb-ccm-ee" |
|
| image.tag | string | "v1.0.0" |
|
| imagePullSecrets | list | [] |
|
| kubelb.clusterSecretName | string | "kubelb-cluster" |
|
| kubelb.enableLeaderElection | bool | true |
|
| kubelb.nodeAddressType | string | "InternalIP" |
|
| kubelb.tenantName | string | nil |
|
| nameOverride | string | "" |
|
| nodeSelector | object | {} |
|
| podAnnotations | object | {} |
|
| podLabels | object | {} |
|
| podSecurityContext.runAsNonRoot | bool | true |
|
| podSecurityContext.seccompProfile.type | string | "RuntimeDefault" |
|
| rbac.allowLeaderElectionRole | bool | true |
|
| rbac.allowMetricsReaderRole | bool | true |
|
| rbac.allowProxyRole | bool | true |
|
| rbac.enabled | bool | true |
|
| replicaCount | int | 1 |
|
| resources.limits.cpu | string | "100m" |
|
| resources.limits.memory | string | "128Mi" |
|
| resources.requests.cpu | string | "100m" |
|
| resources.requests.memory | string | "128Mi" |
|
| securityContext.allowPrivilegeEscalation | bool | false |
|
| securityContext.capabilities.drop[0] | string | "ALL" |
|
| securityContext.runAsUser | int | 65532 |
|
| service.port | int | 8443 |
|
| service.protocol | string | "TCP" |
|
| service.type | string | "ClusterIP" |
|
| serviceAccount.annotations | object | {} |
|
| serviceAccount.create | bool | true |
|
| serviceAccount.name | string | "" |
|
| serviceMonitor.enabled | bool | false |
|
| tolerations | list | [] |
helm pull oci://quay.io/kubermatic/helm-charts/kubelb-ccm --version=v1.0.0 --untardir "kubelb-ccm" --untar
## Create and update values.yaml with the required values.
helm install kubelb-ccm kubelb-ccm/kubelb-ccm --namespace kubelb -f values.yaml
| Key | Type | Default | Description |
|---|---|---|---|
| affinity | object | {} |
|
| autoscaling.enabled | bool | false |
|
| autoscaling.maxReplicas | int | 10 |
|
| autoscaling.minReplicas | int | 1 |
|
| autoscaling.targetCPUUtilizationPercentage | int | 80 |
|
| autoscaling.targetMemoryUtilizationPercentage | int | 80 |
|
| extraVolumeMounts | list | [] |
|
| extraVolumes | list | [] |
|
| fullnameOverride | string | "" |
|
| image.pullPolicy | string | "IfNotPresent" |
|
| image.repository | string | "quay.io/kubermatic/kubelb-ccm" |
|
| image.tag | string | "v1.0.0" |
|
| imagePullSecrets | list | [] |
|
| kubelb.clusterSecretName | string | "kubelb-cluster" |
|
| kubelb.enableLeaderElection | bool | true |
|
| kubelb.nodeAddressType | string | "InternalIP" |
|
| kubelb.tenantName | string | nil |
|
| nameOverride | string | "" |
|
| nodeSelector | object | {} |
|
| podAnnotations | object | {} |
|
| podLabels | object | {} |
|
| podSecurityContext.runAsNonRoot | bool | true |
|
| podSecurityContext.seccompProfile.type | string | "RuntimeDefault" |
|
| rbac.allowLeaderElectionRole | bool | true |
|
| rbac.allowMetricsReaderRole | bool | true |
|
| rbac.allowProxyRole | bool | true |
|
| rbac.enabled | bool | true |
|
| replicaCount | int | 1 |
|
| resources.limits.cpu | string | "100m" |
|
| resources.limits.memory | string | "128Mi" |
|
| resources.requests.cpu | string | "100m" |
|
| resources.requests.memory | string | "128Mi" |
|
| securityContext.allowPrivilegeEscalation | bool | false |
|
| securityContext.capabilities.drop[0] | string | "ALL" |
|
| securityContext.runAsUser | int | 65532 |
|
| service.port | int | 8443 |
|
| service.protocol | string | "TCP" |
|
| service.type | string | "ClusterIP" |
|
| serviceAccount.annotations | object | {} |
|
| serviceAccount.create | bool | true |
|
| serviceAccount.name | string | "" |
|
| serviceMonitor.enabled | bool | false |
|
| tolerations | list | [] |