# General configuration
In this section we go over the generic configuration properties. These properties are defined in the config.yml.
NOTE: Further configurable properties of the
config.ymlcan be found at the end of this chapter.
# System domain
system_domain: demo.kube-plus.cloud
- The
system_domainproperty is required for the kube+ system components. All your apps and also the system components itself will run under a subdomain of this - e.g.grafana.demo.kube-plus.cloud
In order to be able to use these domains, you need to setup the DNS accordingly. This is described under the DNS chapter.
# Auth
In the this section we define the basic keycloak and pomerium configuration. Keycloak is an open-source identity and access management (IAM). All installed system components will be integrated with keycloak. Pomerium (opens new window) is an identity-aware reverse-proxy that can automatically secure internal apps via OAuth2 and is integrated with keycloak and listening on *.system-domain.
auth:
client:
secret: my-secret
user:
password: my-password
email: user@domain-example
admin:
password: my-admin-password
email: user@domain-example
pomerium:
cookie_secret: my-cookie-secret
shared_secret: my-shared-secret
additional_system_components:
- name: my-dummy-app
hostname: dummy-app
endpoint: http://my-app.dummy.svc.cluster.local:8080
- The
auth.client.secretproperty is required and can be any random character you want (e.g. use uuidgen to generate one). - The
auth.user.passwordproperty is required and can be randomly chosen. It's the password for the initial keycloak user "kube-plus". - The
auth.admin.passwordproperty is required and can be randomly chosen. It's the password for the keycload user "admin" - The
auth.pomerium.cookie_secretproperty is required and can be randomly chosen. It's the cookie secret for the pomerium reverse-proxy - The
auth.pomerium.shared_secretproperty is required and can be randomly chosen. It's the shared secret for the pomerium reverse-proxy - The
auth.additional_system_componentsproperty is optional. It's for configuring any additional apps/components that you want pomerium to reverse-proxy for you.hostnamewill be the subdomain of thesystem_domainunder which the app will be reachable, in this exampledummy-app.demo.kube-plus.cloud.endpointis the cluster-local address where pomerium should proxy traffic towards.
# ArgoCD
ArgoCD is a declarative, GitOps continuous delivery tool for Kubernetes. Within kube+ it is an optional component. Set the argodcd.enabled property to false if you don't want to install this component, the default value is true.
argocd:
# enabled: true
server:
secret_key: my-secret
- The
argocd.server.secret_keyproperty is required if ArgoCD is enabled, it can be any random character you want (e.g. you can useuuidgento generate a key). This is an ArgoCD internal secret and will not be visible or used by users.
# Harbor
Harbor is an open source registry and is an optional component within kube+. Set the harbor.enabled property to false if you don't want to install this component, the default value is true.
harbor:
# enabled: true
password: my-password
csrf_key: dummy-dummy-dummy-dummy-dummy---
secret: dummy-dummy-----
secret_key: dummy-dummy-----
disk_size:
registry: 50Gi
- The
harbor.passwordproperty is required if harbor is enabled. It's the harboradminpassword. This is a password you can newly pick. - The
harbor.csrf_keyproperty is required if harbor is enabled. It needs to be 32 characters. - The
harbor.secretproperty is required if harbor is enabled. It needs to be 16 characters. - The
harbor.secret_keyproperty is required if harbor is enabled. It needs to be 16 characters. - The
harbor.disk_size.registryproperty is optional. With that property you can change the disk size of the registry, the default value is50Gi. You can remove these two lines entirely if you don't want to change the default.
# Lets encrypt
Lets encrypt allows you the certificate generation for cert-manager. This component is optional within kube+. Set the lets_encrypt.enabled property to false if you don't want to install this component, the default value is true.
lets_encrypt:
# enabled: true
issuer: prod
- The
lets_encrypt.issuerproperty is optional. The default value isprod. It can be eitherprodorstaging. It is only required iflets_encryptis enabled.
NOTE: Overwrite the
lets_encrypt.issuerproperty tostagingin non productive environments to avoid rate limits.
# Dashboard
Within kube+ the Dashboard is an optional component. Set the dashboard dashboard.enabled property to false if you don't want to install this component, the default value is true.
# dashboard:
# enabled: true
- Set the
dashboard.enabledproperty tofalseif you don't want to install this component.
# Prometheus
Prometheus is a standard component within kube+. You can instruct prometheus to automatically scrape everything it finds on-cluster. Otherwise it would only scrape Service- and PodMonitors. This option is entirely optional, the default value is true.
# prometheus:
# scrape_everything: true
- Set the
prometheus.scrape_everythingproperty tofalseif you want prometheus to only scrape Service- and PodMonitors.
# kpack
Kpack is a Kubernetes native container build service, that allows you to build container images from your application source code. Within kube+ kpack is an optional component. Set the kpack enabled property to false if you don't want to install this component, the default value is true.
NOTE: kpack only works with Internet!
kpack:
# enabled: true
registry:
# use_harbor: true
# hostname: my.ecr.amazonaws.com
# username: dummy-dummy
# password: dummy-dummy
# builder_path: kpack/builder
# image_test_path: kpack/test_images
- The registry
kpack.registry.use_harboris optional. The default value istrue. Set the value tofalseonly if you want to use a different registry to store kpack-produced images. - The
kpack.registry.hostnameproperty is only required, ifkpack.registry.use_harboris set tofalse. - The
kpack.registry.usernameproperty is only required, ifkpack.registry.use_harboris set tofalse. - The
kpack.registry.passwordproperty is only required, if ``kpack.registry.use_harboris set tofalse`. - The
kpack.registry.builder_pathproperty is only required, ifkpack.registry.use_harboris set tofalse. It's the image storage path for kpack builder components. - The
kpack.registry.image_test_pathproperty is only required, ifuse_harboris set tofalse. It's the image storage path for kpack test images.
# Knative
Knative is a Kubernetes-based platform to easily deploy and manage modern container workloads. Within kube+ knative is an optional component. Set the knative.enabled property to false if you don't want to install this component, the default value is true.
# knative:
# enabled: true
- The
knative.enabledproperty is optional. The default value istrue. Set it tofalseif you don't want to use this component.
# Velero
Velero
Velero is an open source backup and restore tool. Within kube+ velero is an optional component. Set the velero.enabled property to false if you don't want to install this component, the default value is true.
velero:
# enabled: true
bucket: my-bucket
prefix: my-prefix
# scheduled_backup:
# enabled: true
# default_volumes_to_restic: false
# schedule: "15 5 * * *"
NOTE: Never change these backup storage location values after installation, otherwise this will break velero and it needs a fresh install!
- The
velero.bucketproperty is only required, if you use velero. Define the bucket where velero will store your backups. - The
velero.prefixproperty is only required, if you use velero. Define the prefix as folder/path for your velero backups. - The
velero.scheduled_backup.enabledproperty is optional. The default value istrue. It will schedule a backup of the whole kubernetes cluster. Set it tofalseif you don't want a backup to be scheduled. - The
velero.scheduled_backup.default_volumes_to_resticproperty is optional. It is used whenvelero.scheduled_backup.enabledis set totrue. The default value isfalse. This means that the backup will be perfomed using volume snapshots. Set it totrueif you want to use Restic instead. - The
velero.scheduled_backup.scheduleproperty is optional. It is used whenvelero.scheduled_backup.enabledis set totrue. It configures when the scheduled backup will run. The default valuse is15 5 * * *.
NOTE: If you install velero, please note that you have to configure the
platform.s3property in the Platform section below.
# Metrics
In this section of the config.yml you define if kube+ installs a metrics server or if your kubernetes already brings one with its installation. The default value is true. Set it to false if you don't want to use this component.
# metrics_server:
# enabled: true
- The
metrics_server.enabledproperty is optional. The default value istrue. Set it tofalseif you don't want to use this component.
# Sealed Secrets
In this section of the config.yml you define if kube+ installs a sealed secrets component. The default value is true. Set it to false if you don't want to use this component.
# sealed_secrets:
# enabled: true
- The
sealed_secrets.enabledproperty is optional. The default value istrue. Set it tofalseif you don't want to use this component.
# Platform
In the platform section of the config.yml you define the platform specific properties.
NOTE: kube+ runs on any kubernetes matching the minimum requirements described in the prerequisites section Requirements.
platform:
kubernetes: eks
s3: compatible
resources:
remove_limits: false
remove_requests: false
- The
platform.kubernetesproperty is optional. The default value iseks. It can be eithereks,aks,pks,kindor any other string. The first 4 have implications on other property requirements. - The
platform.s3property is only required if velero is enabled. The default value iss3. It can be eithers3,azureorcompatible. This property has implications on other properties. - The
platform.resources.remove_limitsproperty is optional. The default value isfalse. Change the value of this property totrueif you don't want to have any resource requests for pods/containers. - The
platform.resources.remove_requestsproperty is optional. The default value isfalse. Change the value of this property totrueif you don't want to have any resource requests for pods/containers.
If you use the platform.s3: "compatible" mode, you need to define the following properties in your config.yml.
s3_compatible:
access_key: s3-access-key
secret_key: s3-secret-key
url: s3-url
# AWS
# Azure
# Exoscale
# Swisscom
# Additional config.yml properties
The listed properties below can be configured on config.yml and defaults to following values.
# Module Registry
The module_registry defines the registry where it fetches the kube+ images and defaults to
cnbb-docker-local.bin.swisscom.com with appropriate credentials and permisssions set already.
module_registry:
host: cnbb-docker-local.bin.swisscom.com
username: SA-PF100-kubepluspub
password: <<redacted>>
# System Registry
With the system_registry you could define and use a private registry instead.
Ses also Relocate images.
system_registry:
host: ""
path: kube-plus
username: ""
password: ""
# Misc Configs
Further defaults or additionals which can be overwritten with a setting on config.yml
# general admin email address (e.g. issuser certs). See email for individual user under auth: stanza.
admin_email: applicationcloud.platform@swisscom.com
# internet true or false - air gapped - You will have to disable Lets encrypt and provide your own certificates.
internet:
enabled: true
# certificates issuer set self-signed (default) or customer-provided.
# For customer-provided see also:[Certificates]
certificates:
issuer: self-signed
customer_provided:
tls_crt: ""
tls_key: ""
ca_crt: ""
# argoworkflow will be disabled if argocd is set to false.
argoworkflow:
enabled: true
# component flavor: small, medium, large
flavor_type: small
# amount of individual jobs. The value "" takes the default setting.
sizing:
replicas:
cert_manager: ""
cert_manager_cainjector: ""
cert_manager_webhook: ""
contour_external: ""
contour_internal: ""
harbor_core: ""
harbor_jobservice: ""
harbor_portal: ""
harbor_registry: ""
knative_serving_autoscaler: ""
knative_serving_net_contour_controller: ""
kpack_controller: ""
kpack_webhook: ""
dashboard: ""
dashboard_metrics_scraper: ""
pomerium: ""