Deckhouse Platform in kind

Select the Deckhouse Platform revision

The recommended settings for a Deckhouse Platform Community Edition installation are generated below:

  • config.yml — a file with the configuration needed to bootstrap the cluster. Contains the installer parameters, access parameters, and the initial cluster parameters.

Please pay attention to:

  • highlighted parameters you must define.
  • parameters you might want to change.

To learn more about the Deckhouse Platform release channels, please see the relevant documentation.

# Section for bootstrapping the Deckhouse cluster (InitConfiguration).
# Version of the Deckhouse API.
apiVersion: deckhouse.io/v1
# Type of the configuration section.
kind: InitConfiguration
# Deckhouse parameters.
deckhouse:
  # The release channel in use.
  releaseChannel: Stable
  # The Minimal bundle is used when installing Deckhouse in an existing cluster.
  bundle: Minimal
  configOverrides:
    global:
      modules:
        # Template for Ingress resources of Deckhouse modules.
        # E.g., Grafana for %s.example.com will be available as 'grafana.example.com'.
        # The nip.io service is used as as a working example.
        publicDomainTemplate: "%s-127-0-0-1.nip.io"
        https:
          mode: Disabled
    # Enabling a group of modules required for monitoring.
    operatorPrometheusCrdEnabled: true
    operatorPrometheusEnabled: true
    prometheusCrdEnabled: true
    prometheusEnabled: true
    # Disabling longterm Prometheus in the prometheus module configuration —  it is redundant for Deckhouse testing.
    prometheus:
      longtermRetentionDays: 0
    # Enabling a module for cluster control plane monitoring.
    monitoringKubernetesControlPlaneEnabled: true
    # Enabling a module for installing Ingress controller.
    ingressNginxEnabled: true
# Section for bootstrapping the Deckhouse cluster (InitConfiguration). # Version of the Deckhouse API. apiVersion: deckhouse.io/v1 # Type of the configuration section. kind: InitConfiguration # Deckhouse parameters. deckhouse: # The release channel in use. releaseChannel: Stable # The Minimal bundle is used when installing Deckhouse in an existing cluster. bundle: Minimal configOverrides: global: modules: # Template for Ingress resources of Deckhouse modules. # E.g., Grafana for %s.example.com will be available as 'grafana.example.com'. # The nip.io service is used as as a working example. publicDomainTemplate: "%s-127-0-0-1.nip.io" https: mode: Disabled # Enabling a group of modules required for monitoring. operatorPrometheusCrdEnabled: true operatorPrometheusEnabled: true prometheusCrdEnabled: true prometheusEnabled: true # Disabling longterm Prometheus in the prometheus module configuration — it is redundant for Deckhouse testing. prometheus: longtermRetentionDays: 0 # Enabling a module for cluster control plane monitoring. monitoringKubernetesControlPlaneEnabled: true # Enabling a module for installing Ingress controller. ingressNginxEnabled: true

Deckhouse Platform Enterprise Edition license key

The license key is used by Deckhouse components to access the geo-distributed container registry, where all images used by the Deckhouse are stored.

The commands and configuration files on this page are generated using the license key you entered.

Request access

Fill out this form and we will send you access credentials via email.

Enter license key

The recommended settings for a Deckhouse Platform Enterprise Edition installation are generated below:

  • config.yml — a file with the configuration needed to bootstrap the cluster. Contains the installer parameters, access parameters, and the initial cluster parameters.

Please pay attention to:

  • highlighted parameters you must define.
  • parameters you might want to change.

To learn more about the Deckhouse Platform release channels, please see the relevant documentation.

# Section for bootstrapping the Deckhouse cluster (InitConfiguration).
# Version of the Deckhouse API.
apiVersion: deckhouse.io/v1
# Type of the configuration section.
kind: InitConfiguration
# Deckhouse parameters.
deckhouse:
  # Address of the Docker registry where the Deckhouse images are located.
  imagesRepo: registry.deckhouse.io/deckhouse/ee
  # A special string with your token to access Docker registry (generated automatically for your license token).
  registryDockerCfg: <YOUR_ACCESS_STRING_IS_HERE>
  # The release channel in use.
  releaseChannel: Stable
  # The Minimal bundle is used when installing Deckhouse in an existing cluster.
  bundle: Minimal
  configOverrides:
    global:
      modules:
        # Template for Ingress resources of Deckhouse modules.
        # E.g., Grafana for %s.example.com will be available as 'grafana.example.com'.
        # The nip.io service is used as as a working example.
        publicDomainTemplate: "%s-127-0-0-1.nip.io"
        https:
          mode: Disabled
    # Enabling a group of modules required for monitoring.
    operatorPrometheusCrdEnabled: true
    operatorPrometheusEnabled: true
    prometheusCrdEnabled: true
    prometheusEnabled: true
    # Disabling longterm Prometheus in the prometheus module configuration —  it is redundant for Deckhouse testing.
    prometheus:
      longtermRetentionDays: 0
    # Enabling a module for cluster control plane monitoring.
    monitoringKubernetesControlPlaneEnabled: true
    # Enabling a module for installing Ingress controller.
    ingressNginxEnabled: true
# Section for bootstrapping the Deckhouse cluster (InitConfiguration). # Version of the Deckhouse API. apiVersion: deckhouse.io/v1 # Type of the configuration section. kind: InitConfiguration # Deckhouse parameters. deckhouse: # Address of the Docker registry where the Deckhouse images are located. imagesRepo: registry.deckhouse.io/deckhouse/ee # A special string with your token to access Docker registry (generated automatically for your license token). registryDockerCfg: <YOUR_ACCESS_STRING_IS_HERE> # The release channel in use. releaseChannel: Stable # The Minimal bundle is used when installing Deckhouse in an existing cluster. bundle: Minimal configOverrides: global: modules: # Template for Ingress resources of Deckhouse modules. # E.g., Grafana for %s.example.com will be available as 'grafana.example.com'. # The nip.io service is used as as a working example. publicDomainTemplate: "%s-127-0-0-1.nip.io" https: mode: Disabled # Enabling a group of modules required for monitoring. operatorPrometheusCrdEnabled: true operatorPrometheusEnabled: true prometheusCrdEnabled: true prometheusEnabled: true # Disabling longterm Prometheus in the prometheus module configuration — it is redundant for Deckhouse testing. prometheus: longtermRetentionDays: 0 # Enabling a module for cluster control plane monitoring. monitoringKubernetesControlPlaneEnabled: true # Enabling a module for installing Ingress controller. ingressNginxEnabled: true

Use a Docker image to install the Deckhouse Platform. It is necessary to transfer configuration files to the container as well as SSH keys for accessing the master nodes. Run on the personal computer:

docker run --pull=always  --network host -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" \
 -v "$HOME/.kube/config:/kubeconfig" \
 registry.deckhouse.io/deckhouse/ce/install:stable bash
docker run --pull=always --network host -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" \ -v "$HOME/.kube/config:/kubeconfig" \ registry.deckhouse.io/deckhouse/ce/install:stable bash

Notes:

  • Kubectl configuration file with access to Kubernetes API must be mount as the /kubeconfig file in the container.

Now, to initiate the process of installation, you need to execute inside the container:

dhctl bootstrap-phase install-deckhouse \
  --kubeconfig=/kubeconfig \
  --config=/config.yml
dhctl bootstrap-phase install-deckhouse \ --kubeconfig=/kubeconfig \ --config=/config.yml

After the installation is complete, you will be returned to the command line.

It remains to create the Ingress controller configuration. Create the ingress-nginx-controller file.yml with the following content:

ingress-nginx-controller.ymlCopy filenameCopy content
# Section containing the parameters of nginx ingress controller.
# Version of the Deckhouse API.
apiVersion: deckhouse.io/v1
kind: IngressNginxController
metadata:
  name: nginx
spec:
  # The name of the Ingress class to use with the Ingress nginx controller.
  ingressClass: nginx
  # The way traffic goes to cluster from the outer network.
  inlet: HostPort
  hostPort:
    httpPort: 80
    httpsPort: 443
# Section containing the parameters of nginx ingress controller. # Version of the Deckhouse API. apiVersion: deckhouse.io/v1 kind: IngressNginxController metadata: name: nginx spec: # The name of the Ingress class to use with the Ingress nginx controller. ingressClass: nginx # The way traffic goes to cluster from the outer network. inlet: HostPort hostPort: httpPort: 80 httpsPort: 443

Apply the file using the command below:

kubectl create -f ingress-nginx-controller.yml
kubectl create -f ingress-nginx-controller.yml

It may take about a minute to start the Ingress controller.

To check the status of the Ingress Controller Pod, run the following command:

kubectl -n d8-ingress-nginx get po
kubectl -n d8-ingress-nginx get po

Wait for the Ingress controller Pod to switch to Ready state.

You have installed Deckhouse Platform in kind!

Use a Docker image to install the Deckhouse Platform. It is necessary to transfer configuration files to the container as well as SSH keys for accessing the master nodes. Run on the personal computer:

 echo <LICENSE_TOKEN> | docker login -u license-token --password-stdin registry.deckhouse.io
docker run --pull=always  --network host -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" \
 -v "$HOME/.kube/config:/kubeconfig" \
 registry.deckhouse.io/deckhouse/ee/install:stable bash
echo <LICENSE_TOKEN> | docker login -u license-token --password-stdin registry.deckhouse.io docker run --pull=always --network host -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" \ -v "$HOME/.kube/config:/kubeconfig" \ registry.deckhouse.io/deckhouse/ee/install:stable bash

Notes:

  • Kubectl configuration file with access to Kubernetes API must be mount as the /kubeconfig file in the container.

Now, to initiate the process of installation, you need to execute inside the container:

dhctl bootstrap-phase install-deckhouse \
  --kubeconfig=/kubeconfig \
  --config=/config.yml
dhctl bootstrap-phase install-deckhouse \ --kubeconfig=/kubeconfig \ --config=/config.yml

After the installation is complete, you will be returned to the command line.

It remains to create the Ingress controller configuration. Create the ingress-nginx-controller file.yml with the following content:

ingress-nginx-controller.ymlCopy filenameCopy content
# Section containing the parameters of nginx ingress controller.
# Version of the Deckhouse API.
apiVersion: deckhouse.io/v1
kind: IngressNginxController
metadata:
  name: nginx
spec:
  # The name of the Ingress class to use with the Ingress nginx controller.
  ingressClass: nginx
  # The way traffic goes to cluster from the outer network.
  inlet: HostPort
  hostPort:
    httpPort: 80
    httpsPort: 443
# Section containing the parameters of nginx ingress controller. # Version of the Deckhouse API. apiVersion: deckhouse.io/v1 kind: IngressNginxController metadata: name: nginx spec: # The name of the Ingress class to use with the Ingress nginx controller. ingressClass: nginx # The way traffic goes to cluster from the outer network. inlet: HostPort hostPort: httpPort: 80 httpsPort: 443

Apply the file using the command below:

kubectl create -f ingress-nginx-controller.yml
kubectl create -f ingress-nginx-controller.yml

It may take about a minute to start the Ingress controller.

To check the status of the Ingress Controller Pod, run the following command:

kubectl -n d8-ingress-nginx get po
kubectl -n d8-ingress-nginx get po

Wait for the Ingress controller Pod to switch to Ready state.

You have installed Deckhouse Platform in kind!