update help elma

This commit is contained in:
2025-05-27 21:32:35 +04:00
parent a6b05d6789
commit 898b22bf32
4500 changed files with 89372 additions and 120699 deletions

View File

@ -1,20 +1,19 @@
<!DOCTYPE html>
<html lang="ru">
<html lang="en">
<head>
<title>Kubernetes-кластер</title>
<title>Kubernetes cluster</title>
<meta name="generator" content="Help+Manual" />
<meta name="keywords" content="" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Приложение ELMA365 устанавливается в Kubernetes-кластер. Для работы с ним мы рекомендуем платформу Deckhouse на&nbsp;базе Open Source-компонентов." />
<meta name="description" content="BRIX is installed in a Kubernetes&nbsp;cluster. To manage it, we recommend using the Deckhouse platform built on Open&nbsp;Source components.&nbsp;" />
<meta name="picture" content="" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Cправка по Low-code платформе ELMA365" />
<meta property="og:url" content="https://elma365.com/ru/help" />
<meta property="og:image" content="" />
<meta property="og:site_name" content="ELMA365" />
<meta property="og:title" content="Full documentation for BRIX365 platform. Low-code developer guide. User guide. Admin guide. Developer guide." />
<meta property="og:url" content="https://brix365.com/en/help" />
<meta property="og:image" content="" />
<link rel="icon" href="favicon.png" type="image/png" />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
@ -24,7 +23,6 @@
<link rel="stylesheet" href="./article.css" />
<link rel="stylesheet" href="./glossary.css" />
<link rel="stylesheet" href="./theme.css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="helpman_settings.js"></script>
<script type="text/javascript" src="helpman_topicinit.js"></script>
@ -36,16 +34,16 @@
</head>
<body>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-M6ETBEC1R9"></script><script>window.dataLayer=window.dataLayer || []; function gtag(){dataLayer.push(arguments);}gtag('js', new Date()); gtag('config', 'G-M6ETBEC1R9');</script>
<script>!function(e,t,c,n,r,a,m){e.ym=e.ym||function(){(e.ym.a=e.ym.a||[]).push(arguments)},e.ym.l=1*new Date;for(var s=0;s<document.scripts.length;s++)if(document.scripts[s].src===n)return;a=t.createElement(c),m=t.getElementsByTagName(c)[0],a.async=1,a.src=n,m.parentNode.insertBefore(a,m)}(window,document,"script","https://mc.yandex.ru/metrika/tag.js"),ym(83179930,"init",{clickmap:!0,trackLinks:!0,accurateTrackBounce:!0,webvisor:!0})</script><noscript><div><img alt=""src=https://mc.yandex.ru/watch/83179930 style=position:absolute;left:-9999px></div></noscript>
<header class="header elma-365">
<div class="container">
<a class="header__logo" href="https://elma365.com/ru/help">
<img src="./logo.svg" alt="header logo">
<a class="header__logo" href="https://brix365.com/en/help">
<img src="./logo-en.svg" alt="header logo">
</a>
<!-- <div class="hero__search-form" id="search-panel">
<form class="search-form" onsubmit="ym(83179930,'reachGoal','poisk')">
<form class="search-form" onsubmit="ym(83180416,'reachGoal','poisk')">
<label class="search-form__label">
<span id="reset-search" class="search__icon"></span>
<input class="search-form__input" type="text">
@ -65,7 +63,7 @@
</div>
<div class="header__navi">
<ul class="header__list"><li><span class="solution-select"><span class="solution-select__selected"></span><svg width="7" height="4" viewBox="0 0 7 4" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L3.5 3.5L6 1" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg><ul class="solution-select__list"><li><a class="project-link" href="https://elma365.com/ru/help/platform/get-trial.html">Платформа</a></li><li><a class="project-link" href="https://elma365.com/ru/help/ecm/ecm-functions.html">ECM</a></li><li><a class="project-link" href="https://elma365.com/ru/help/crm/crm_overview.html">CRM</a></li><li><a class="project-link" href="https://elma365.com/ru/help/service/service-functions.html">Service</a></li><li><a class="project-link" href="https://elma365.com/ru/help/projects/projects-functions.html">Проекты</a></li><li><a class="project-link" href="https://elma365.com/ru/help/business_solutions/-elma365-store.html">Бизнес-решения</a></li></ul></span></li><li><a href="https://api.elma365.com/ru/"target="_blank">API</a></li><li><a href="https://tssdk.elma365.com/"target="_blank">SDK</a></li><li><a href="https://community.elma365.com/" target="_blank">Community</a></li><li><a href="https://elma-academy.com/ru/" target="_blank">Академия</a></li><li><a href="https://elma365.com/ru/" target="_blank">Сайт ELMA365</a></li></ul>
<ul class="header__list"><li><span class="solution-select"><span class="solution-select__selected"></span><svg width="7" height="4" viewBox="0 0 7 4" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L3.5 3.5L6 1" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg><ul class="solution-select__list"><li><a class="project-link" href="https://brix365.com/en/help/platform/get-trial.html">Platform</a></li><li><a class="project-link" href="https://brix365.com/en/help/ecm/ecm-functions.html">ECM</a></li><li><a class="project-link" href="https://brix365.com/en/help/crm/crm_overview.html">CRM</a></li><li><a class="project-link" href="https://brix365.com/en/help/service/service-functions.html">Service</a></li><li><a class="project-link" href="https://brix365.com/en/help/projects/projects-functions.html">Projects</a></li><li><a class="project-link" href="https://brix365.com/en/help/business_solutions/-elma365-store.html">Business Solutions</a></li></ul></span></li><li><a href="https://api.brix365.com/en/" target="_blank">API</a></li><li><a href="https://tssdk.brix365.com/" target="_blank">SDK</a></li></ul>
</div>
@ -80,8 +78,8 @@
<aside class="sidebar" id="sidebar">
<div class="sidebar__header">
<a class="header__logo" href="https://elma365.com/ru/help">
<img src="./logo-light.svg">
<a class="header__logo" href="https://brix365.com/en/help">
<img src="./logo-light-en.svg">
</a>
<span class="sidebar__close elma-365-close" id="close"></span>
</div>
@ -94,15 +92,15 @@
<div class="article-inner">
<div class="content">
<header class="article__header">
<div class="article__bread" style="display:flex; gap:10px;">
<div class="article__bread" style="display:flex; gap:10px;">
<span id="subcategory" class="search-res__item-category search-res__item-category_subcategory subcategory article__badge"></span>
<div class="topic__breadcrumbs">
<p><a href="elma365-on-premises.html">ELMA365 On-Premises</a> &gt; <a href="infrastructure-preparation.html">Подготовка инфраструктуры</a> &gt; Kubernetes / Kubernetes-кластер</p>
<p><a href="elma365-on-premises.html">BRIX On-Premises</a> &gt; <a href="infrastructure-preparation.html">Prepare infrastructure</a> &gt; Kubernetes / Kubernetes cluster</p>
</div>
</div>
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Kubernetes-кластер</span></h1>
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Kubernetes cluster</span></h1>
</div>
</header>
@ -111,52 +109,52 @@
<a href="#h1-article" class="scroll-top"></a>
</div>
<!-- Placeholder for topic body. -->
<p class="p_Normal">Приложение ELMA365 устанавливается в Kubernetes-кластер. Для работы с ним мы рекомендуем платформу <a href="https://deckhouse.ru/" target="_blank" class="weblink">Deckhouse</a> на базе Open Source-компонентов.</p>
<p class="p_Normal">Платформа Deckhouse включена <a href="https://reestr.digital.gov.ru/reestr/490559/" target="_blank" class="weblink">в реестре российского ПО</a> и <a href="https://landscape.cncf.io/?view-mode=card&amp;classify=category&amp;sort-by=name&amp;sort-direction=asc&amp;item=platform--certified-kubernetes-distribution--flant-deckhouse#app-definition-and-development--application-definition-image-build%20" target="_blank" class="weblink">сертифицирована в CNCF</a>. Кроме Kubernetes, она включает дополнительные модули для мониторинга, балансировки трафика, автомасштабирования, безопасного доступа и т. д. Модули преднастроены, интегрированы друг с другом и готовы к работе. Управление всеми компонентами кластера и платформы, а также их обновление полностью автоматизированы.</p>
<p class="p_Normal">Совместимость платформы и версий Kubernetes смотрите в <a href="https://deckhouse.ru/products/kubernetes-platform/documentation/v1/supported_versions.html" target="_blank" class="weblink">официальной документации Deckhouse</a>.</p>
<p class="p_Normal">В статье рассмотрим, как развернуть Kubernetes-кластер, который состоит из единственного master-узла.</p>
<p class="p_Normal">Установка состоит из пяти этапов:</p>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">BRIX is installed in a Kubernetes cluster. To manage it, we recommend using the <a href="https://deckhouse.io/" target="_blank" class="weblink">Deckhouse</a> platform built on Open Source components. </span></p>
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">Deckhouse is <a href="https://landscape.cncf.io/?view-mode=card&amp;classify=category&amp;sort-by=name&amp;sort-direction=asc&amp;item=platform--certified-kubernetes-distribution--flant-deckhouse#app-definition-and-development--application-definition-image-build%20" target="_blank" class="weblink">certified by CNCF</a>. Besides Kubernetes, this platform incorporates additional modules for monitoring, traffic balancing, autoscaling, secure access, and more. The modules are preconfigured, integrated with each other, and ready to use. The management of all cluster components and the platform, as well as their updates, are fully automated.</span></p>
<p class="p_Normal">You can check the supported Kubernetes versions for the platform in <a href="https://deckhouse.io/products/kubernetes-platform/documentation/v1/supported_versions.html" target="_blank" class="weblink">the official Deckhouse documentation</a>.</p>
<p class="p_Normal">This article outlines the deployment of a Kubernetes cluster consisting of a single master node.</p>
<p class="p_Normal">The installation consists of five steps:</p>
<ol style="list-style-type:decimal">
<li value="1" class="p_Normal"><a href="kubernetes-deckhouse-air-gap.html#infrastructure-preparation" class="topiclink">Подготовка инфраструктуры</a>.</li><li value="2" class="p_Normal"><a href="kubernetes-deckhouse-air-gap.html#preparation-config-file" class="topiclink">Подготовка конфигурационного файла</a>.</li><li value="3" class="p_Normal"><a href="kubernetes-deckhouse-air-gap.html#installation" class="topiclink">Установка Kubernetes-кластера на базе Deckhouse</a>.</li><li value="4" class="p_Normal"><a href="kubernetes-deckhouse-air-gap.html#setting" class="topiclink">Настройка Deckhouse</a>.</li><li value="5" class="p_Normal"><a href="kubernetes-deckhouse-air-gap.html#installation-helm" class="topiclink">Установка HELM</a>.</li></ol>
<h2 class="p_Heading2"><a id="infrastructure-preparation" class="hmanchor"></a><span class="f_Heading2">Шаг 1. Подготовка инфраструктуры</span></h2>
<p class="p_Normal">Чтобы развернуть Kubernetes-кластер на базе платформы Deckhouse, вам потребуются:</p>
<li value="1" class="p_Normal"><a href="kubernetes-deckhouse-air-gap.html#infrastructure-preparation" class="topiclink">Prepare infrastructure</a>.</li><li value="2" class="p_Normal"><a href="kubernetes-deckhouse-air-gap.html#preparation-config-file" class="topiclink">Prepare configuration file</a>.</li><li value="3" class="p_Normal"><a href="kubernetes-deckhouse-air-gap.html#installation" class="topiclink">Install the Kubernetes cluster based on Deckhouse</a>.</li><li value="4" class="p_Normal"><a href="kubernetes-deckhouse-air-gap.html#setting" class="topiclink">Set up Deckhouse</a>.</li><li value="5" class="p_Normal"><a href="kubernetes-deckhouse-air-gap.html#installation-helm" class="topiclink">Install Helm</a>.</li></ol>
<h2 class="p_Heading2"><a id="infrastructure-preparation" class="hmanchor"></a><span class="f_Heading2">Step 1: Prepare infrastructure</span></h2>
<p class="p_Normal">To deploy a Kubernetes cluster based on the Deckhouse platform, you will need:</p>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Персональный компьютер.</li></ol>
<p class="p_Normal">Компьютер, с которого будет производиться установка. Он нужен только для запуска инсталлятора Deckhouse и не будет частью кластера.</p>
<p class="p_Normal">Системные требования:</p>
<li value="1" class="p_Normal">A personal computer.</li></ol>
<p class="p_Normal">A computer from which the installation will be carried out. It is only needed to launch the Deckhouse installer and will not be part of the cluster.</p>
<p class="p_Normal">System requirements:</p>
<ul style="list-style-type:disc">
<li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">ОС: Windows 10+, macOS 10.15+, Linux (Ubuntu 18.04+, Fedora 35+);</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">установленный docker для запуска инсталлятора Deckhouse;</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">доступ до проксирующего registry или до частного хранилища образов контейнеров с образами контейнеров Deckhouse;</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">SSH-доступ по ключу до узла, который будет master-узлом будущего кластера.</li></ul>
<li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">OS: Windows 10+, macOS 10.15+, Linux (Ubuntu 18.04+, Fedora 35+).</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">Installed Docker for running the Deckhouse installer.</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">Access to a proxying registry or to a private container image storage with Deckhouse container images.</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">SSH access by key to the node that will be the master node of the future cluster.</li></ul>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Master-узел.</li></ol>
<p class="p_Normal">Сервер (физический сервер или виртуальная машина), который будет управляющим узлом (master-узлом) будущего кластера.</p>
<p class="p_Normal">В процессе установки инсталлятор Deckhouse, запущенный на персональном компьютере, подключится к master-узлу по SSH, установит необходимые пакеты, настроит control plane Kubernetes и развернёт Deckhouse.</p>
<p class="p_Normal">Системные требования:</p>
<li value="2" class="p_Normal">Master node.</li></ol>
<p class="p_Normal">A server (physical server or virtual machine) that will be the master node (master node) of the future cluster.</p>
<p class="p_Normal">During the installation process, the Deckhouse installer, launched on a personal computer, will connect to the master node via SSH, install the necessary packages, configure the Kubernetes control plane, and deploy Deckhouse.</p>
<p class="p_Normal">System requirements:</p>
<ul style="list-style-type:disc">
<li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">не менее 12 ядер CPU;</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">не менее 16 ГБ RAM;</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">не менее 200 ГБ дискового пространства;</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;"><a href="https://deckhouse.ru/documentation/v1/supported_versions.html" target="_blank" class="weblink">поддерживаемая ОС</a>;</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">доступ до проксирующего <span style="font-weight: bold;">registry</span> или до частного хранилища образов контейнеров с образами контейнеров Deckhouse;</li></ul>
<li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">At least 12 CPU cores.</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">At least 16 GB of RAM.</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">At least 200 GB of disk space.</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">A <a href="https://deckhouse.io/documentation/v1/supported_versions.html" target="_blank" class="weblink">supported OS</a>.</li><li class="p_Normal" style="margin-top: 0; margin-right: 0; margin-bottom: 0;">Access to a proxying registry or to a private container image storage with Deckhouse container images.</li></ul>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало&nbsp;внимание</span></p>
<p class="p_Normal">Deckhouse поддерживает работу только с Bearer token схемой авторизации в <span style="font-weight: bold;">registry</span>.</p>
<p class="p_Normal">Deckhouse only supports Bearer token authentication scheme in the <span style="font-weight: bold;">registry</span>.</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Конец&nbsp;внимание</span></p>
<ul style="list-style-type:disc">
<li class="p_Normal">доступ до прокси-сервера для скачивания deb/rpm-пакетов ОС (при необходимости);</li><li class="p_Normal">SSH-доступ от персонального компьютера по ключу;</li><li class="p_Normal">на узле не должно быть установлено пакетов container runtime, например, containerd или docker.</li></ul>
<p class="p_Normal"><span style="font-weight: bold;">Важно</span>: установка непосредственно с master-узла в настоящий момент не поддерживается. Установщик в виде Docker-образа нельзя запускать на том же узле, на котором планируется развёртывание master-узла, так как на узле не должно быть установлено пакетов container runtime, например, containerd или docker. При отсутствии менеджмент узлов, установите docker на любой другой ноде будущего кластера, запустите Docker-образ установщика, установите Deckhouse и удалите Docker-образ установщика c ноды вместе с docker.</p>
<li class="p_Normal">Access to a proxy server for downloading OS deb/rpm packages (if necessary).</li><li class="p_Normal">SSH access from a personal computer using key.</li><li class="p_Normal">The node should not have container runtime packages installed, such as containerd or Docker.</li></ul>
<p class="p_Normal"><span style="font-weight: bold;">Important</span>: Installation directly from the master node is currently not supported. The installer in the form of a Docker image cannot be run on the same node where the master node is planned to be deployed, as the node should not have container runtime packages installed, such as containerd or Docker. In the absence of management nodes, install Docker on any other node of the future cluster, run the Docker image of the installer, install Deckhouse, and then remove the Docker image of the installer from the node along with Docker.</p>
<ol style="list-style-type:upper-roman" start="3">
<li value="3" class="p_Normal">Загрузка образов Deckhouse в локальный реестр образов.</li></ol>
<p class="p_Normal">Кластер Kubernetes с помощью Deckhouse можно развернуть в закрытом окружении, из которого нет доступа в интернет. Для этого предварительно скачайте на компьютере с доступом в интернет образы платформы Deckhouse и загрузите их в локальный реестр образов. Подробнее об этом читайте в статье <a href="downloading-images-deckhouse.html" class="topiclink">«Загрузка образов Deckhouse».</a></p>
<h2 class="p_Heading2"><a id="preparation-config-file" class="hmanchor"></a><span class="f_Heading2">Шаг 2. Подготовка конфигурационного файла</span></h2>
<p class="p_Normal">Чтобы установить Deckhouse, подготовьте YAML-файл конфигурации установки. Для получения YAMLфайла конфигурации воспользуйтесь сервисом <a href="https://deckhouse.ru/gs/" target="_blank" class="weblink">Быстрый старт</a> на сайте Deckhouse. Сервис сгенерирует актуальный YAMLфайл для текущей версий платформы.</p>
<li value="3" class="p_Normal">Downloading Deckhouse images to the local image registry.</li></ol>
<p class="p_Normal">You can deploy a Kubernetes cluster using Deckhouse in a closed environment without internet access. For this, first download the Deckhouse platform images on a computer with internet access and upload them to the local image registry. Read more in <a href="downloading-images-deckhouse.html" class="topiclink">Download Deckhouse Images</a>.</p>
<h2 class="p_Heading2"><a id="preparation-config-file" class="hmanchor"></a><span class="f_Heading2">Step 2: Prepare configuration file</span></h2>
<p class="p_Normal">To install Deckhouse, prepare a YAML configuration file for installation. To obtain the YAML configuration file, use the <a href="https://deckhouse.io/gs/" target="_blank" class="weblink">Getting started</a> service on the Deckhouse website. The service will generate an up-to-date YAML file for the current version of the platform.</p>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Сгенерируйте YAML-файла сервисом <a href="https://deckhouse.ru/gs/" target="_blank" class="weblink">Быстрый старт</a>, выполнив следующие шаги:</li></ol>
<li value="1" class="p_Normal">Generate the YAML file using the <a href="https://deckhouse.io/gs/" target="_blank" class="weblink">Getting started</a> service by following these steps:</li></ol>
<ol style="list-style-type:decimal">
<li value="1" class="p_Normal">Выберите инфраструктуру — Bare Metal.</li><li value="2" class="p_Normal">Ознакомьтесь с информацией об установке.</li><li value="3" class="p_Normal">Укажите шаблон для DNS-имен кластера. В нашем случае — <span style="font-weight: bold;">%s.example.com</span>.</li><li value="4" class="p_Normal">Сохраните <code><b>config.yml</b></code>.</li></ol>
<li value="1" class="p_Normal">Choose the infrastructure: Bare Metal.</li><li value="2" class="p_Normal">Read the installation information.</li><li value="3" class="p_Normal">Specify the template for the cluster<span style="color: #202122;"></span>s DNS names. In our case it is <span style="font-weight: bold;">%s.example.com</span>.</li><li value="4" class="p_Normal">Save <code><b>config.yml</b></code>.</li></ol>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Внесите необходимые изменения в <code><b>config.yml</b></code>. Для этого выполните следующие действия:</li></ol>
<li value="2" class="p_Normal">Make the necessary changes in <code><b>config.yml</b></code> by doing the following:</li></ol>
<ol style="list-style-type:decimal">
<li value="1" class="p_Normal">Задайте адресное пространство подов кластера в <span style="font-weight: bold;">podSubnetCIDR</span>.</li><li value="2" class="p_Normal">Задайте адресное пространство Serviceов кластера в <span style="font-weight: bold;">serviceSubnetCIDR</span>.</li><li value="3" class="p_Normal">Задайте нужную версию Kubernetes в <span style="font-weight: bold;">kubernetesVersion</span>.</li><li value="4" class="p_Normal">Проверьте канал обновления в <span style="font-weight: bold;">releaseChannel</span> (Stable).</li><li value="5" class="p_Normal">Проверьте шаблон доменного имени в <span style="font-weight: bold;">publicDomainTemplate</span> (<span style="font-weight: bold;">%s.example.com</span>).<br />
Используется для формирования доменов системных приложений в кластере. Например, Grafana для шаблона <span style="font-weight: bold;">%s.example.com</span> будет доступна, как <span style="font-weight: bold;">grafana.example.com</span>.</li><li value="6" class="p_Normal">Проверьте режим работы модуля cni-flannel в <span style="font-weight: bold;">podNetworkMode</span>.<br />
Режим работы flannel, допустимые значения <span style="font-weight: bold;">VXLAN</span> (если ваши сервера имеют связность L3) или <span style="font-weight: bold;">HostGW</span> (для L2-сетей).</li><li value="7" class="p_Normal">Укажите локальную сеть, которую будут использовать узлы кластера в <span style="font-weight: bold;">internalNetworkCIDRs</span>.<br />
Список внутренних сетей узлов кластера, например, <code><b>'192.168.1.0/24'</b></code>, который используется для связи компонентов Kubernetes (kube-apiserver, kubelet и т. д.) между собой.</li></ol>
<p class="p_Normal">Пример файла первичной конфигурации кластера — <code><b>config.yml</b></code>.</p>
<p class="p_Normal"><span style="font-weight: bold;">Для установки через интернет:</span></p>
<li value="1" class="p_Normal">Set the cluster<span style="color: #202122;"></span>s pod address space in <span style="font-weight: bold;">podSubnetCIDR</span>.</li><li value="2" class="p_Normal">Set the cluster<span style="color: #202122;"></span>s Service address space in <span style="font-weight: bold;">serviceSubnetCIDR</span>.</li><li value="3" class="p_Normal">Specify the desired Kubernetes version in <span style="font-weight: bold;">kubernetesVersion</span>.</li><li value="4" class="p_Normal">Check the update channel in <span style="font-weight: bold;">releaseChannel</span> (Stable).</li><li value="5" class="p_Normal">Verify the domain name template in <span style="font-weight: bold;">publicDomainTemplate</span> (<span style="font-weight: bold;">%s.example.com</span>).<br />
Used to form domains for system applications in the cluster. For example, <span style="font-weight: bold;">Grafana</span> for the template <span style="font-weight: bold;">%s.example.com</span> will be accessible as <span style="font-weight: bold;">grafana.example.com</span>.</li><li value="6" class="p_Normal">Check the operation mode of the cni-flannel module in <span style="font-weight: bold;">podNetworkMode</span>.<br />
Flannel operation mode, permissible values are <span style="font-weight: bold;">VXLAN</span> (if your servers have L3 connectivity) or <span style="font-weight: bold;">HostGW</span> (for L2 networks).</li><li value="7" class="p_Normal">Specify the local network to be used by cluster nodes in <span style="font-weight: bold;">internalNetworkCIDRs</span>.<br />
List of internal networks of cluster nodes, for example, <code><b>'192.168.1.0/24'</b></code>, used for communication between Kubernetes components (kube-apiserver, kubelet, etc.).</li></ol>
<p class="p_Normal">Example of the initial cluster configuration file: <code><b>config.yml</b></code>.</p>
<p class="p_Normal">For installation via the internet:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">apiVersion:&nbsp;deckhouse.io/v1</span><br />
<span class="f_CodeExample">kind:&nbsp;ClusterConfiguration</span><br />
<span class="f_CodeExample">clusterType:&nbsp;Static</span><br />
@ -181,31 +179,31 @@
<span class="f_CodeExample">kind:&nbsp;StaticClusterConfiguration</span><br />
<span class="f_CodeExample">internalNetworkCIDRs:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;-&nbsp;192.168.1.0/24</span></p>
<p class="p_Normal"><span style="font-weight: bold;"><a class="dropdown-toggle" style="font-style: normal; font-weight: bold; color: #000000; background-color: transparent; text-decoration: none;" href="javascript:HMToggle('toggle','TOGGLE0186A1')">Для установки без доступа в интернет</a></span></p>
<div id="TOGGLE0186A1" class="dropdown-toggle-body" style="text-align: left; text-indent: 0; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
<p class="p_Normal"><span style="font-weight: bold;"><a class="dropdown-toggle" style="font-style: normal; font-weight: bold; color: #000000; background-color: transparent; text-decoration: none;" href="javascript:HMToggle('toggle','TOGGLE0186A1')">For offline installation without internet access</a></span></p>
<div id="TOGGLE0186A1" class="dropdown-toggle-body" style="text-align: left; text-indent: 0; line-height: 1.80; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
<tr>
<td style="vertical-align:top; padding:0; border:none"><p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало&nbsp;внимание</span></p>
<p class="p_Normal">Для генерации YAML-файла сервисом <a href="https://deckhouse.ru/gs/" target="_blank" class="weblink">Быстрый старт</a>, выберите инфраструктуру <span style="font-weight: bold;">Закрытое окружение</span>.</p>
<p class="p_Normal">To generate the YAML file using the <a href="https://deckhouse.io/gs/" target="_blank" class="weblink">Getting started</a> service, choose the <span style="font-weight: bold;">Private environment</span> infrastructure.</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Конец&nbsp;внимание</span></p>
<p class="p_Normal">Установите следующие параметры в ресурсе <span style="font-weight: bold;">InitConfiguration</span>:</p>
<p class="p_Normal">Set the following parameters in the <span style="font-weight: bold;">InitConfiguration</span> resource:</p>
<ul style="list-style-type:disc">
<li class="p_Normal"><span style="font-weight: bold;">devBranch</span>: если в изолированном приватном репозитории нет образов, содержащих информацию о каналах обновлений, используйте точный тег образа Deckhouse, чтобы установить Deckhouse Platform. Например, если вы хотите установить релиз v1.46.3, используйте образ <code><b>registry.example.com/images/deckhouse/install:v1.46.3</b></code>. Также укажите <code><b>devBranch: v1.46.3</b></code> вместо <code><b>releaseChannel: XXX</b></code>;</li></ul>
<li class="p_Normal"><span style="font-weight: bold;">devBranch</span>: If there are no images in the isolated private repository containing update channel information, use the exact Deckhouse image tag to install Deckhouse Platform. For example, if you want to install release v1.46.3, use the image <code><b>registry.example.com/images/deckhouse/install:v1.46.3</b></code>. Also, specify <code><b>devBranch: v1.46.3</b></code> instead of <code><b>releaseChannel: XXX</b></code>.</li></ul>
<ul style="list-style-type:disc">
<li class="p_Normal"><span style="font-weight: bold;">imagesRepo</span>: <code><b>&lt;PROXY_REGISTRY&gt;/&lt;DECKHOUSE_REPO_PATH&gt;/&lt;DECKHOUSE_REVISION&gt;</b></code>адрес образа Deckhouse в приватном репозитории с учётом используемой редакции. В рамках статьи образы были загружены в <code><b>registry.example.com/images/deckhouse</b></code>. Подробнее читайте в статье <a href="downloading-images-deckhouse.html" class="topiclink">«Загрузка образов Deckhouse»</a>;</li></ul>
<li class="p_Normal"><span style="font-weight: bold;">imagesRepo</span>: <code><b>&lt;PROXY_REGISTRY&gt;/&lt;DECKHOUSE_REPO_PATH&gt;/&lt;DECKHOUSE_REVISION&gt;</b></code>he address of the Deckhouse image in the private repository, considering the edition used. In this article, the images were uploaded to <code><b>registry.example.com/images/deckhouse</b></code>. Read more in <a href="downloading-images-deckhouse.html" class="topiclink">Download Deckhouse Images</a>.</li></ul>
<ul style="list-style-type:disc">
<li class="p_Normal"><span style="font-weight: bold;">registryDockerCfg</span>: <code><b>&lt;BASE64&gt;</b></code>права доступа к приватному репозиторию, зашифрованные в Base64. Примеры заполнения <span style="font-weight: bold;">registryDockerCfg</span> читайте в официальной документации <a href="https://deckhouse.ru/documentation/v1/deckhouse-faq.html#%D0%BF%D0%BE%D0%B4%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0-%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D0%B8" target="_blank" class="weblink">Deckhouse Kubernetes Platform</a>. В рамках статьи разрешён анонимный доступ к образам Deckhouse в стороннем registry. Сформируйте <span style="font-weight: bold;">registryDockerCfg</span>, выполнив следующую команду:</li></ul>
<li class="p_Normal"><span style="font-weight: bold;">registryDockerCfg</span>: <code><b>&lt;BASE64&gt;</b></code>access rights to the private repository, encrypted in Base64. Examples of filling in <span style="font-weight: bold;">registryDockerCfg</span> can be found in the official <a href="https://deckhouse.io/documentation/v1/deckhouse-faq.html" target="_blank" class="weblink">Deckhouse Kubernetes Platform documentation</a>. In this article, anonymous access to Deckhouse images in an external registry is allowed. Generate <span style="font-weight: bold;">registryDockerCfg</span> by executing the following command:</li></ul>
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">echo -n &quot;{\&quot;auths\&quot;: { \&quot;registry.example.com:443/images/deckhouse\&quot;: {}}}&quot; | base64</span></p>
<ul style="list-style-type:disc">
<li class="p_Normal"><span style="font-weight: bold;">registryScheme</span>: укажите по какому протоколу (HTTP, HTTPS) работает приватный репозиторий;</li></ul>
<li class="p_Normal"><span style="font-weight: bold;">registryScheme</span>: specify the protocol (HTTP or HTTPS) used by the private repository.</li></ul>
<ul style="list-style-type:disc">
<li class="p_Normal"><span style="font-weight: bold;">registryCA</span>: корневой SSL-сертификат, которым можно проверить SSL-сертификат приватного реестра, например, если хранилище использует самоподписанный сертификат. Если вы используете не самоподписанный сертификат или хранилище работает по протоколу HTTP, удалите этот параметр.</li></ul>
<p class="p_Normal">Пример файла первичной конфигурации кластера — <code><b>config.yml</b></code>:</p>
<li class="p_Normal"><span style="font-weight: bold;">registryCA</span>: oot SSL certificate that can verify the SSL certificate of the private registry, for example, if the storage uses a self-signed certificate. If you are using a non-self-signed certificate or the storage works via the HTTP protocol, remove this parameter.</li></ul>
<p class="p_Normal">Example of the initial cluster configuration file, <code><b>config.yml</b></code>:</p>
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">apiVersion: deckhouse.io/v1</span><br />
<span class="f_CodeExample">kind: ClusterConfiguration</span><br />
<span class="f_CodeExample">clusterType: Static</span><br />
<span class="f_CodeExample">podSubnetCIDR: 10.111.0.0/16</span><br />
<span class="f_CodeExample">serviceSubnetCIDR: 10.222.0.0/16</span><br />
<span class="f_CodeExample">kubernetesVersion: &quot;1.26&quot;</span><br />
<span class="f_CodeExample">kubernetesVersion: &quot;1.23&quot;</span><br />
<span class="f_CodeExample">clusterDomain: &quot;cluster.local&quot;</span><br />
<span class="f_CodeExample">---</span><br />
<span class="f_CodeExample">apiVersion: deckhouse.io/v1</span><br />
@ -239,92 +237,93 @@
</tr>
</table>
</div>
<h2 class="p_Heading2"><a id="installation" class="hmanchor"></a><span class="f_Heading2">Шаг 3. Установка Kubernetes-кластера на базе Deckhouse</span></h2>
<p class="p_Normal">Установка Deckhouse Platform Community Edition сводится к установке кластера (установщиком на базе Docker-образа), который состоит из единственного master-узла. Инсталлятор Deckhouse доступен в виде образа контейнера, в который необходимо передать конфигурационные файлы и SSH-ключи доступа на master-узел. Далее подразумевается, что используется SSH-ключ <code><b>~/.ssh/id_rsa</b></code>. В основе инсталлятора лежит утилита <a href="https://github.com/deckhouse/deckhouse/tree/main/dhctl/" target="_blank" class="weblink">dhctl</a>.</p>
<h2 class="p_Heading2"><a id="installation" class="hmanchor"></a><span class="f_Heading2">Step 3: Install the Kubernetes cluster based on Deckhouse</span></h2>
<p class="p_Normal">The installation of Deckhouse Platform Community Edition involves setting up a cluster (using a Docker-image-based installer) consisting of a single master node. The Deckhouse installer is available as a container image, which requires the configuration files and SSH keys for accessing the master node. It is assumed that the SSH key used is <code><b>~/.ssh/id_rsa</b></code>. The installer is based on the <a href="https://github.com/deckhouse/deckhouse/tree/main/dhctl/" target="_blank" class="weblink">dhctl</a> utility.</p>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Запустите установщик.</li></ol>
<p class="p_Normal"><span style="font-weight: bold;">Важно</span>: установка непосредственно с master-узла в настоящий момент не поддерживается. Установщик в виде Docker-образа нельзя запускать на том же узле, на котором планируется развёртывание master-узла, так как на узле не должно быть установлено пакетов container runtime, например, containerd или docker.</p>
<p class="p_Normal">Установщик запускается на персональном компьютере, подготовленном на этапе <a href="kubernetes-deckhouse-air-gap.html#infrastructure-preparation" class="topiclink">подготовка инфраструктуры</a>. На ПК перейдите в директорию с файлом конфигурации <code><b>config.yml</b></code>, подготовленным на этапе <a href="kubernetes-deckhouse-air-gap.html#preparation-config-file" class="topiclink">подготовка конфигурационного файла</a>.</p>
<p class="p_Normal">Для запуска установщика через интернет:</p>
<li value="1" class="p_Normal">Start the installer.</li></ol>
<p class="p_Normal"><span style="font-weight: bold;">Important</span>: Direct installation from the master node is currently not supported. The installer, in the form of a Docker image, cannot be run on the same node where the master node deployment is planned, as container runtime packages like containerd or docker should not be installed on the node.</p>
<p class="p_Normal">The installer is run on a personal computer prepared in the <a href="kubernetes-deckhouse-air-gap.html#infrastructure-preparation" class="topiclink">infrastructure preparation</a> step. On the PC, navigate to the directory with the configuration file <code><b>config.yml</b></code>, prepared during the <a href="kubernetes-deckhouse-air-gap.html#preparation-config-file" class="topiclink">configuration file preparation</a> step.</p>
<p class="p_Normal">To launch the installer via the internet:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;docker&nbsp;run&nbsp;--pull=always&nbsp;-it&nbsp;-v&nbsp;&quot;$PWD/config.yml:/config.yml&quot;&nbsp;-v&nbsp;&quot;$HOME/.ssh/:/tmp/.ssh/&quot;&nbsp;registry.deckhouse.io/deckhouse/ce/install:stable&nbsp;bash</span></p>
<p class="p_Normal"><span style="font-weight: bold;"><a class="dropdown-toggle" style="font-style: normal; font-weight: bold; color: #000000; background-color: transparent; text-decoration: none;" href="javascript:HMToggle('toggle','TOGGLE0186A2')">Для установки без доступа в интернет</a></span></p>
<div id="TOGGLE0186A2" class="dropdown-toggle-body" style="text-align: left; text-indent: 0; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
<p class="p_Normal"><span style="font-weight: bold;"><a class="dropdown-toggle" style="font-style: normal; font-weight: bold; color: #000000; background-color: transparent; text-decoration: none;" href="javascript:HMToggle('toggle','TOGGLE0186A2')">For offline installation without internet access</a></span></p>
<div id="TOGGLE0186A2" class="dropdown-toggle-body" style="text-align: left; text-indent: 0; line-height: 1.80; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
<tr>
<td style="vertical-align:top; padding:0; border:none"><p class="p_Normal">&nbsp;<br />
Выполните команду:</p>
Execute the command:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;docker&nbsp;run&nbsp;--pull=always&nbsp;-it&nbsp;-v&nbsp;&quot;$PWD/config.yml:/config.yml&quot;&nbsp;-v&nbsp;&quot;$HOME/.ssh/:/tmp/.ssh/&quot;&nbsp;example.com:443/images/deckhouse/install:v1.46.3&nbsp;bash</span></p>
<p class="p_Normal">Где:</p>
<p class="p_Normal"><code><b>example.com:443/images/deckhouse/install:v1.46.3</b></code> — версия устанавливаемого релиза.</p>
<p class="p_Normal">where:</p>
<p class="p_Normal"><code><b>example.com:443/images/deckhouse/install:v1.46.3</b></code> is the version of the release being installed.</p>
</td>
</tr>
</table>
</div>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal"><a id="deckhouse-installation-command" class="hmanchor"></a>Установите Deckhouse. Для этого внутри контейнера установщика выполните команду:</li></ol>
<li value="2" class="p_Normal"><a id="install-deckhouse" class="hmanchor"></a>Install Deckhouse. To do this, execute the command inside the installer container:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">dhctl&nbsp;bootstrap&nbsp;--ssh-user=&lt;username&gt;&nbsp;--ssh-host=&lt;master_ip&gt;&nbsp;--ssh-agent-</span><span class="f_CodeExample" style="font-weight: bold;">private</span><span class="f_CodeExample">-keys=/tmp/.ssh/id_rsa&nbsp;\</span><br />
<span class="f_CodeExample">--config=/config.yml&nbsp;\</span><br />
<span class="f_CodeExample">--ask-become-pass</span></p>
<p class="p_Normal">Где:</p>
<p class="p_Normal">where:</p>
<ul style="list-style-type:disc">
<li class="p_CodeExample" style="white-space: normal; page-break-inside: auto;"><code><b>&lt;username&gt;</b></code> — в параметре <code><b>--ssh-user</b></code> укажите имя пользователя, от которого генерировался SSHключ для установки;</li><li class="p_CodeExample" style="white-space: normal; page-break-inside: auto;"><code><b>&lt;master_ip&gt;</b></code> — IP-адрес master-узла, подготовленного на этапе <a href="kubernetes-deckhouse-air-gap.html#infrastructure-preparation" class="topiclink">подготовка инфраструктуры</a>.</li></ul>
<p class="p_Normal">Процесс установки может занять 15-30 минут при хорошем соединении.</p>
<p class="p_Normal"><a class="dropdown-toggle" style="font-style: normal; font-weight: normal; color: #000000; background-color: transparent; text-decoration: none;" href="javascript:HMToggle('toggle','TOGGLE0186A3')">Возможные ошибки при установке Deckhouse</a></p>
<div id="TOGGLE0186A3" class="dropdown-toggle-body" style="text-align: left; text-indent: 0; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
<li class="p_CodeExample" style="white-space: normal; page-break-inside: auto;"><code><b>&lt;username&gt;</b></code>.<span style="font-family: 'Courier New',Courier,monospace;"> </span>In the<span class="f_CodeExample"> <code><b>--ssh-user</b></code></span> parameter specify the name of the user who generated the SSH key for installation.</li><li class="p_CodeExample" style="white-space: normal; page-break-inside: auto;"><code><b>&lt;master_ip&gt;</b></code><span class="f_CodeExample">. </span>This is the IP address of the master node prepared during the <a href="kubernetes-deckhouse-air-gap.html#infrastructure-preparation" class="topiclink">infrastructure preparation</a> step.</li></ul>
<p class="p_Normal">The installation process may take 15-30 minutes with a good connection.</p>
<p class="p_Normal"><a class="dropdown-toggle" style="font-style: normal; font-weight: normal; color: #000000; background-color: transparent; text-decoration: none;" href="javascript:HMToggle('toggle','TOGGLE0186A3')">Possible errors when installing Deckhouse</a></p>
<div id="TOGGLE0186A3" class="dropdown-toggle-body" style="text-align: left; text-indent: 0; line-height: 1.80; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
<tr>
<td style="vertical-align:top; padding:0; border:none"><p class="p_Normal">&nbsp;<br />
При установке Deckhouse могут возникать ошибки. Рассмотрим, как их устранить.</p>
Errors may occur during Deckhouse installation. Let's see how to resolve them. </p>
<ol style="list-style-type:decimal">
<li value="1" class="p_Normal">Ошибка доступа портов<code><b>Checking required ports availability FAILED</b></code>.</li></ol>
<p class="p_Normal">Чтобы устранить её, выполните следующие действия:</p>
<li value="1" class="p_Normal"><span style="font-weight: bold;">Port access error</span> <code><b>Checking required ports availability FAILED</b></code>.</li></ol>
<p class="p_Normal">To resolve this error, follow the steps below:</p>
<ol style="list-style-type:lower-latin">
<li value="1" class="p_Normal">Проверьте, что доступ до всех портов, указанных в <a href="https://deckhouse.ru/products/kubernetes-platform/documentation/v1/network_security_setup.html" target="_blank" class="weblink">официальной документации Deckhouse</a>, настроен корректно.</li><li value="2" class="p_Normal">Запустите установщик повторно и <a href="kubernetes-deckhouse-air-gap.html#deckhouse-installation-command" class="topiclink">выполните команду установки Deckhouse</a>.</li><li value="3" class="p_Normal">Дождитесь окончания установки Deckhouse.</li><li value="4" class="p_Normal">Если ошибка повторилась, запустите установщик и выполните команду установки Deckhouse с флагом <code><b>--preflight-skip-availability-ports-check</b></code>.<br />
Пример:</li></ol>
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">dhctl bootstrap --ssh-user=&lt;username&gt; --ssh-host=&lt;master_ip&gt; --ssh-agent-private-keys=/tmp/.ssh/id_rsa --preflight-skip-availability-ports-check \</span><br />
<span class="f_CodeExample"> --config=/config.yml \</span><br />
<li value="1" class="p_Normal">Verify that access to all ports specified in <a href="https://deckhouse.io/products/kubernetes-platform/documentation/v1/network_security_setup.html" target="_blank" class="weblink">the official Deckhouse documentation</a> is configured correctly.</li><li value="2" class="p_Normal">Start the installer again and <a href="kubernetes-deckhouse-air-gap.html#install-deckhouse" class="topiclink">execute the Deckhouse installation command</a>.</li><li value="3" class="p_Normal">Wait for the Deckhouse installation to complete.</li><li value="4" class="p_Normal">If the error occurs again, start the installer and execute the Deckhouse installation command with the <code><b>--preflight-skip-availability-ports-check</b></code> flag. <br />
Example:</li></ol>
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">dhctl bootstrap --ssh-user=&lt;username&gt; --ssh-host=&lt;master_ip&gt; --ssh-agent-private-keys=/tmp/.ssh/id_rsa --preflight-skip-availability-ports-check \.</span><br />
<span class="f_CodeExample"> --config=/config.yml.</span><br />
<span class="f_CodeExample"> --ask-become-pass</span></p>
<ol style="list-style-type:decimal" start="2">
<li value="2" class="p_Normal">Ошибка прав доступа для запустившего установку пользователя (<code><b>ssh-user</b></code>) — <code><b>Checking sudo is allowed for user FAILED</b></code>.</li></ol>
<p class="p_Normal">Чтобы устранить её, выполните следующие действия:</p>
<li value="2" class="p_Normal"><span style="font-weight: bold;">Error with access permissions for the user who started the installation (</span><code><b>ssh-user</b></code><span style="font-weight: bold;">) </span> <code><b>Checking sudo is allowed for user FAILED</b></code>.</li></ol>
<p class="p_Normal">To resolve it, follow the steps below:</p>
<ol style="list-style-type:lower-latin">
<li value="1" class="p_Normal">В файле <code><b>/etc/sudoers</b></code> проверьте, что у пользователя есть sudo-права на хосте, в который устанавливается Deckhouse. Для предоставления прав добавьте запись:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">&lt;user_name&gt;&nbsp;ALL=(ALL)&nbsp;ALL</span>&nbsp;</p>
<p class="p_Normal">В <code><b>&lt;user_name&gt;</b></code> записывается учётная запись пользователя, который запускает установку.</p>
<li value="1" class="p_Normal">In the <code><b>/etc/sudoers</b></code> file, verify that the user has sudo permissions on the host where Deckhouse is installed. To grant the rights, add:</li></ol>
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">&lt;user_name&gt; ALL=(ALL) ALL</span> </p>
<p class="p_Normal">&nbsp;<br />
The <code><b>&lt;user_name&gt;</b></code> records the account of the user who runs the installation.</p>
<ol style="list-style-type:lower-latin" start="2">
<li value="2" class="p_Normal">Запустите установщик повторно и <a href="kubernetes-deckhouse-air-gap.html#deckhouse-installation-command" class="topiclink">выполните команду установки Deckhouse</a>.</li><li value="3" class="p_Normal">Дождитесь окончания установки Deckhouse.</li><li value="4" class="p_Normal">Если ошибка повторилась, запустите установщик и выполните команду установки Deckhouse с флагом <code><b>--preflight-skip-sudo-allowed</b></code>.<br />
Пример:</li></ol>
<li value="2" class="p_Normal">Start the installer again and execute the Deckhouse installation command.</li><li value="3" class="p_Normal">Wait for the Deckhouse installation to complete.</li><li value="4" class="p_Normal">If the error occurs again, start the installer and execute the Deckhouse installation command with the <code><b>--preflight-skip-sudo-allowed</b></code> flag.<br />
Example:</li></ol>
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">dhctl bootstrap --ssh-user=&lt;username&gt; --ssh-host=&lt;master_ip&gt; --ssh-agent-private-keys=/tmp/.ssh/id_rsa --preflight-skip-sudo-allowed \</span><br />
<span class="f_CodeExample">--config=/config.yml \</span><br />
<span class="f_CodeExample">--config=/config.yml.</span><br />
<span class="f_CodeExample">--ask-become-pass</span></p>
<ol style="list-style-type:decimal" start="3">
<li value="3" class="p_Normal">Ошибка при повторном запуске скрипта установки<code><b>Deckhouse Error: bundle 'bashible' error: execute bundle: exit status 1</b></code>.</li></ol>
<p class="p_Normal">Ошибка возникает, если на master-ноде остались файлы от незавершённой установки платформы Deckhouse. Чтобы удалить файлы, на master-ноде выполните команду:</p>
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">sudo bash /var/lib/bashible/cleanup_static_node.sh --yes-i-am-sane-and-i-understand-what-i-am-doing</span></p>
<li value="3" class="p_Normal"><span style="font-weight: bold;">Error when re-running the install script</span> <code><b>Deckhouse Error: bundle 'bashible' error: execute bundle: exit status 1</b></code>.</li></ol>
<p class="p_Normal">The error occurs if files from an incomplete Deckhouse installation are left on the master node. To delete the files, run the command on the master node:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;bash&nbsp;/var/lib/bashible/cleanup_static_node.sh&nbsp;--yes-i-am-sane-and-i-understand-what-i-am-doing</span></p>
</td>
</tr>
</table>
</div>
<h2 class="p_Heading2"><a id="setting" class="hmanchor"></a><span class="f_Heading2">Шаг 4. Настройка Deckhouse</span></h2>
<p class="p_Normal">Подключитесь по SSH на master-узел, подготовленный на этапе <a href="kubernetes-deckhouse-air-gap.html#infrastructure-preparation" class="topiclink">подготовка инфраструктуры</a>. Для этого выполните следующие шаги:</p>
<h2 class="p_Heading2"><a id="setting" class="hmanchor"></a><span class="f_Heading2">Step 4: Set up Deckhouse</span></h2>
<p class="p_Normal">Connect via SSH to the master node prepared during the <a href="kubernetes-deckhouse-air-gap.html#infrastructure-preparation" class="topiclink">infrastructure preparation</a> step. Perform the following steps:</p>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Heading3">Снимите с master-узла ограничения taint.</li></ol>
<p class="p_Normal">В рамках статьи Kubernetes-кластер на базе Deckhouse состоит из одного узла. Разрешите компонентам Deckhouse работать на master-узле. Для этого выполните одну из следующих команд:</p>
<li value="1" class="p_Heading3">Remove taint restrictions from the master node.</li></ol>
<p class="p_Normal">In this article, the Kubernetes cluster based on Deckhouse consists of a single node. Allow Deckhouse components to work on the master node. To do this, execute one of the following commands:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;kubectl&nbsp;patch&nbsp;nodegroup&nbsp;master&nbsp;--type&nbsp;json&nbsp;-p&nbsp;'[{&quot;op&quot;:&nbsp;&quot;remove&quot;,&nbsp;&quot;path&quot;:&nbsp;&quot;/spec/nodeTemplate/taints&quot;}]'</span></p>
<p class="p_Normal">Или</p>
<p class="p_Normal">or</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;-i&nbsp;d8&nbsp;k&nbsp;patch&nbsp;nodegroup&nbsp;master&nbsp;--type&nbsp;json&nbsp;-p&nbsp;'[{&quot;op&quot;:&nbsp;&quot;remove&quot;,&nbsp;&quot;path&quot;:&nbsp;&quot;/spec/nodeTemplate/taints&quot;}]'</span></p>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Heading3">Увеличьте количество подов на master-ноде.</li></ol>
<p class="p_Normal">Увеличьте максимальное количество подов на узлах NodeGroup master, выполнив одну из следующих команд:</p>
<li value="2" class="p_Heading3">Increase the number of pods on the master node.</li></ol>
<p class="p_Normal">Increase the maximum number of pods on the NodeGroup master nodes by executing one of the following commands:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;kubectl&nbsp;patch&nbsp;nodegroup&nbsp;master&nbsp;--type=merge&nbsp;-p&nbsp;'{&quot;spec&quot;:{&quot;kubelet&quot;:{&quot;maxPods&quot;:200}}}'</span></p>
<p class="p_Normal">Или</p>
<p class="p_Normal">or</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;-i&nbsp;d8&nbsp;k&nbsp;patch&nbsp;nodegroup&nbsp;master&nbsp;--type=merge&nbsp;-p&nbsp;'{&quot;spec&quot;:{&quot;kubelet&quot;:{&quot;maxPods&quot;:200}}}'</span></p>
<ol style="list-style-type:upper-roman" start="3">
<li value="3" class="p_Normal">Добавьте Local Path Provisioner.</li></ol>
<p class="p_Normal">По умолчанию storageclass отсутствует в Deckhouse. Создайте custom resource <span style="font-weight: bold;">LocalPathProvisioner</span>, позволяющий пользователям Kubernetes использовать локальное хранилище на узлах. Для этого выполните следующие действия:</p>
<li value="3" class="p_Normal">Add Local Path Provisioner.</li></ol>
<p class="p_Normal">By default, storageclass is absent in Deckhouse. Create a custom resource <span style="font-weight: bold;">LocalPathProvisioner</span>, allowing Kubernetes users to use local storage on nodes. Perform the following actions:</p>
<ol style="list-style-type:decimal">
<li value="1" class="p_Normal">Создадайте на master-узле файл <code><b>local-path-provisioner.yaml</b></code>, содержащий конфигурацию для <span style="font-weight: bold;">LocalPathProvisioner</span>.</li></ol>
<li value="1" class="p_Normal">Create a <code><b>local-path-provisioner.yaml</b></code> file on the master node containing the configuration for <span style="font-weight: bold;">LocalPathProvisioner</span>.</li></ol>
<ol style="list-style-type:decimal" start="2">
<li value="2" class="p_Normal">Установите нужную Reclaim policy (по умолчанию устанавливается Retain). В рамках статьи для параметра <code><b>reclaimPolicy</b></code> установлено <code><b>&quot;Delete&quot;</b></code> (PV после удаления PVC удаляются).</li></ol>
<p class="p_Normal">Пример файла <code><b>local-path-provisioner.yaml</b></code>:</p>
<li value="2" class="p_Normal">Set the desired Reclaim policy (Retain by default). In this article, the parameter <code><b>reclaimPolicy</b></code> is set to <code><b>&quot;Delete&quot;</b></code> (PVs are deleted after PVCs are deleted).</li></ol>
<p class="p_Normal">Example of a <code><b>local-path-provisioner.yaml</b></code> file:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">apiVersion:&nbsp;deckhouse.io/v1alpha1</span><br />
<span class="f_CodeExample">kind:&nbsp;LocalPathProvisioner</span><br />
<span class="f_CodeExample">metadata:</span><br />
@ -335,102 +334,101 @@
<span class="f_CodeExample">&nbsp;&nbsp;path:&nbsp;&quot;/opt/local-path-provisioner&quot;</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;reclaimPolicy:&nbsp;Delete</span></p>
<ol style="list-style-type:decimal" start="3">
<li value="3" class="p_Normal">Примените файл <code><b>local-path-provisioner.yaml</b></code> в Kubernetes. Для этого выполните команду:</li></ol>
<li value="3" class="p_Normal">Apply the <code><b>local-path-provisioner.yaml</b></code> file in Kubernetes by executing the command:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;kubectl&nbsp;apply&nbsp;-f&nbsp;local-path-provisioner.yaml</span></p>
<ol style="list-style-type:decimal" start="4">
<li value="4" class="p_CodeExample" style="white-space: normal; page-break-inside: auto;">Установите созданный <span style="font-weight: bold;">LocalPathProvisioner</span>, как storageclass по умолчанию (default-class), выполнив одну из команд:</li></ol>
<li value="4" class="p_CodeExample" style="white-space: normal; page-break-inside: auto;">Set the created <span style="font-weight: bold;">LocalPathProvisioner</span> as the default storageclass (default-class) by executing one of the following commands:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;kubectl&nbsp;patch&nbsp;storageclass&nbsp;localpath-deckhouse-system&nbsp;-p&nbsp;'{&quot;metadata&quot;:&nbsp;{&quot;annotations&quot;:{&quot;storageclass.kubernetes.io/is-default-class&quot;:&quot;true&quot;}}}'</span></p>
<p class="p_Normal">Или</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;-i&nbsp;d8&nbsp;k&nbsp;patch&nbsp;mc&nbsp;global&nbsp;--type&nbsp;merge&nbsp;-p&nbsp;&quot;{&quot;spec&quot;:&nbsp;{&quot;settings&quot;:{&quot;defaultClusterStorageClass&quot;:&quot;localpath-deckhouse-system&quot;}}}&quot;</span></p>
<p class="p_Normal">or</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;-i&nbsp;d8&nbsp;k&nbsp;patch&nbsp;mc&nbsp;global&nbsp;--type&nbsp;merge&nbsp;-p&nbsp;'{&quot;spec&quot;:&nbsp;{&quot;settings&quot;:{&quot;defaultClusterStorageClass&quot;:&quot;localpath-deckhouse-system&quot;}}}'</span></p>
<ol style="list-style-type:upper-roman" start="4">
<li value="4" class="p_Normal">Добавьте Ingress Nginx Controller.</li></ol>
<p class="p_Normal">Deckhouse устанавливает и управляет NGINX Ingress Controller при помощи Custom Resources. Если узлов для размещения Ingress-контроллера больше одного, он устанавливается в отказоустойчивом режиме и учитывает все особенности реализации инфраструктуры облаков и bare metal, а также кластеров Kubernetes различных типов.</p>
<li value="4" class="p_Normal">Add Ingress Nginx Controller.</li></ol>
<p class="p_Normal">Deckhouse installs and manages the NGINX Ingress Controller using Custom Resources. If there is more than one node for deploying the Ingress controller, it is installed in a fail-safe mode and takes into account all the features of cloud and bare metal infrastructure implementations, as well as different types of Kubernetes clusters.</p>
<ol style="list-style-type:decimal">
<li value="1" class="p_Normal">Создайте на ноде master-узла файл <code><b>ingress-nginx-controller.yml</b></code>, содержащий конфигурацию Ingress-контроллера. Для этого выполните следующую команду:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">#&nbsp;секция,&nbsp;описывающая&nbsp;параметры&nbsp;nginx&nbsp;ingress&nbsp;controller</span><br />
<span class="f_CodeExample">#&nbsp;используемая&nbsp;версия&nbsp;API&nbsp;Deckhouse</span><br />
<span class="f_CodeExample">apiVersion:&nbsp;deckhouse.io/v1</span><br />
<span class="f_CodeExample">kind:&nbsp;IngressNginxController</span><br />
<li value="1" class="p_Normal">Create an <code><b>ingress-nginx-controller.yml</b></code> file on the master node containing the Ingress controller configuration by executing the following command:</li></ol>
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample"># section describing the parameters of the nginx ingress controller</span><br />
<span class="f_CodeExample"># used version of the Deckhouse API</span><br />
<span class="f_CodeExample">apiVersion: deckhouse.io/v1</span><br />
<span class="f_CodeExample">kind: IngressNginxController</span><br />
<span class="f_CodeExample">metadata:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;name:&nbsp;nginx</span><br />
<span class="f_CodeExample"> &nbsp;name: nginx</span><br />
<span class="f_CodeExample">spec:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;#&nbsp;имя&nbsp;Ingress-класса&nbsp;для&nbsp;обслуживания&nbsp;Ingress&nbsp;NGINX&nbsp;controller</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;ingressClass:&nbsp;nginx</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;способ&nbsp;поступления&nbsp;трафика&nbsp;из&nbsp;внешнего&nbsp;мира</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;inlet:&nbsp;HostPort</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;hostPort:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;httpPort:&nbsp;80</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;httpsPort:&nbsp;443</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;#&nbsp;описывает,&nbsp;на&nbsp;каких&nbsp;узлах&nbsp;будет&nbsp;находиться&nbsp;компонент</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;#&nbsp;при&nbsp;необходимости&nbsp;можно&nbsp;изменить</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;nodeSelector:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;node-role.kubernetes.io/control-plane:&nbsp;&quot;&quot;</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;tolerations:</span><br />
&nbsp;&nbsp;<span class="f_CodeExample">-&nbsp;effect:&nbsp;NoSchedule</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;key:&nbsp;node-role.kubernetes.io/control-plane</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;-&nbsp;operator:&nbsp;Exists</span></p>
<span class="f_CodeExample"> &nbsp;# name of the Ingress class for serving Ingress NGINX</span><br />
<span class="f_CodeExample"> &nbsp;ingressClass: nginx</span><br />
<span class="f_CodeExample"> &nbsp; &nbsp;# how traffic enters from the external world</span><br />
<span class="f_CodeExample"> &nbsp;inlet: HostPort</span><br />
<span class="f_CodeExample"> &nbsp;hostPort:</span><br />
<span class="f_CodeExample"> &nbsp; &nbsp;httpPort: 80</span><br />
<span class="f_CodeExample"> &nbsp; &nbsp;httpsPort: 443</span><br />
<span class="f_CodeExample"> &nbsp;# describes which nodes the component will be located on</span><br />
<span class="f_CodeExample"> &nbsp;# you might want to change</span><br />
<span class="f_CodeExample"> &nbsp;nodeSelector:</span><br />
<span class="f_CodeExample"> &nbsp; &nbsp;node-role.kubernetes.io/control-plane: &quot;&quot;</span><br />
<span class="f_CodeExample"> &nbsp;tolerations:</span><br />
<span class="f_CodeExample"> </span><span class="f_CodeExample">- effect: NoSchedule</span><br />
<span class="f_CodeExample"> &nbsp; &nbsp; key: node-role.kubernetes.io/control-plane</span><br />
<span class="f_CodeExample">- operator: Exists</span></p>
<ol style="list-style-type:decimal" start="2">
<li value="2" class="p_CodeExample" style="white-space: normal; page-break-inside: auto;">Примените файл <code><b>ingress-nginx-controller.yml</b></code> в Kubernetes, выполнив команду:</li></ol>
<li value="2" class="p_CodeExample" style="white-space: normal; page-break-inside: auto;">Apply the <code><b>ingress-nginx-controller.yml</b></code> file in Kubernetes by executing the command:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;kubectl&nbsp;create&nbsp;-f&nbsp;ingress-nginx-controller.yml</span></p>
<ol style="list-style-type:upper-roman" start="5">
<li value="5" class="p_Normal">Добавьте пользователя для доступа к веб-интерфейсу кластера.</li></ol>
<li value="5" class="p_Normal">Add a user for access to the cluster web interface.</li></ol>
<ol style="list-style-type:decimal">
<li value="1" class="p_Normal">Добавьте на master-узле файл <code><b>user.yml</b></code>, содержащий описание учётной записи пользователя и прав доступа:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">apiVersion:&nbsp;deckhouse.io/v1</span><br />
<span class="f_CodeExample">kind:&nbsp;ClusterAuthorizationRule</span><br />
<li value="1" class="p_Normal">Add the <code><b>user.yml</b></code> file on the master node containing the description of the user account and access rights:</li></ol>
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">apiVersion: deckhouse.io/v1</span><br />
<span class="f_CodeExample">kind: ClusterAuthorizationRule</span><br />
<span class="f_CodeExample">metadata:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;name:&nbsp;admin</span><br />
<span class="f_CodeExample"> &nbsp;name: admin</span><br />
<span class="f_CodeExample">spec:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;#&nbsp;список&nbsp;учётных&nbsp;записей&nbsp;Kubernetes&nbsp;RBAC</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;subjects:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;-&nbsp;kind:&nbsp;User</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;name:&nbsp;admin@deckhouse.io</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;#&nbsp;предустановленный&nbsp;шаблон&nbsp;уровня&nbsp;доступа</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;accessLevel:&nbsp;SuperAdmin</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;#&nbsp;разрешить&nbsp;пользователю&nbsp;делать&nbsp;kubectl&nbsp;port-forward</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;portForwarding:&nbsp;</span><span class="f_CodeExample" style="font-weight: bold;">true</span><br />
<span class="f_CodeExample"> &nbsp;# list of Kubernetes RBAC accounts</span><br />
<span class="f_CodeExample"> &nbsp;subjects:</span><br />
<span class="f_CodeExample"> &nbsp;- kind: User</span><br />
<span class="f_CodeExample"> &nbsp; &nbsp;name: admin@deckhouse.io</span><br />
<span class="f_CodeExample"> &nbsp;# predefined access level template</span><br />
<span class="f_CodeExample"> &nbsp;accessLevel: SuperAdmin</span><br />
<span class="f_CodeExample"> &nbsp;# allow the user to do kubectl port-forward</span><br />
<span class="f_CodeExample"> &nbsp;portForwarding: </span><span class="f_CodeExample" style="font-weight: bold;">true</span><br />
<span class="f_CodeExample">---</span><br />
<span class="f_CodeExample">#&nbsp;секция,&nbsp;описывающая&nbsp;параметры&nbsp;статического&nbsp;пользователя</span><br />
<span class="f_CodeExample">#&nbsp;используемая&nbsp;версия&nbsp;API&nbsp;Deckhouse</span><br />
<span class="f_CodeExample">apiVersion:&nbsp;deckhouse.io/v1</span><br />
<span class="f_CodeExample">kind:&nbsp;User</span><br />
<span class="f_CodeExample"># section describing the parameters of the static user</span><br />
<span class="f_CodeExample"># used version of the Deckhouse API</span><br />
<span class="f_CodeExample">apiVersion: deckhouse.io/v1</span><br />
<span class="f_CodeExample">kind: User</span><br />
<span class="f_CodeExample">metadata:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;name:&nbsp;admin</span><br />
<span class="f_CodeExample"> &nbsp;name: admin</span><br />
<span class="f_CodeExample">spec:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;#&nbsp;e-mail&nbsp;пользователя</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;email:&nbsp;admin@deckhouse.io</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;#&nbsp;это&nbsp;хэш&nbsp;пароля&nbsp;xgnv5gkggd,&nbsp;сгенерированного&nbsp;сейчас</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;#&nbsp;сгенерируйте&nbsp;свой&nbsp;или&nbsp;используйте&nbsp;этот,&nbsp;но&nbsp;только&nbsp;для&nbsp;тестирования</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;#&nbsp;echo&nbsp;&quot;xgnv5gkggd&quot;&nbsp;|&nbsp;htpasswd&nbsp;-BinC&nbsp;10&nbsp;&quot;&quot;&nbsp;|&nbsp;cut&nbsp;-d:&nbsp;-f2</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;#&nbsp;при&nbsp;необходимости&nbsp;можно&nbsp;изменить</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;password:&nbsp;'$2a$10$4j4cUeyonCfX7aDJyqSHXuAxycsf/sDK0T4n9ySQ7.owE34L1uXTm'</span></p>
<span class="f_CodeExample"> &nbsp;# user's email</span><br />
<span class="f_CodeExample"> &nbsp;email: admin@deckhouse.io</span><br />
<span class="f_CodeExample"> &nbsp;# this is the hash of the password xgnv5gkggd, generated now</span><br />
<span class="f_CodeExample"> &nbsp;# generate your own or use this one, but only for testing</span><br />
<span class="f_CodeExample"> &nbsp;# echo &quot;xgnv5gkggd&quot; | htpasswd -BinC 10 &quot;&quot; | cut -d: -f2</span><br />
<span class="f_CodeExample"> &nbsp;# you might want to change</span><br />
<span class="f_CodeExample"> &nbsp;password: '$2a$10$4j4cUeyonCfX7aDJyqSHXuAxycsf/sDK0T4n9ySQ7.owE34L1uXTm'</span></p>
<ol style="list-style-type:decimal" start="2">
<li value="2" class="p_CodeExample" style="white-space: normal; page-break-inside: auto;">Примените файл <code><b>user.yml</b></code>, выполнив на master-узле следующую команду:</li></ol>
<li value="2" class="p_CodeExample" style="white-space: normal; page-break-inside: auto;">Apply the <code><b>user.yml</b></code> file by executing the following command on the master node:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;kubectl&nbsp;create&nbsp;-f&nbsp;user.yml</span></p>
<ol style="list-style-type:upper-roman" start="5">
<li value="6" class="p_Normal">Разрешите переназначить политику привилегий для запускаемых подов:</li></ol>
<li value="6" class="p_Normal">Allow reassigning privilege policy for the running pods:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo&nbsp;kubectl&nbsp;label&nbsp;namespace&nbsp;elma365&nbsp;security.deckhouse.io/pod-policy=privileged&nbsp;--overwrite</span></p>
<h2 class="p_Heading2"><a id="installation-helm" class="hmanchor"></a><span class="f_Heading2">Шаг 5. Установка HELM</span></h2>
<p class="p_Normal">HELM можно установить, загрузив определённую версию вручную, или с помощью скрипта. Оба способа подробно описаны в <a href="https://helm.sh/ru/docs/intro/install/" target="_blank" class="weblink">официальной документации менеджера пакетов HELM</a>. </p>
<p class="p_Normal">Рассмотрим загрузку и установку инструмента вручную:</p>
<h2 class="p_Heading2"><a id="installation-helm" class="hmanchor"></a><span class="f_Heading2">Step 5: Install Helm</span></h2>
<p class="p_Normal">You can install HELM by downloading a specific version manually or by using a script. Both methods are described in detail in <a href="https://helm.sh/docs/intro/install/" target="_blank" class="weblink">the official documentation of the HELM package manager</a>. </p>
<p class="p_Normal">To download and install the tool manually, do the following:</p>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Перейдите на страницу релизов <a href="https://github.com/helm/helm/releases" target="_blank" class="weblink">Helm</a> и скачайте архив <code><b>helm-vX.Y.Z-linux-amd64.tar.gz</b></code> необходимой версии.</li></ol>
<p class="p_Normal"><span style="font-weight: bold;">Для установки через интернет:</span></p>
<li value="1" class="p_Normal">To install Helm, visit the <a href="https://github.com/helm/helm/releases" target="_blank" class="weblink">Helm</a> releases page and download the <code><b>helm-vX.Y.Z-linux-amd64.tar.gz</b></code> archive of the required version.</li></ol>
<p class="p_Normal">For installation via the internet:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">wget&nbsp;https://get.helm.sh/helm-vX.Y.Z-linux-amd64.tar.gz</span></p>
<p class="p_Normal"><span style="font-weight: bold;"><a class="dropdown-toggle" style="font-style: normal; font-weight: bold; color: #000000; background-color: transparent; text-decoration: none;" href="javascript:HMToggle('toggle','TOGGLE0186A4')">Для установки без доступа в интернет</a></span></p>
<div id="TOGGLE0186A4" class="dropdown-toggle-body" style="text-align: left; text-indent: 0; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
<p class="p_Normal"><span style="font-weight: bold;"><a class="dropdown-toggle" style="font-style: normal; font-weight: bold; color: #000000; background-color: transparent; text-decoration: none;" href="javascript:HMToggle('toggle','TOGGLE0186A4')">For offline installation without internet access</a></span></p>
<div id="TOGGLE0186A4" class="dropdown-toggle-body" style="text-align: left; text-indent: 0; line-height: 1.80; padding: 0 0 0 0; margin: 0 0 0 0;"><table style="border:none; border-spacing:0;">
<tr>
<td style="vertical-align:top; padding:0; border:none"><p class="p_Normal">&nbsp;<br />
На компьютере с доступом в интернет перейдите на страницу релизов Helm и скачайте архив <code><b>helm-vX.Y.Z-linux-amd64.tar.gz</b></code> нужной версии, выполнив команду:</p>
On a computer with internet access, go to the Helm releases page and download the <code><b>helm-vX.Y.Z-linux-amd64.tar.gz</b></code> archive of the desired version by executing the command:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">wget&nbsp;https://get.helm.sh/helm-vX.Y.Z-linux-amd64.tar.gz</span></p>
<p class="p_Normal">&nbsp;<br />
Скопируйте полученный архив на master-узел.</p>
<p class="p_Normal">Copy the downloaded archive to the master node.</p>
</td>
</tr>
</table>
</div>
<ol style="list-style-type:upper-roman" start="2">
<li value="2" class="p_Normal">Распакуйте архив и переместите бинарный файл helm:</li></ol>
<li value="2" class="p_Normal">Unpack the archive and move the helm binary file:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">tar&nbsp;-zxvf&nbsp;helm-vX.Y.Z-linux-amd64.tar.gz</span><br />
<span class="f_CodeExample">mv&nbsp;linux-amd64/helm&nbsp;/usr/local/bin/helm</span></p>
@ -449,7 +447,7 @@
</div>
<!-- добавляет на страницу строку блок Была ли статья полезной? -->
<div class="feedback-wrap"><div class="feedback" id="feedback"><span><b>Была ли статья полезной?</b></span><form action="" method="POST" class="feedback-form" id="feedback-form"><div class="feedback__popup feedback__popup-response" id="feedback__popup_thx">Спасибо за ваш отзыв!</div><div id="feedback-success-popup"><div class="wrap"><button type="button" class="feedback-popup-close">×</button><svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_212_2187)"><path d="M22 0.6875C10.2294 0.6875 0.6875 10.2294 0.6875 22C0.6875 33.7706 10.2294 43.3125 22 43.3125C33.7706 43.3125 43.3125 33.7706 43.3125 22C43.3125 10.2294 33.7706 0.6875 22 0.6875ZM22 40.5625C11.8023 40.5625 3.4375 32.3078 3.4375 22C3.4375 11.8024 11.6922 3.4375 22 3.4375C32.1977 3.4375 40.5625 11.6922 40.5625 22C40.5625 32.1976 32.3078 40.5625 22 40.5625ZM34.1713 16.933L18.6613 32.3186C18.257 32.7197 17.604 32.7171 17.203 32.3128L9.82283 24.873C9.42176 24.4686 9.42434 23.8157 9.82867 23.4146L10.5609 22.6884C10.9652 22.2873 11.6181 22.2899 12.0192 22.6942L17.9468 28.6697L31.9926 14.7366C32.3969 14.3356 33.0498 14.3382 33.4509 14.7425L34.1772 15.4747C34.5783 15.879 34.5757 16.532 34.1713 16.933Z" fill="#27AE60"></path></g><defs><clipPath id="clip0_212_2187"><rect width="44" height="44" fill="white"></rect></clipPath></defs></svg><p>Ваш отзыв успешно отправлен!</p><span>Спасибо за обратную связь.</span></div></div><div class="feedback__popup" id="feedback__popup_why"><button type="button" class="feedback-popup-close">×</button><div class="feedback__popup-header">Уточните, почему:</div><input type="radio" name="category" id="bad_recommendation" value="bad_recommendation"><label for="bad_recommendation">Рекомендации не помогли</label><input type="radio" name="category" id="difficult_text" value="difficult_text"><label for="difficult_text">Текст трудно понять</label><input type="radio" name="category" id="no_answer" value="no_answer"><label for="no_answer">Нет ответа на мой вопрос</label><input type="radio" name="category" id="bad_header" value="bad_header"><label for="bad_header">Содержание статьи не соответствует заголовку</label><input type="radio" name="category" id="other_reason" value="other_reason"><label for="other_reason">Другая причина</label></div><div class="feedback__popup" id="feedback__popup-other"><button type="button" class="feedback-popup-close">×</button> <div class="feedback__popup-header">Расскажите, что вам не понравилось в статье:</div><textarea class="feedback__textarea" name="other" id=""></textarea><input type="submit" class="feedback__other-btn" value="Отправить"></div><div class="feedback-form__btn-group"><input type="radio" name="useful" id="feedback__useful_yes" value="true"><label for="feedback__useful_yes"><img src="like.svg"/><span class="feedback-form__btn-group_yes-btn">Да</span></label><input type="radio" name="useful" id="feedback__useful_no" value="false"><label for="feedback__useful_no"><img src="dislike.svg"/><span class="feedback-form__btn-group_no-btn">Нет</span></label></div><select name="category"><option disabled>Выберите вариант</option><option value="bad_recommendation" selected>Рекомендации не помогли</option><option value="difficult_text">Текст трудно понять</option><option value="no_answer">Нет ответа на мой вопрос</option><option value="bad_header">Содержание статьи не соответствует заголовку</option><option value="other_reason">Другая причина</option></select><input type="submit"></form></div></div>
<div class="feedback" id="feedback"><div class="feedback-help"><span><b>Was this helpful?</b></span><form action="" method="POST" class="feedback-form" id="feedback-form"><div class="feedback__popup feedback__popup-response" id="feedback__popup_thx" style="display: none;">Thanks for your feedback!</div><div class="feedback__popup" id="feedback__popup_why" style="display: none;"><div class="feedback__popup-header">Please specify why:</div><input type="radio" name="category" id="bad_recommendation" value="bad_recommendation"><label for="bad_recommendation">Recommendations did not help me</label><input type="radio" name="category" id="difficult_text" value="difficult_text"><label for="difficult_text">Article is hard to understand</label><input type="radio" name="category" id="no_answer" value="no_answer"><label for="no_answer">Didn`t answer my question</label><input type="radio" name="category" id="bad_header" value="bad_header"><label for="bad_header">Content does not match the topic</label><input type="radio" name="category" id="other_reason" value="other_reason"><label for="other_reason">Other</label></div><div class="feedback__popup" id="feedback__popup-other" style="display: none;"><div class="feedback__popup-header">How we can improve it?</div><textarea class="feedback__textarea" name="other" id=""></textarea><input type="submit" class="feedback__other-btn" value="Submit"></div><div class="feedback-form__btn-group"><input type="radio" name="useful" id="feedback__useful_yes" value="true"><label for="feedback__useful_yes"><img src="like.svg" class="small-img" alt="like"><spanclass="feedback-form__btn-group_yes-btn">Yes</spanclass="feedback-form__btn-group_yes-btn"></label><input type="radio" name="useful" id="feedback__useful_no" value="false"><label for="feedback__useful_no"><img src="dislike.svg" class="small-img" alt="dislike"><spanclass="feedback-form__btn-group_no-btn">No</spanclass="feedback-form__btn-group_no-btn"></label></div><select name="category"><option disabled="">Please specify why</option><option value="bad_recommendation" selected="">Recommendations did not help me</option><option value="difficult_text">Article is hard to understand</option><option value="no_answer">Didn`t answer my question</option><option value="bad_header">Content does not match the topic</option><option value="other_reason">Other</option></select><input type="submit"></form></div><div class="found_typo"><p style="margin: 0px; margin-top: 16px !important;"><span><b>Found a typo?</b></span> Select it and press <i>Ctrl+Enter</i> to send us feedback</p></div></div>
</section>
</div>
@ -457,7 +455,7 @@
<input type="checkbox" />
<div class="article__arrow"></div>
<div class="table-of-contents elma365-right" id="toc2Content">
<h3 class="h3-toc">В этой статье</h3>
<h3 class="h3-toc">In this topic</h3>
<nav id="toc2"></nav>
</div>
</aside>
@ -468,63 +466,30 @@
<div class="footer-container">
<div class="footer-mobile">
<ul class="footer-mobile__list"><li><a href="https://api.elma365.com/ru/" target="_blank">API</a></li><li><a href="https://tssdk.elma365.com/" target="_blank">TS SDK</a></li><li><a href="https://community.elma365.com/" target="_blank">Community</a></li><li><a href="https://elma-academy.com/ru/elma365" target="_blank">Академия</a></li></ul><ul class="footer-mobile__list"><li><a href="https://elma365.com/ru/help/platform/get-trial.html">Платформа</a></li><li><a href="https://elma365.com/ru/help/ecm/ecm-functions.html">ECM</a></li><li><a href="https://elma365.com/ru/help/service/service-functions.html">Service</a></li><li><a href="https://elma365.com/ru/help/projects/projects-functions.html">Проекты</a></li></ul>
<ul class="footer-mobile__list"><li><a href="https://brix365.com/en/" target="_blank">BRIX</a></li><li><a href="https://tssdk.brix365.com/en/latest/" target="_blank">SDK</a></li><li><a href="https://api.brix365.com/en/" target="_blank">API</a></li></ul><ul class="footer-mobile__list"><li><a href="https://brix365.com/en/help/platform/get-trial.html">Platform</a></li><li><a href="https://brix365.com/en/help/ecm/ecm-functions.html">ECM</a></li><li><a href="https://brix365.com/en/help/service/service-functions.html">Service</a></li><li><a href="https://brix365.com/en/help/projects/projects-functions.html">Projects</a></li></ul>
</div>
<div class="container">
<div class="footer-wrap">
<div><span class="mobile-question-popup">Отправить фидбэк</span><form method="POST" action class="question__popup question-xs" id="question__popup"><div class="question-wrap"><span class="close"></span><span class="title">Задать вопрос</span><label for="help_question" style="display: none;"></label><textarea name="help_question" id="help_question"></textarea><input type="submit" value="Отправить"></div></form><div class="hidden fade-in question-success-xs">Ваш фидбэк отправлен.</div></div>
<div class="footer-flex-b">
<div class="footer-top">
<span class="footer-copy">&copy; 2025
ELMA365
</span>
<a href="https://navigator.sk.ru/orn/1122971" target="_blank">
<img src="sk-resident.svg" alt="sk icon" class="footer-img" width="117" height="34">
</a>
</div>
<div class="footer-line">
<div class="footer-line-copy">
<span class="footer-copy">&copy; 2025
ELMA365
</span>
</div>
<ul class="footer-list">
<li class="footer-item"><a href="https://elma365.com/ru/" target="_blank" class="footer-link" style="color: #0D4A75;"><img src="browse.svg" alt="browse icon" class="footer-img">elma365.com</a></li><li class="footer-item"><a href="https://www.youtube.com/user/ELMABPM" target="_blank" class="footer-link"><img src="yt.svg" alt="youtube icon" class="footer-img"></a></li><li class="footer-item"><a href="https://vk.com/elma_bpm" target="_blank" class="footer-link"><img src="vk.svg" alt="vk icon" class="footer-img"></a></li><li class="footer-item"><a href="https://t.me/elmaday" target="_blank" class="footer-link"><img src="tg.svg" alt="telegram icon" class="footer-img"></a></li><li class="footer-item"><a href="https://dzen.ru/elma" target="_blank" class="footer-link"><img src="dzen.svg" alt="dzen icon" class="footer-img"></a></li>
<li class="footer-item">
<a href="https://navigator.sk.ru/orn/1122971" target="_blank">
<img src="sk-resident.svg" alt="sk icon" class="footer-img" width="117" height="34">
</a>
</li>
</ul>
</div>
</div>
<div class="footer-wrap">
<div><span class="mobile-question-popup">Send feedback</span><form method="POST" action class="question__popup question-xs" id="question__popup"><div class="question-wrap"><span class="close"></span><span class="title">Ask a question</span><label for="help_question" style="display: none;"></label><textarea name="help_question" id="help_question"></textarea><input type="submit" value="Send"></div></form><div class="hidden fade-in question-success-xs">Sent</div></div>
<div class="footer-flex-b">
<span class="footer-copy">&copy; 2025 BRIX</span>
<ul class="footer-list">
<li class="footer-item">
<a href="#" class="arrow-top" style="display: block;"></a>
</li>
</ul>
</div>
</div>
<a href="#" class="arrow-top"></a>
</div>
</footer>
<!-- <script type="text/javascript" src="jquery1.min.js"></script>-->
<iframe name="hmnavigation" style="display:none!important"></iframe>
<!--<script src="./jquery-ui.js"></script> -->
<script src="./jquery-ui.min.js"></script>
<script src="./jquery-ui.js"></script>
<!--script src="//cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.js" type="text/javascript" charset="utf-8"></script-->
<script src="./jquery.tocify.min.js"></script>
<script src="./TypoReporter.min.js"></script>