Deckhouse Platform в Microsoft Azure

Выберите редакцию Deckhouse Platform

Ниже сгенерированы рекомендованные настройки для установки Deckhouse Platform Community Edition:

  • config.yml — файл первичной конфигурации кластера. Содержит параметры инсталлятора, параметры доступа облачного проавайдера и начальные параметры кластера.
  • resources.yml — описание ресурсов для создания после установки (настройки узлов и Ingress-контроллера).

Обратите внимание:

  • обязательные для самостоятельного заполнения параметры.
  • опциональные параметры.

Полное описание параметров конфигурации cloud-провайдеров вы можете найти документации.

Подробнее о каналах обновления Deckhouse Platform (release channels) можно почитать в документации.

# секция с общими параметрами кластера (ClusterConfiguration)
# используемая версия API Deckhouse Platform
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: ClusterConfiguration
# тип инфраструктуры: bare metal (Static) или облако (Cloud)
clusterType: Cloud
# параметры облачного провайдера
cloud:
  # используемый облачный провайдер
  provider: Azure
  # префикс для объектов кластера для их отличия (используется, например, при маршрутизации)
  prefix: cloud-demo
# адресное пространство Pod’ов кластера
podSubnetCIDR: 10.111.0.0/16
# адресное пространство для service’ов кластера
serviceSubnetCIDR: 10.222.0.0/16
# устанавливаемая версия Kubernetes
kubernetesVersion: "1.19"
# домен кластера
clusterDomain: cluster.local
---
# секция первичной инициализации кластера Deckhouse (InitConfiguration)
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: InitConfiguration
# секция с параметрами Deckhouse
deckhouse:
  # используемый канал обновлений
  releaseChannel: Stable
  configOverrides:
    global:
      modules:
        # шаблон, который будет использоваться для составления адресов системных приложений в кластере
        # например, Grafana для %s.example.com будет доступна на домене grafana.example.com
        publicDomainTemplate: "%s.example.com"
---
# секция, описывающая параметры облачного провайдера
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: AzureClusterConfiguration
# layout — архитектура расположения ресурсов в облаке
layout: Standard
# публичная часть SSH-ключа для доступа к узлам облака
sshPublicKey: ssh-rsa <SSH_PUBLIC_KEY>
# адресное пространство облака внутри Azure
vNetCIDR: 10.241.0.0/16
# адресное пространство узлов кластера
subnetCIDR: 10.241.0.0/24
# параметры группы master-узлов
masterNodeGroup:
  # количество реплик мастера
  # если будет больше одного мастер-узла, то control-plane на всех master-узлах будет развернут автоматическии
  replicas: 1
  # параметры инстанса
  instanceClass:
    # тип используемого инстанса
    # возможно, захотите изменить
    machineSize: Standard_D4ds_v4
    # URN образа виртуальной машины в Azure
    # возможно, захотите изменить
    urn: Canonical:UbuntuServer:18.04-LTS:18.04.202010140
    # заказать статический публичный IP
    enableExternalIP: true
provider:
  # идентификатор подписки
  subscriptionId: *!CHANGE_ME*
  # идентификатор приложения
  clientId: *!CHANGE_ME*
  # секрет приложения
  clientSecret: *!CHANGE_ME*
  # идентификатор каталога (клиента)
  tenantId: *!CHANGE_ME*
  # регион привязки кластера
  # возможно, захотите изменить
  location: westeurope
# секция с общими параметрами кластера (ClusterConfiguration) # используемая версия API Deckhouse Platform apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: ClusterConfiguration # тип инфраструктуры: bare metal (Static) или облако (Cloud) clusterType: Cloud # параметры облачного провайдера cloud: # используемый облачный провайдер provider: Azure # префикс для объектов кластера для их отличия (используется, например, при маршрутизации) prefix: cloud-demo # адресное пространство Pod’ов кластера podSubnetCIDR: 10.111.0.0/16 # адресное пространство для service’ов кластера serviceSubnetCIDR: 10.222.0.0/16 # устанавливаемая версия Kubernetes kubernetesVersion: "1.19" # домен кластера clusterDomain: cluster.local --- # секция первичной инициализации кластера Deckhouse (InitConfiguration) # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: InitConfiguration # секция с параметрами Deckhouse deckhouse: # используемый канал обновлений releaseChannel: Stable configOverrides: global: modules: # шаблон, который будет использоваться для составления адресов системных приложений в кластере # например, Grafana для %s.example.com будет доступна на домене grafana.example.com publicDomainTemplate: "%s.example.com" --- # секция, описывающая параметры облачного провайдера # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: AzureClusterConfiguration # layout — архитектура расположения ресурсов в облаке layout: Standard # публичная часть SSH-ключа для доступа к узлам облака sshPublicKey: ssh-rsa <SSH_PUBLIC_KEY> # адресное пространство облака внутри Azure vNetCIDR: 10.241.0.0/16 # адресное пространство узлов кластера subnetCIDR: 10.241.0.0/24 # параметры группы master-узлов masterNodeGroup: # количество реплик мастера # если будет больше одного мастер-узла, то control-plane на всех master-узлах будет развернут автоматическии replicas: 1 # параметры инстанса instanceClass: # тип используемого инстанса # возможно, захотите изменить machineSize: Standard_D4ds_v4 # URN образа виртуальной машины в Azure # возможно, захотите изменить urn: Canonical:UbuntuServer:18.04-LTS:18.04.202010140 # заказать статический публичный IP enableExternalIP: true provider: # идентификатор подписки subscriptionId: *!CHANGE_ME* # идентификатор приложения clientId: *!CHANGE_ME* # секрет приложения clientSecret: *!CHANGE_ME* # идентификатор каталога (клиента) tenantId: *!CHANGE_ME* # регион привязки кластера # возможно, захотите изменить location: westeurope

Лицензионный ключ доступа Deckhouse Platform Enterprise Edition

Лицензионный ключ используется компонентами Deckhouse для доступа к геораспределенному container registry, в котором хранятся все используемые Deckhouse образы.

Приведенные на данной странице команды и файлы конфигурации сгенерированы с учетом введенного лицензионного ключа.

Запросить лицензионный ключ

Заполните форму и мы отправим данные для доступа вам на почту.

Введите лицензионный ключ

Ниже сгенерированы рекомендованные настройки для установки Deckhouse Platform Enterprise Edition:

  • config.yml — файл первичной конфигурации кластера. Содержит параметры инсталлятора, параметры доступа облачного проавайдера и начальные параметры кластера.
  • resources.yml — описание ресурсов для создания после установки (настройки узлов и Ingress-контроллера).

Обратите внимание:

  • обязательные для самостоятельного заполнения параметры.
  • опциональные параметры.

Полное описание параметров конфигурации cloud-провайдеров вы можете найти документации.

Подробнее о каналах обновления Deckhouse Platform (release channels) можно почитать в документации.

# секция с общими параметрами кластера (ClusterConfiguration)
# используемая версия API Deckhouse Platform
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: ClusterConfiguration
# тип инфраструктуры: bare metal (Static) или облако (Cloud)
clusterType: Cloud
# параметры облачного провайдера
cloud:
  # используемый облачный провайдер
  provider: Azure
  # префикс для объектов кластера для их отличия (используется, например, при маршрутизации)
  prefix: cloud-demo
# адресное пространство Pod’ов кластера
podSubnetCIDR: 10.111.0.0/16
# адресное пространство для service’ов кластера
serviceSubnetCIDR: 10.222.0.0/16
# устанавливаемая версия Kubernetes
kubernetesVersion: "1.19"
# домен кластера
clusterDomain: cluster.local
---
# секция первичной инициализации кластера Deckhouse (InitConfiguration)
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: InitConfiguration
# секция с параметрами Deckhouse
deckhouse:
  # адрес Docker registry с образами Deckhouse
  imagesRepo: registry.deckhouse.io/deckhouse/ee
  # строка с ключом для доступа к Docker registry (сгенерировано автоматически для вашего токена доступа)
  registryDockerCfg: <YOUR_ACCESS_STRING_IS_HERE>
  # используемый канал обновлений
  releaseChannel: Stable
  configOverrides:
    global:
      modules:
        # шаблон, который будет использоваться для составления адресов системных приложений в кластере
        # например, Grafana для %s.example.com будет доступна на домене grafana.example.com
        publicDomainTemplate: "%s.example.com"
---
# секция, описывающая параметры облачного провайдера
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: AzureClusterConfiguration
# layout — архитектура расположения ресурсов в облаке
layout: Standard
# публичная часть SSH-ключа для доступа к узлам облака
sshPublicKey: ssh-rsa <SSH_PUBLIC_KEY>
# адресное пространство облака внутри Azure
vNetCIDR: 10.241.0.0/16
# адресное пространство узлов кластера
subnetCIDR: 10.241.0.0/24
# параметры группы master-узлов
masterNodeGroup:
  # количество реплик мастера
  # если будет больше одного мастер-узла, то control-plane на всех master-узлах будет развернут автоматическии
  replicas: 1
  # параметры инстанса
  instanceClass:
    # тип используемого инстанса
    # возможно, захотите изменить
    machineSize: Standard_D4ds_v4
    # URN образа виртуальной машины в Azure
    # возможно, захотите изменить
    urn: Canonical:UbuntuServer:18.04-LTS:18.04.202010140
    # заказать статический публичный IP
    enableExternalIP: true
provider:
  # идентификатор подписки
  subscriptionId: *!CHANGE_ME*
  # идентификатор приложения
  clientId: *!CHANGE_ME*
  # секрет приложения
  clientSecret: *!CHANGE_ME*
  # идентификатор каталога (клиента)
  tenantId: *!CHANGE_ME*
  # регион привязки кластера
  # возможно, захотите изменить
  location: westeurope
# секция с общими параметрами кластера (ClusterConfiguration) # используемая версия API Deckhouse Platform apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: ClusterConfiguration # тип инфраструктуры: bare metal (Static) или облако (Cloud) clusterType: Cloud # параметры облачного провайдера cloud: # используемый облачный провайдер provider: Azure # префикс для объектов кластера для их отличия (используется, например, при маршрутизации) prefix: cloud-demo # адресное пространство Pod’ов кластера podSubnetCIDR: 10.111.0.0/16 # адресное пространство для service’ов кластера serviceSubnetCIDR: 10.222.0.0/16 # устанавливаемая версия Kubernetes kubernetesVersion: "1.19" # домен кластера clusterDomain: cluster.local --- # секция первичной инициализации кластера Deckhouse (InitConfiguration) # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: InitConfiguration # секция с параметрами Deckhouse deckhouse: # адрес Docker registry с образами Deckhouse imagesRepo: registry.deckhouse.io/deckhouse/ee # строка с ключом для доступа к Docker registry (сгенерировано автоматически для вашего токена доступа) registryDockerCfg: <YOUR_ACCESS_STRING_IS_HERE> # используемый канал обновлений releaseChannel: Stable configOverrides: global: modules: # шаблон, который будет использоваться для составления адресов системных приложений в кластере # например, Grafana для %s.example.com будет доступна на домене grafana.example.com publicDomainTemplate: "%s.example.com" --- # секция, описывающая параметры облачного провайдера # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: AzureClusterConfiguration # layout — архитектура расположения ресурсов в облаке layout: Standard # публичная часть SSH-ключа для доступа к узлам облака sshPublicKey: ssh-rsa <SSH_PUBLIC_KEY> # адресное пространство облака внутри Azure vNetCIDR: 10.241.0.0/16 # адресное пространство узлов кластера subnetCIDR: 10.241.0.0/24 # параметры группы master-узлов masterNodeGroup: # количество реплик мастера # если будет больше одного мастер-узла, то control-plane на всех master-узлах будет развернут автоматическии replicas: 1 # параметры инстанса instanceClass: # тип используемого инстанса # возможно, захотите изменить machineSize: Standard_D4ds_v4 # URN образа виртуальной машины в Azure # возможно, захотите изменить urn: Canonical:UbuntuServer:18.04-LTS:18.04.202010140 # заказать статический публичный IP enableExternalIP: true provider: # идентификатор подписки subscriptionId: *!CHANGE_ME* # идентификатор приложения clientId: *!CHANGE_ME* # секрет приложения clientSecret: *!CHANGE_ME* # идентификатор каталога (клиента) tenantId: *!CHANGE_ME* # регион привязки кластера # возможно, захотите изменить location: westeurope

Описание ресурсов для набора узлов “Минимальный”.

# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: AzureInstanceClass
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя инстанс класса
  name: worker
# параметры инстанса
spec:
  # тип используемого инстанса
  # возможно, захотите изменить
  machineSize: Standard_F4
---
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: NodeGroup
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя группы узлов
  name: worker
spec:
  # параметры заказа облачных виртуальных машин
  cloudInstances:
    # ссылка на объект InstanceClass
    classReference:
      # тип объекта
      kind: AzureInstanceClass
      # имя InstanceClass-объекта
      name: worker
    # максимальное количество инстансов в зоне
    maxPerZone: 1
    # минимальное количество инстансов в зоне
    minPerZone: 1
    # переопределение перечня зон, в которых создаются инстансы
    zones: ["1"]
  # тип узлов, которые представляет эта группа
  nodeType: Cloud
---
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: IngressNginxController
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя объекта
  name: main
spec:
  # имя Ingress-класса для обслуживания Ingress NGINX controller
  ingressClass: "nginx"
  # способ поступления трафика из внешнего мира
  inlet: "LoadBalancer"
---
apiVersion: deckhouse.io/v1
kind: ClusterAuthorizationRule
metadata:
  name: admin
spec:
  # список учётных записей Kubernetes RBAC
  subjects:
  - kind: User
    name: admin@example.com
  # предустановленный шаблон уровня доступа
  accessLevel: SuperAdmin
  # разрешить пользователю делать kubectl port-forward
  portForwarding: true
---
# секция, описывающая параметры статического пользователя
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1
kind: User
metadata:
  name: admin
spec:
  # e-mail пользователя
  email: admin@example.com
  # это хэш сгенерированного пароля: <GENERATED_PASSWORD>
  # возможно, захотите изменить
  password: <GENERATED_PASSWORD_HASH>
# используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: AzureInstanceClass # данные, которые помогают однозначно идентифицировать объект metadata: # имя инстанс класса name: worker # параметры инстанса spec: # тип используемого инстанса # возможно, захотите изменить machineSize: Standard_F4 --- # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: NodeGroup # данные, которые помогают однозначно идентифицировать объект metadata: # имя группы узлов name: worker spec: # параметры заказа облачных виртуальных машин cloudInstances: # ссылка на объект InstanceClass classReference: # тип объекта kind: AzureInstanceClass # имя InstanceClass-объекта name: worker # максимальное количество инстансов в зоне maxPerZone: 1 # минимальное количество инстансов в зоне minPerZone: 1 # переопределение перечня зон, в которых создаются инстансы zones: ["1"] # тип узлов, которые представляет эта группа nodeType: Cloud --- # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: IngressNginxController # данные, которые помогают однозначно идентифицировать объект metadata: # имя объекта name: main spec: # имя Ingress-класса для обслуживания Ingress NGINX controller ingressClass: "nginx" # способ поступления трафика из внешнего мира inlet: "LoadBalancer" --- apiVersion: deckhouse.io/v1 kind: ClusterAuthorizationRule metadata: name: admin spec: # список учётных записей Kubernetes RBAC subjects: - kind: User name: admin@example.com # предустановленный шаблон уровня доступа accessLevel: SuperAdmin # разрешить пользователю делать kubectl port-forward portForwarding: true --- # секция, описывающая параметры статического пользователя # используемая версия API Deckhouse apiVersion: deckhouse.io/v1 kind: User metadata: name: admin spec: # e-mail пользователя email: admin@example.com # это хэш сгенерированного пароля: <GENERATED_PASSWORD> # возможно, захотите изменить password: <GENERATED_PASSWORD_HASH>

Описание ресурсов для набора узлов “Мультимастер”.

# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: AzureInstanceClass
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя инстанс класса
  name: worker
# параметры инстанса
spec:
  # тип используемого инстанса
  # возможно, захотите изменить
  machineSize: Standard_F4
---
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: NodeGroup
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя группы узлов
  name: worker
spec:
  # параметры заказа облачных виртуальных машин
  cloudInstances:
    # ссылка на объект InstanceClass
    classReference:
      # тип объекта
      kind: AzureInstanceClass
      # имя InstanceClass-объекта
      name: worker
    # максимальное количество инстансов в зоне
    maxPerZone: 2
    # минимальное количество инстансов в зоне
    minPerZone: 2
    # переопределение перечня зон, в которых создаются инстансы
    zones: ["1"]
  # тип узлов, которые представляет эта группа
  nodeType: Cloud
---
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: IngressNginxController
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя объекта
  name: main
spec:
  # имя Ingress-класса для обслуживания Ingress NGINX controller
  ingressClass: "nginx"
  # способ поступления трафика из внешнего мира
  inlet: "LoadBalancer"
---
apiVersion: deckhouse.io/v1
kind: ClusterAuthorizationRule
metadata:
  name: admin
spec:
  # список учётных записей Kubernetes RBAC
  subjects:
  - kind: User
    name: admin@example.com
  # предустановленный шаблон уровня доступа
  accessLevel: SuperAdmin
  # разрешить пользователю делать kubectl port-forward
  portForwarding: true
---
# секция, описывающая параметры статического пользователя
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1
kind: User
metadata:
  name: admin
spec:
  # e-mail пользователя
  email: admin@example.com
  # это хэш сгенерированного пароля: <GENERATED_PASSWORD>
  # возможно, захотите изменить
  password: <GENERATED_PASSWORD_HASH>
# используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: AzureInstanceClass # данные, которые помогают однозначно идентифицировать объект metadata: # имя инстанс класса name: worker # параметры инстанса spec: # тип используемого инстанса # возможно, захотите изменить machineSize: Standard_F4 --- # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: NodeGroup # данные, которые помогают однозначно идентифицировать объект metadata: # имя группы узлов name: worker spec: # параметры заказа облачных виртуальных машин cloudInstances: # ссылка на объект InstanceClass classReference: # тип объекта kind: AzureInstanceClass # имя InstanceClass-объекта name: worker # максимальное количество инстансов в зоне maxPerZone: 2 # минимальное количество инстансов в зоне minPerZone: 2 # переопределение перечня зон, в которых создаются инстансы zones: ["1"] # тип узлов, которые представляет эта группа nodeType: Cloud --- # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: IngressNginxController # данные, которые помогают однозначно идентифицировать объект metadata: # имя объекта name: main spec: # имя Ingress-класса для обслуживания Ingress NGINX controller ingressClass: "nginx" # способ поступления трафика из внешнего мира inlet: "LoadBalancer" --- apiVersion: deckhouse.io/v1 kind: ClusterAuthorizationRule metadata: name: admin spec: # список учётных записей Kubernetes RBAC subjects: - kind: User name: admin@example.com # предустановленный шаблон уровня доступа accessLevel: SuperAdmin # разрешить пользователю делать kubectl port-forward portForwarding: true --- # секция, описывающая параметры статического пользователя # используемая версия API Deckhouse apiVersion: deckhouse.io/v1 kind: User metadata: name: admin spec: # e-mail пользователя email: admin@example.com # это хэш сгенерированного пароля: <GENERATED_PASSWORD> # возможно, захотите изменить password: <GENERATED_PASSWORD_HASH>

Описание ресурсов для набора узлов “Рекомендовано для production”.

# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: AzureInstanceClass
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя инстанс класса
  name: worker
# параметры инстанса
spec:
  # тип используемого инстанса
  # возможно, захотите изменить
  machineSize: Standard_F4
---
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: NodeGroup
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя группы узлов
  name: worker
spec:
  # параметры заказа облачных виртуальных машин
  cloudInstances:
    # ссылка на объект InstanceClass
    classReference:
      # тип объекта
      kind: AzureInstanceClass
      # имя InstanceClass-объекта
      name: worker
    # максимальное количество инстансов в зоне
    maxPerZone: 1
    # минимальное количество инстансов в зоне
    minPerZone: 1
    # переопределение перечня зон, в которых создаются инстансы
    zones: ["1"]
  # тип узлов, которые представляет эта группа
  nodeType: Cloud
---
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: AzureInstanceClass
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя инстанс класса
  name: system
# параметры инстанса
spec:
  # тип используемого инстанса
  # возможно, захотите изменить
  machineSize: Standard_F4
---
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: NodeGroup
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя группы узлов
  name: system
spec:
  # параметры заказа облачных виртуальных машин
  cloudInstances:
    # ссылка на объект InstanceClass
    classReference:
      # тип объекта
      kind: AzureInstanceClass
      # имя InstanceClass-объекта
      name: system
    # максимальное количество инстансов в зоне
    maxPerZone: 1
    # минимальное количество инстансов в зоне
    minPerZone: 1
    # переопределение перечня зон, в которых создаются инстансы
    zones: ["1", "2"]
  # настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узла
  nodeTemplate:
    # аналогично стандартному полю metadata.labels
    labels:
      node-role.deckhouse.io/system: ""
    # аналогично полю .spec.taints из объекта Node
    # доступны только поля effect, key, value
    taints:
    - effect: NoExecute
      key: dedicated.deckhouse.io
      value: system
  # тип узлов, которые представляет эта группа
  nodeType: Cloud
---
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: AzureInstanceClass
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя инстанс класса
  name: frontend
# параметры инстанса
spec:
  # тип используемого инстанса
  # возможно, захотите изменить
  machineSize: Standard_F4
---
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: NodeGroup
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя группы узлов
  name: frontend
spec:
  # параметры заказа облачных виртуальных машин
  cloudInstances:
    # ссылка на объект InstanceClass
    classReference:
      # тип объекта
      kind: AzureInstanceClass
      # имя InstanceClass-объекта
      name: frontend
    # максимальное количество инстансов в зоне
    maxPerZone: 1
    # минимальное количество инстансов в зоне
    minPerZone: 1
    # переопределение перечня зон, в которых создаются инстансы
    zones: ["1", "2"]
  # настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узла
  nodeTemplate:
    # аналогично стандартному полю metadata.labels
    labels:
      node-role.deckhouse.io/frontend: ""
    # аналогично полю .spec.taints из объекта Node
    # доступны только поля effect, key, value
    taints:
    - effect: NoExecute
      key: dedicated.deckhouse.io
      value: frontend
  # тип узлов, которые представляет эта группа
  nodeType: Cloud
---
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1alpha1
# тип секции конфигурации
kind: IngressNginxController
# данные, которые помогают однозначно идентифицировать объект
metadata:
  # имя объекта
  name: main
spec:
  # имя Ingress-класса для обслуживания Ingress NGINX controller
  ingressClass: "nginx"
  # способ поступления трафика из внешнего мира
  inlet: "LoadBalancer"
---
apiVersion: deckhouse.io/v1
kind: ClusterAuthorizationRule
metadata:
  name: admin
spec:
  # список учётных записей Kubernetes RBAC
  subjects:
  - kind: User
    name: admin@example.com
  # предустановленный шаблон уровня доступа
  accessLevel: SuperAdmin
  # разрешить пользователю делать kubectl port-forward
  portForwarding: true
---
# секция, описывающая параметры статического пользователя
# используемая версия API Deckhouse
apiVersion: deckhouse.io/v1
kind: User
metadata:
  name: admin
spec:
  # e-mail пользователя
  email: admin@example.com
  # это хэш сгенерированного пароля: <GENERATED_PASSWORD>
  # возможно, захотите изменить
  password: <GENERATED_PASSWORD_HASH>
# используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: AzureInstanceClass # данные, которые помогают однозначно идентифицировать объект metadata: # имя инстанс класса name: worker # параметры инстанса spec: # тип используемого инстанса # возможно, захотите изменить machineSize: Standard_F4 --- # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: NodeGroup # данные, которые помогают однозначно идентифицировать объект metadata: # имя группы узлов name: worker spec: # параметры заказа облачных виртуальных машин cloudInstances: # ссылка на объект InstanceClass classReference: # тип объекта kind: AzureInstanceClass # имя InstanceClass-объекта name: worker # максимальное количество инстансов в зоне maxPerZone: 1 # минимальное количество инстансов в зоне minPerZone: 1 # переопределение перечня зон, в которых создаются инстансы zones: ["1"] # тип узлов, которые представляет эта группа nodeType: Cloud --- # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: AzureInstanceClass # данные, которые помогают однозначно идентифицировать объект metadata: # имя инстанс класса name: system # параметры инстанса spec: # тип используемого инстанса # возможно, захотите изменить machineSize: Standard_F4 --- # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: NodeGroup # данные, которые помогают однозначно идентифицировать объект metadata: # имя группы узлов name: system spec: # параметры заказа облачных виртуальных машин cloudInstances: # ссылка на объект InstanceClass classReference: # тип объекта kind: AzureInstanceClass # имя InstanceClass-объекта name: system # максимальное количество инстансов в зоне maxPerZone: 1 # минимальное количество инстансов в зоне minPerZone: 1 # переопределение перечня зон, в которых создаются инстансы zones: ["1", "2"] # настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узла nodeTemplate: # аналогично стандартному полю metadata.labels labels: node-role.deckhouse.io/system: "" # аналогично полю .spec.taints из объекта Node # доступны только поля effect, key, value taints: - effect: NoExecute key: dedicated.deckhouse.io value: system # тип узлов, которые представляет эта группа nodeType: Cloud --- # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: AzureInstanceClass # данные, которые помогают однозначно идентифицировать объект metadata: # имя инстанс класса name: frontend # параметры инстанса spec: # тип используемого инстанса # возможно, захотите изменить machineSize: Standard_F4 --- # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: NodeGroup # данные, которые помогают однозначно идентифицировать объект metadata: # имя группы узлов name: frontend spec: # параметры заказа облачных виртуальных машин cloudInstances: # ссылка на объект InstanceClass classReference: # тип объекта kind: AzureInstanceClass # имя InstanceClass-объекта name: frontend # максимальное количество инстансов в зоне maxPerZone: 1 # минимальное количество инстансов в зоне minPerZone: 1 # переопределение перечня зон, в которых создаются инстансы zones: ["1", "2"] # настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узла nodeTemplate: # аналогично стандартному полю metadata.labels labels: node-role.deckhouse.io/frontend: "" # аналогично полю .spec.taints из объекта Node # доступны только поля effect, key, value taints: - effect: NoExecute key: dedicated.deckhouse.io value: frontend # тип узлов, которые представляет эта группа nodeType: Cloud --- # используемая версия API Deckhouse apiVersion: deckhouse.io/v1alpha1 # тип секции конфигурации kind: IngressNginxController # данные, которые помогают однозначно идентифицировать объект metadata: # имя объекта name: main spec: # имя Ingress-класса для обслуживания Ingress NGINX controller ingressClass: "nginx" # способ поступления трафика из внешнего мира inlet: "LoadBalancer" --- apiVersion: deckhouse.io/v1 kind: ClusterAuthorizationRule metadata: name: admin spec: # список учётных записей Kubernetes RBAC subjects: - kind: User name: admin@example.com # предустановленный шаблон уровня доступа accessLevel: SuperAdmin # разрешить пользователю делать kubectl port-forward portForwarding: true --- # секция, описывающая параметры статического пользователя # используемая версия API Deckhouse apiVersion: deckhouse.io/v1 kind: User metadata: name: admin spec: # e-mail пользователя email: admin@example.com # это хэш сгенерированного пароля: <GENERATED_PASSWORD> # возможно, захотите изменить password: <GENERATED_PASSWORD_HASH>

Для установки Deckhouse Platform воспользуемся готовым Docker-образом. В образ необходимо передать конфигурационные файлы, а так же ssh-ключи для доступа на master-узлы:

docker run -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" \
 -v "$PWD/resources.yml:/resources.yml" -v "$PWD/dhctl-tmp:/tmp/dhctl"  registry.deckhouse.io/deckhouse/ce/install:stable bash
docker run -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" \ -v "$PWD/resources.yml:/resources.yml" -v "$PWD/dhctl-tmp:/tmp/dhctl" registry.deckhouse.io/deckhouse/ce/install:stable bash

Внутри контейнера выполните команду:

dhctl bootstrap \
  --ssh-user=<username> \
  --ssh-agent-private-keys=/tmp/.ssh/id_rsa \
  --config=/config.yml \
  --resources=/resources.yml
dhctl bootstrap \ --ssh-user=<username> \ --ssh-agent-private-keys=/tmp/.ssh/id_rsa \ --config=/config.yml \ --resources=/resources.yml

Здесь, переменная usernameazureuser (для предложенных в этой документации образов). Примечания:

  • Благодаря использованию параметра -v "$PWD/dhctl-tmp:/tmp/dhctl" состояние данных Terraform-инстяллятора будет сохранено во временной директории на хосте запуска, что позволит корректно продолжить установку в случае прерывания работы контейнера с инсталлятором.

  • В случае возникновения проблем во время разворачивания кластера, для прерывания процесса установки и удаления созданных при инсталляции объектов воспользуйтесь следующей командой (файл конфигурации должен совпадать с тем, с которым производилось разворачивание кластера):

    dhctl bootstrap-phase abort --config=/config.yml
    
    dhctl bootstrap-phase abort --config=/config.yml

По окончании установки произойдет возврат к командной строке.

Почти все готово для полноценной работы Deckhouse Platform!

Для установки Deckhouse Platform воспользуемся готовым Docker-образом. В образ необходимо передать конфигурационные файлы, а так же ssh-ключи для доступа на master-узлы:

 echo <LICENSE_TOKEN> | docker login -u license-token --password-stdin registry.deckhouse.io
docker run -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" \
 -v "$PWD/resources.yml:/resources.yml" -v "$PWD/dhctl-tmp:/tmp/dhctl"  registry.deckhouse.io/deckhouse/ee/install:stable bash
echo <LICENSE_TOKEN> | docker login -u license-token --password-stdin registry.deckhouse.io docker run -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" \ -v "$PWD/resources.yml:/resources.yml" -v "$PWD/dhctl-tmp:/tmp/dhctl" registry.deckhouse.io/deckhouse/ee/install:stable bash

Внутри контейнера выполните команду:

dhctl bootstrap \
  --ssh-user=<username> \
  --ssh-agent-private-keys=/tmp/.ssh/id_rsa \
  --config=/config.yml \
  --resources=/resources.yml
dhctl bootstrap \ --ssh-user=<username> \ --ssh-agent-private-keys=/tmp/.ssh/id_rsa \ --config=/config.yml \ --resources=/resources.yml

Здесь, переменная usernameazureuser (для предложенных в этой документации образов). Примечания:

  • Благодаря использованию параметра -v "$PWD/dhctl-tmp:/tmp/dhctl" состояние данных Terraform-инстяллятора будет сохранено во временной директории на хосте запуска, что позволит корректно продолжить установку в случае прерывания работы контейнера с инсталлятором.

  • В случае возникновения проблем во время разворачивания кластера, для прерывания процесса установки и удаления созданных при инсталляции объектов воспользуйтесь следующей командой (файл конфигурации должен совпадать с тем, с которым производилось разворачивание кластера):

    dhctl bootstrap-phase abort --config=/config.yml
    
    dhctl bootstrap-phase abort --config=/config.yml

По окончании установки произойдет возврат к командной строке.

Почти все готово для полноценной работы Deckhouse Platform!