Files
kamaji/docs/reference.md

5.0 KiB

Configuration

Currently Kamaji supports (in this order):

  • CLI flags
  • Environment variables
  • Configuration files

By default Kamaji search for the configuration file (kamaji.yaml) and uses parameters found inside of it. In case some environment variable are passed, this will override configuration file parameters. In the end, if also a CLI flag is passed, this will override both env vars and config file as well.

This is easily explained in this way:

cli-flags > env-vars > config-files

Available flags are the following:

--config-file string                 Configuration file alternative. (default "kamaji.yaml")
--datastore string                   The default DataStore that should be used by Kamaji to setup the required storage (default "etcd")
--health-probe-bind-address string   The address the probe endpoint binds to. (default ":8081")
--kine-image string                  Container image along with tag to use for the Kine sidecar container (used only if etcd-storage-type is set to one of kine strategies) (default "rancher/kine:v0.9.2-amd64")
--kubeconfig string                  Paths to a kubeconfig. Only required if out-of-cluster.
--leader-elect                       Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager.
--metrics-bind-address string        The address the metric endpoint binds to. (default ":8080")
--tmp-directory string               Directory which will be used to work with temporary files. (default "/tmp/kamaji")
--zap-devel                          Development Mode defaults(encoder=consoleEncoder,logLevel=Debug,stackTraceLevel=Warn). Production Mode defaults(encoder=jsonEncoder,logLevel=Info,stackTraceLevel=Error) (default true)
--zap-encoder encoder                Zap log encoding (one of 'json' or 'console')
--zap-log-level level                Zap Level to configure the verbosity of logging. Can be one of 'debug', 'info', 'error', or any integer value > 0 which corresponds to custom debug levels of increasing verbosity
--zap-stacktrace-level level         Zap Level at and above which stacktraces are captured (one of 'info', 'error', 'panic').
--zap-time-encoding time-encoding    Zap time encoding (one of 'epoch', 'millis', 'nano', 'iso8601', 'rfc3339' or 'rfc3339nano'). Defaults to 'epoch'.

Available environment variables are:

Environment variable Description
KAMAJI_DATASTORE Name of the DataStore resource with driver definition and settings. (default "etcd")
KAMAJI_METRICS_BIND_ADDRESS The address the metric endpoint binds to. (default ":8080")
KAMAJI_HEALTH_PROBE_BIND_ADDRESS The address the probe endpoint binds to. (default ":8081")
KAMAJI_LEADER_ELECTION Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager.
KAMAJI_TMP_DIRECTORY Directory which will be used to work with temporary files. (default "/tmp/kamaji")

Build and deploy

Clone the repo on your workstation.

## Install dependencies
$ go mod tidy

## Generate code
$ make generate

## Generate Manifests
$ make manifests

## Install Manifests
$ make install

## Build Docker Image
$ IMG=<image name and tag> make docker-build

## Push Docker Image
$ IMG=<image name and tag> make docker-push

## Deploy Kamaji
$ IMG=<image name and tag> make deploy

## YAML Installation File
$ make yaml-installation-file

It will generate a yaml installation file at config/install.yaml. It should be customize accordingly.

Tenant Control Planes

Kamaji offers a CRD to provide a declarative approach of managing tenant control planes. This CRD is called TenantControlPlane, or tcp in short. Use the command kubectl explain tcp.spec to understand the fields and their usage.

Add-ons

Kamaji provides optional installations into the deployed tenant control plane through add-ons. Is it possible to enable/disable them through the tcp definition.

Core DNS

addons:
    coreDNS: {}

Kube-Proxy

addons:
    kubeProxy: {}

Konnectivity

addons:
  konnectivity:
    proxyPort: 31132 # mandatory
    version: v0.0.32
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 100m
        memory: 128Mi
    serverImage: registry.k8s.io/kas-network-proxy/proxy-server
    agentImage: registry.k8s.io/kas-network-proxy/proxy-agent