Перейти к содержанию

Установка в облаке Yandex

Шаг 0. Подготовка к инсталляции платформы Боцман

Перед началом инсталляции платформы "Боцман" убедитесь, что выполнены все шаги по подготовке АРМ

Шаг 1. Подготовка Образов ОС

Для работы с боцманом вам понадобятся образы ОС. Возможные варианты:

Использование готовых образов

Подробнее в статье

Самостоятельная подготовка образов

Подробнее в статье создание golden image.

Шаг 2. Подготовка файла конфигурации (bootsman.config.yaml)

На АРМ создайте конфиг файл bootsman.config.yaml в той же директории, где расположен инсталлятор-bootsmanctl

kubernetesVersion: ${ K8S_VERSION }
registry:
    username: ${ HARBOR_CREDS_USER }
    password: ${ HARBOR_CREDS_PASSWD }
    path: ${ HARBOR_CREDS_URL }
    insecure: ${ HARBOR_CREDS_INSECURE }
sshAuthorizedKeys:
    - ssh-ed25519 AAAAC3NzaC1lZKKtLOCNv2g bootsman@stsoft.ru
wait:
    AddonHelmTimeout: 10m
    clusterCtlTimeout: 30m0s
    operationTimeout: 40m0s
    operationRetryInterval: 15s
    objCreateTimeout: 4m0s
    objCreateInterval: 5s
infrastructure:
    yandex:
        auth:
            keyFileLocation: ${ KEY_FILE_LOCATION }
        folderId: ${ YANDEX_FOLDER_ID }
        zone: ${ YANDEX_ZONE }
        network:
            name: ${ YANDEX_NETWORK_NAME }
            useExisting: ${ YANDEX_NETWORK_USE_EXISTING }
        subNetwork:
            name: ${ YANDEX_SUBNETWORK_NAME }
            useExisting: ${ YANDEX_SUBNETWORK_USE_EXISTING }
            cidr:
                - ${ YANDEX_SUBNETWORK_CIDR }
        privacy: ${ YANDEX_PRIVACY }
    clusterNetwork:
        podCidrBlocks: ["172.20.0.0/16"]
        servicesCidrBlocks: ["172.21.0.0/16"]
controlPlane:
    endpoint:
        host: 
        port: 6443
    replicas: 3
    label: master
    kubeletExtraArgs:
        kubeReserved: ""
        systemReserved: ""
        evictionHard: ""
        evictionMinimumReclaim: ""
        evictionMaxPodGracePeriod: ""
        maxPods: ""
        seccompDefault: ""
    yandexMachine:
        platformId: ${ YANDEX_TEMPLATEOPTIONS_PLATFORM_ID }
        cores: ${ YANDEX_TEMPLATEOPTIONS_CORES }
        memory: ${ YANDEX_TEMPLATEOPTIONS_MEMORY }
        diskType: ${ YANDEX_TEMPLATEOPTIONS_DISK_TYPE }
        diskSize: ${ YANDEX_TEMPLATEOPTIONS_DISK_SIZE }
        imageId: ${ YANDEX_TEMPLATEOPTIONS_IMAGE_ID }
workerPool:
    replicas: 3
    label: worker
    kubeletExtraArgs:
        kubeReserved: ""
        systemReserved: ""
        evictionHard: ""
        evictionMinimumReclaim: ""
        evictionMaxPodGracePeriod: ""
        maxPods: ""
        seccompDefault: ""
    yandexMachine:
        platformId: ${ YANDEX_TEMPLATEOPTIONS_PLATFORM_ID }
        cores: ${ YANDEX_TEMPLATEOPTIONS_CORES }
        memory: ${ YANDEX_TEMPLATEOPTIONS_MEMORY }
        diskType: ${ YANDEX_TEMPLATEOPTIONS_DISK_TYPE }
        diskSize: ${ YANDEX_TEMPLATEOPTIONS_DISK_SIZE }
        imageId: ${ YANDEX_TEMPLATEOPTIONS_IMAGE_ID }
web:
    bootstrapPassword: ${ ADDONS_RANCHER_BOOTSTRAPPASSWORD }
    hostname: ${ ADDONS_RANCHER_WEBHOSTNAME }
currentMachineIp: ${ CURRENT_MACHINE_IP_2 }

Описание параметров

Имя параметра Описание Комментарий
K8S_VERSION Версия Kubernetes для управляющего кластера Поддерживаемые версии v1.27.6, v1.28.4, v1.29.3
HARBOR_CREDS_USER Имя пользователя в репозитории образов В случае авторизации по лицензии весь блок registry нужно убрать
HARBOR_CREDS_PASSWD Пароль для пользователя в репозитории образов В случае авторизации по лицензии весь блок registry нужно убрать
HARBOR_CREDS_URL URL вашего репозитория образов В случае авторизации по лицензии весь блок registry нужно убрать
HARBOR_CREDS_INSECURE Это служебный параметр, всегда будет false В случае авторизации по лицензии весь блок registry нужно убрать
YANDEX_FOLDER_ID ID каталога, в котором будет развёрнут кластер Как узнать ID каталога
YANDEX_ZONE Зоны доступности Yandex. Какие зоны бывают?
YANDEX_NETWORK_NAME Имя сети в каталоге
YANDEX_NETWORK_USE_EXISTING true, если хотите использовать существующую сеть
YANDEX_SUBNETWORK_NAME Имя подсети в каталоге
YANDEX_SUBNETWORK_USE_EXISTING true, если хотите использовать существующую подсеть
YANDEX_SUBNETWORK_CIDR Адресное пространство для вашего кластера Не используется в случае YANDEX_SUBNETWORK_USE_EXISTING
YANDEX_TEMPLATEOPTIONS_PLATFORM_ID Выбор типа физического процессора Какие виды процессоров бывают?
YANDEX_TEMPLATEOPTIONS_MEMORY Какое количество памяти следует заказать узлам
YANDEX_TEMPLATEOPTIONS_CORES Какое количество ядер следует заказать узлам
YANDEX_TEMPLATEOPTIONS_DISK_TYPE Тип дискового хранилища. При выборе хранилища учитывайте, что для работы ETCD нужно 3000+ iops Какие виды хранилищ бывают?
YANDEX_TEMPLATEOPTIONS_DISK_SIZE Размер дискового хранилища
YANDEX_TEMPLATEOPTIONS_IMAGE_ID ID образа, подготовленного нами Как узнать ID моего образа
YANDEX_PRIVACY Выбор режима взаимодействия с кластером Поддерживаемые значения Public, PrivateMachines, Private. Подробнее
KEY_FILE_LOCATION Имя файла с ключом авторизации в облако яндекс. Расположить нужно в директории .bootsmanctl Создание авторизованного ключа
ADDONS_RANCHER_BOOTSTRAPPASSWORD Первоначальный пароль от web портала
ADDONS_RANCHER_WEBHOSTNAME URL, по которому будет доступен web портал платформы
CURRENT_MACHINE_IP_2 Дополнительный адрес АРМ администратора. Опционально Для доступа в Kind кластеру с сторонней машины

Пример заполненного файла конфигурации:

kubernetesVersion: "v1.27.6"
registry:
  username: demo
  password: demo
  path: redos-quay.stsoft.lan/bootsman-v210
  insecure: true
sshAuthorizedKeys:
  - "ssh-rsa AAAAB3Nzap915rUK1B7cHhJ example"
wait:
  clusterCtlTimeout: 50m0s
  operationTimeout: 40m0s
  operationRetryInterval: 15s
  objCreateTimeout: 4m0s
  objCreateInterval: 5s
infrastructure:
  yandex:
    auth:
      keyFileLocation: "key.json.bootsmanctl"
    folderId: b1gvs031ueof1otylrqr
    zone: ru-central1-a
    network:
      name: default-1
      useExisting: false
    subNetwork:
      name: default-1
      useExisting: false
      cidr:
        - 10.200.0.0/24
    privacy: Public
  clusterNetwork:
    podCidrBlocks: ["172.20.0.0/16"]
    servicesCidrBlocks: ["172.21.0.0/16"]
controlPlane:
  endpoint:
    host: ""
    port: 6443
  replicas: 3
  label: master
  kubeletExtraArgs:
    kubeReserved: ""
    systemReserved: ""
    evictionHard: ""
    evictionMinimumReclaim: ""
    evictionMaxPodGracePeriod: ""
    maxPods: ""
    seccompDefault: ""
  yandexMachine:
    platformId: standard-v2
    cores: 4
    memory: 8
    diskType: network-ssd
    diskSize: 65
    imageId: fd8gq17vqe1ph4tiyrbc
workerPool:
  replicas: 3
  label: worker
  kubeletExtraArgs:
    kubeReserved: ""
    systemReserved: ""
    evictionHard: ""
    evictionMinimumReclaim: ""
    evictionMaxPodGracePeriod: ""
    maxPods: ""
    seccompDefault: ""
  yandexMachine:
    platformId: standard-v2
    cores: 4
    memory: 12
    diskType: network-ssd
    diskSize: 65
    imageId: fd8gq17vqe1ph4tiyrbc
web:
  bootstrapPassword: "somePassword123$"
  hostname: rancher.redos-v21-ag.dev.stsoft.lan
currentMachineIp: 10.0.149.111
kubernetesVersion: "v1.27.6"
sshAuthorizedKeys:
  - "ssh-rsa AAAAB3Nzap915rUK1B7cHhJ example"
wait:
  clusterCtlTimeout: 50m0s
  operationTimeout: 40m0s
  operationRetryInterval: 15s
  objCreateTimeout: 4m0s
  objCreateInterval: 5s
infrastructure:
  yandex:
    auth:
      keyFileLocation: "key.json.bootsmanctl"
    folderId: b1gvs031ueof1otylrqr
    zone: ru-central1-a
    network:
      name: default-1
      useExisting: false
    subNetwork:
      name: default-1
      useExisting: false
      cidr:
        - 10.200.0.0/24
    privacy: Public
  clusterNetwork:
    podCidrBlocks: ["172.20.0.0/16"]
    servicesCidrBlocks: ["172.21.0.0/16"]
controlPlane:
  endpoint:
    host: ""
    port: 6443
  replicas: 3
  label: master
  kubeletExtraArgs:
    kubeReserved: ""
    systemReserved: ""
    evictionHard: ""
    evictionMinimumReclaim: ""
    evictionMaxPodGracePeriod: ""
    maxPods: ""
    seccompDefault: ""
  yandexMachine:
    platformId: standard-v2
    cores: 4
    memory: 8
    diskType: network-ssd
    diskSize: 65
    imageId: fd8gq17vqe1ph4tiyrbc
workerPool:
  replicas: 3
  label: worker
  kubeletExtraArgs:
    kubeReserved: ""
    systemReserved: ""
    evictionHard: ""
    evictionMinimumReclaim: ""
    evictionMaxPodGracePeriod: ""
    maxPods: ""
    seccompDefault: ""
  yandexMachine:
    platformId: standard-v2
    cores: 4
    memory: 12
    diskType: network-ssd
    diskSize: 65
    imageId: fd8gq17vqe1ph4tiyrbc
web:
  bootstrapPassword: "somePassword123$"
  hostname: rancher.redos-v21-ag.dev.stsoft.lan
currentMachineIp: 10.0.149.111

Шаг 3. Добавление лицензии

Лицензию можно добавить в окружение

export LICENSE=ZzSGquD8GWb2zthw7XJR

Или добавить в файл

mkdir -p .bootsmanctl
cat << EOF >> .bootsmanctl/license.lic
ZzSGquD8GWb2zthw7XJR
EOF

Шаг 4. Запуск установки

Заметка

Установка платформы "Боцман" запускается с заранее подготовленным АРМ

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

./bootsmanctl management create ${cluster-name} -i yandex -c bootsman.config.yaml

Где:

 - ${cluster-name} - имя кластера;

Вывод инсталляции должен окончиться так:

2023-09-10T17:49:46Z | INFO  | finished

Доступ в интерфейс

После окончания установки определите в Yandex Cloud - Network Load Balancer - IP адрес созданного балансировщика с обработчиком https и внесите его в конфиг DNS-сервера. Перейдите в web-панель платформы по адресу, который указывали в конфигурационном файле. (1) Откроется визард настройки с запросом пароля, который указывали в конфиге. (2)

Вы авторизовались под пользователем admin. Рекомендуем сменить пароль с помощью стандартного меню управления пользователями.

  1. ADDONS_RANCHER_WEBHOSTNAME
  2. ADDONS_RANCHER_BOOTSTRAPPASSWORD