first commit
This commit is contained in:
541
platform/kubernetes-deckhouse-air-gap.html
Normal file
541
platform/kubernetes-deckhouse-air-gap.html
Normal file
@ -0,0 +1,541 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
|
||||
<head>
|
||||
<title>Kubernetes-кластер</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 на базе Open Source-компонентов." />
|
||||
<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" />
|
||||
<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" />
|
||||
<link rel="stylesheet" href="./jquery-ui.min.css" />
|
||||
<link rel="stylesheet" href="default.css" />
|
||||
<link rel="stylesheet" href="./search-yandex.css" />
|
||||
<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>
|
||||
|
||||
<script type="text/javascript" src="highlight.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){highlight();});
|
||||
</script>
|
||||
</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>
|
||||
<!-- <div class="hero__search-form" id="search-panel">
|
||||
<form class="search-form" onsubmit="ym(83179930,'reachGoal','poisk')">
|
||||
<label class="search-form__label">
|
||||
<span id="reset-search" class="search__icon"></span>
|
||||
<input class="search-form__input" type="text">
|
||||
</label>
|
||||
<input class="search-form__submit" type="submit" value="Submit">
|
||||
</form>
|
||||
</div> -->
|
||||
|
||||
<div class="hero__search-form" id="search-panel"> <form class="search-form"> <label class="search-form__label"> <span id="reset-search" class="search__icon"></span> <input class="search-form__input" type="text"> </label> <input class="search-form__submit" type="submit" value="Submit"> </form> </div>
|
||||
<div class="hero__search">
|
||||
<a href="#" id="search-icon" class="hero__search-icon">
|
||||
<img src="search-icon-white.svg" alt="search string">
|
||||
</a>
|
||||
<a href="#" id="side-menu-icon" class="hero__side-icon">
|
||||
<img src="side_menu.svg" alt="side menu">
|
||||
</a>
|
||||
</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>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
|
||||
|
||||
<main class="main container">
|
||||
|
||||
<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>
|
||||
<span class="sidebar__close elma-365-close" id="close"></span>
|
||||
</div>
|
||||
<div class="sidebar__wrapper" id="side-menu">
|
||||
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<article class="article" id="article">
|
||||
<div class="article-inner">
|
||||
<div class="content">
|
||||
<header class="article__header">
|
||||
<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> > <a href="infrastructure-preparation.html">Подготовка инфраструктуры</a> > Kubernetes / Kubernetes-кластер</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Kubernetes-кластер</span></h1>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
<section class="article__content">
|
||||
<div class="scroll-top-inner">
|
||||
<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&classify=category&sort-by=name&sort-direction=asc&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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало внимание</span></p>
|
||||
<p class="p_Normal">Deckhouse поддерживает работу только с Bearer token схемой авторизации в <span style="font-weight: bold;">registry</span>.</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Конец внимание</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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<ol style="list-style-type:upper-roman" start="2">
|
||||
<li value="2" class="p_Normal">Внесите необходимые изменения в <code><b>config.yml</b></code>. Для этого выполните следующие действия:</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>
|
||||
<p class="p_CodeExample" style="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: "1.26"</span><br />
|
||||
<span class="f_CodeExample">clusterDomain: "cluster.local"</span><br />
|
||||
<span class="f_CodeExample">---</span><br />
|
||||
<span class="f_CodeExample">apiVersion: deckhouse.io/v1</span><br />
|
||||
<span class="f_CodeExample">kind: InitConfiguration</span><br />
|
||||
<span class="f_CodeExample">deckhouse:</span><br />
|
||||
<span class="f_CodeExample"> releaseChannel: Stable</span><br />
|
||||
<span class="f_CodeExample"> configOverrides:</span><br />
|
||||
<span class="f_CodeExample"> global:</span><br />
|
||||
<span class="f_CodeExample"> modules:</span><br />
|
||||
<span class="f_CodeExample"> publicDomainTemplate: "%s.example.com"</span><br />
|
||||
<span class="f_CodeExample"> cniFlannelEnabled: </span><span class="f_CodeExample" style="font-weight: bold;">true</span><br />
|
||||
<span class="f_CodeExample"> cniFlannel:</span><br />
|
||||
<span class="f_CodeExample"> podNetworkMode: VXLAN</span><br />
|
||||
<span class="f_CodeExample">---</span><br />
|
||||
<span class="f_CodeExample">apiVersion: deckhouse.io/v1</span><br />
|
||||
<span class="f_CodeExample">kind: StaticClusterConfiguration</span><br />
|
||||
<span class="f_CodeExample">internalNetworkCIDRs:</span><br />
|
||||
<span class="f_CodeExample"> - 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;">
|
||||
<tr>
|
||||
<td style="vertical-align:top; padding:0; border:none"><p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало внимание</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_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Конец внимание</span></p>
|
||||
<p class="p_Normal">Установите следующие параметры в ресурсе <span style="font-weight: bold;">InitConfiguration</span>:</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>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal"><span style="font-weight: bold;">imagesRepo</span>: <code><b><PROXY_REGISTRY>/<DECKHOUSE_REPO_PATH>/<DECKHOUSE_REVISION></b></code> — адрес образа Deckhouse в приватном репозитории с учётом используемой редакции. В рамках статьи образы были загружены в <code><b>registry.example.com/images/deckhouse</b></code>. Подробнее читайте в статье <a href="downloading-images-deckhouse.html" class="topiclink">«Загрузка образов Deckhouse»</a>;</li></ul>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal"><span style="font-weight: bold;">registryDockerCfg</span>: <code><b><BASE64></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>
|
||||
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">echo -n "{\"auths\": { \"registry.example.com:443/images/deckhouse\": {}}}" | base64</span></p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal"><span style="font-weight: bold;">registryScheme</span>: укажите по какому протоколу (HTTP, HTTPS) работает приватный репозиторий;</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>
|
||||
<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: "1.26"</span><br />
|
||||
<span class="f_CodeExample">clusterDomain: "cluster.local"</span><br />
|
||||
<span class="f_CodeExample">---</span><br />
|
||||
<span class="f_CodeExample">apiVersion: deckhouse.io/v1</span><br />
|
||||
<span class="f_CodeExample">kind: InitConfiguration</span><br />
|
||||
<span class="f_CodeExample">deckhouse:</span><br />
|
||||
<span class="f_CodeExample"> devBranch: v1.46.3</span><br />
|
||||
<span class="f_CodeExample"> configOverrides:</span><br />
|
||||
<span class="f_CodeExample"> global:</span><br />
|
||||
<span class="f_CodeExample"> modules:</span><br />
|
||||
<span class="f_CodeExample"> publicDomainTemplate: "%s.example.com"</span><br />
|
||||
<span class="f_CodeExample"> cniFlannelEnabled: </span><span class="f_CodeExample" style="font-weight: bold;">true</span><br />
|
||||
<span class="f_CodeExample"> cniFlannel:</span><br />
|
||||
<span class="f_CodeExample"> podNetworkMode: VXLAN</span><br />
|
||||
<span class="f_CodeExample"> imagesRepo: registry.example.com:443/images/deckhouse</span><br />
|
||||
<span class="f_CodeExample"> registryDockerCfg: eyJhdXRocyI6IHsgInJlZ2lzdHJ5LmV4YW1wbGUuY29tOjQ0My9pbWFnZXMvZGVja2hvdXNlIjoge319fQ==</span><br />
|
||||
<span class="f_CodeExample"> registryScheme: HTTPS</span><br />
|
||||
<span class="f_CodeExample"> registryCA: |</span><br />
|
||||
<span class="f_CodeExample"> -----BEGIN CERTIFICATE-----</span><br />
|
||||
<span class="f_CodeExample"> MIIFBzCCGu+gAwIBAgIUBZ37mm02QGGcmd5pZvWwnpCfQUowDQYGKoZIhvcNAQEL</span><br />
|
||||
<span class="f_CodeExample"> BQAwHjEcMBoGA1UEAwwTaW1hZ2VzLnByb2FjdG9yLnBybzAeFw0yMjA5MjkxNDUw</span><br />
|
||||
<span class="f_CodeExample"> ...</span><br />
|
||||
<span class="f_CodeExample"> 9UpckrwxPhctmln5/Awd/2gcaRAxI3qBL7SyDFT0YpnGcAiGPY4Z67HhZ7h6y+2F</span><br />
|
||||
<span class="f_CodeExample"> fQDSXli0r61/Fenkh5OLMihLYTm+5gjZlG1LCXpaGIpjAf16Q+3/pIqapQ==</span><br />
|
||||
<span class="f_CodeExample"> -----END CERTIFICATE-----</span><br />
|
||||
<span class="f_CodeExample">---</span><br />
|
||||
<span class="f_CodeExample">apiVersion: deckhouse.io/v1</span><br />
|
||||
<span class="f_CodeExample">kind: StaticClusterConfiguration</span><br />
|
||||
<span class="f_CodeExample">internalNetworkCIDRs:</span><br />
|
||||
<span class="f_CodeExample"> - 192.168.1.0/24</span></p>
|
||||
</td>
|
||||
</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>
|
||||
<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>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo docker run --pull=always -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" registry.deckhouse.io/deckhouse/ce/install:stable 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;">
|
||||
<tr>
|
||||
<td style="vertical-align:top; padding:0; border:none"><p class="p_Normal"> <br />
|
||||
Выполните команду:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo docker run --pull=always -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" example.com:443/images/deckhouse/install:v1.46.3 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>
|
||||
</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>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">dhctl bootstrap --ssh-user=<username> --ssh-host=<master_ip> --ssh-agent-</span><span class="f_CodeExample" style="font-weight: bold;">private</span><span class="f_CodeExample">-keys=/tmp/.ssh/id_rsa \</span><br />
|
||||
<span class="f_CodeExample">--config=/config.yml \</span><br />
|
||||
<span class="f_CodeExample">--ask-become-pass</span></p>
|
||||
<p class="p_Normal">Где:</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_CodeExample" style="white-space: normal; page-break-inside: auto;"><code><b><username></b></code> — в параметре <code><b>--ssh-user</b></code> укажите имя пользователя, от которого генерировался SSH‑ключ для установки;</li><li class="p_CodeExample" style="white-space: normal; page-break-inside: auto;"><code><b><master_ip></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;">
|
||||
<tr>
|
||||
<td style="vertical-align:top; padding:0; border:none"><p class="p_Normal"> <br />
|
||||
При установке Deckhouse могут возникать ошибки. Рассмотрим, как их устранить.</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>
|
||||
<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=<username> --ssh-host=<master_ip> --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>
|
||||
<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"><user_name> ALL=(ALL) ALL</span> </p>
|
||||
<p class="p_Normal">В <code><b><user_name></b></code> записывается учётная запись пользователя, который запускает установку.</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>
|
||||
<p class="p_CodeExample" style="white-space: normal; page-break-inside: avoid;"><span class="f_CodeExample">dhctl bootstrap --ssh-user=<username> --ssh-host=<master_ip> --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">--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>
|
||||
</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>
|
||||
<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>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo kubectl patch nodegroup master --type json -p '[{"op": "remove", "path": "/spec/nodeTemplate/taints"}]'</span></p>
|
||||
<p class="p_Normal">Или</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo -i d8 k patch nodegroup master --type json -p '[{"op": "remove", "path": "/spec/nodeTemplate/taints"}]'</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>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo kubectl patch nodegroup master --type=merge -p '{"spec":{"kubelet":{"maxPods":200}}}'</span></p>
|
||||
<p class="p_Normal">Или</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo -i d8 k patch nodegroup master --type=merge -p '{"spec":{"kubelet":{"maxPods":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>
|
||||
<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>
|
||||
<ol style="list-style-type:decimal" start="2">
|
||||
<li value="2" class="p_Normal">Установите нужную Reclaim policy (по умолчанию устанавливается Retain). В рамках статьи для параметра <code><b>reclaimPolicy</b></code> установлено <code><b>"Delete"</b></code> (PV после удаления PVC удаляются).</li></ol>
|
||||
<p class="p_Normal">Пример файла <code><b>local-path-provisioner.yaml</b></code>:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">apiVersion: deckhouse.io/v1alpha1</span><br />
|
||||
<span class="f_CodeExample">kind: LocalPathProvisioner</span><br />
|
||||
<span class="f_CodeExample">metadata:</span><br />
|
||||
<span class="f_CodeExample"> name: localpath-deckhouse-system</span><br />
|
||||
<span class="f_CodeExample">spec:</span><br />
|
||||
<span class="f_CodeExample"> nodeGroups:</span><br />
|
||||
<span class="f_CodeExample"> - master</span><br />
|
||||
<span class="f_CodeExample"> path: "/opt/local-path-provisioner"</span><br />
|
||||
<span class="f_CodeExample"> reclaimPolicy: 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>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo kubectl apply -f 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>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo kubectl patch storageclass localpath-deckhouse-system -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'</span></p>
|
||||
<p class="p_Normal">Или</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo -i d8 k patch mc global --type merge -p "{"spec": {"settings":{"defaultClusterStorageClass":"localpath-deckhouse-system"}}}"</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>
|
||||
<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"># секция, описывающая параметры nginx ingress controller</span><br />
|
||||
<span class="f_CodeExample"># используемая версия API Deckhouse</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"> name: nginx</span><br />
|
||||
<span class="f_CodeExample">spec:</span><br />
|
||||
<span class="f_CodeExample"> # имя Ingress-класса для обслуживания Ingress NGINX controller</span><br />
|
||||
<span class="f_CodeExample"> ingressClass: nginx</span><br />
|
||||
<span class="f_CodeExample"> # способ поступления трафика из внешнего мира</span><br />
|
||||
<span class="f_CodeExample"> inlet: HostPort</span><br />
|
||||
<span class="f_CodeExample"> hostPort:</span><br />
|
||||
<span class="f_CodeExample"> httpPort: 80</span><br />
|
||||
<span class="f_CodeExample"> httpsPort: 443</span><br />
|
||||
<span class="f_CodeExample"> # описывает, на каких узлах будет находиться компонент</span><br />
|
||||
<span class="f_CodeExample"> # при необходимости можно изменить</span><br />
|
||||
<span class="f_CodeExample"> nodeSelector:</span><br />
|
||||
<span class="f_CodeExample"> node-role.kubernetes.io/control-plane: ""</span><br />
|
||||
<span class="f_CodeExample"> tolerations:</span><br />
|
||||
<span class="f_CodeExample">- effect: NoSchedule</span><br />
|
||||
<span class="f_CodeExample"> 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>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo kubectl create -f ingress-nginx-controller.yml</span></p>
|
||||
<ol style="list-style-type:upper-roman" start="5">
|
||||
<li value="5" class="p_Normal">Добавьте пользователя для доступа к веб-интерфейсу кластера.</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: deckhouse.io/v1</span><br />
|
||||
<span class="f_CodeExample">kind: ClusterAuthorizationRule</span><br />
|
||||
<span class="f_CodeExample">metadata:</span><br />
|
||||
<span class="f_CodeExample"> name: admin</span><br />
|
||||
<span class="f_CodeExample">spec:</span><br />
|
||||
<span class="f_CodeExample"> # список учётных записей Kubernetes RBAC</span><br />
|
||||
<span class="f_CodeExample"> subjects:</span><br />
|
||||
<span class="f_CodeExample"> - kind: User</span><br />
|
||||
<span class="f_CodeExample"> name: admin@deckhouse.io</span><br />
|
||||
<span class="f_CodeExample"> # предустановленный шаблон уровня доступа</span><br />
|
||||
<span class="f_CodeExample"> accessLevel: SuperAdmin</span><br />
|
||||
<span class="f_CodeExample"> # разрешить пользователю делать kubectl port-forward</span><br />
|
||||
<span class="f_CodeExample"> portForwarding: </span><span class="f_CodeExample" style="font-weight: bold;">true</span><br />
|
||||
<span class="f_CodeExample">---</span><br />
|
||||
<span class="f_CodeExample"># секция, описывающая параметры статического пользователя</span><br />
|
||||
<span class="f_CodeExample"># используемая версия API Deckhouse</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"> name: admin</span><br />
|
||||
<span class="f_CodeExample">spec:</span><br />
|
||||
<span class="f_CodeExample"> # e-mail пользователя</span><br />
|
||||
<span class="f_CodeExample"> email: admin@deckhouse.io</span><br />
|
||||
<span class="f_CodeExample"> # это хэш пароля xgnv5gkggd, сгенерированного сейчас</span><br />
|
||||
<span class="f_CodeExample"> # сгенерируйте свой или используйте этот, но только для тестирования</span><br />
|
||||
<span class="f_CodeExample"> # echo "xgnv5gkggd" | htpasswd -BinC 10 "" | cut -d: -f2</span><br />
|
||||
<span class="f_CodeExample"> # при необходимости можно изменить</span><br />
|
||||
<span class="f_CodeExample"> 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>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo kubectl create -f user.yml</span></p>
|
||||
<ol style="list-style-type:upper-roman" start="5">
|
||||
<li value="6" class="p_Normal">Разрешите переназначить политику привилегий для запускаемых подов:</li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">sudo kubectl label namespace elma365 security.deckhouse.io/pod-policy=privileged --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>
|
||||
<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>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">wget 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;">
|
||||
<tr>
|
||||
<td style="vertical-align:top; padding:0; border:none"><p class="p_Normal"> <br />
|
||||
На компьютере с доступом в интернет перейдите на страницу релизов Helm и скачайте архив <code><b>helm-vX.Y.Z-linux-amd64.tar.gz</b></code> нужной версии, выполнив команду:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">wget https://get.helm.sh/helm-vX.Y.Z-linux-amd64.tar.gz</span></p>
|
||||
<p class="p_Normal"> <br />
|
||||
Скопируйте полученный архив на master-узел.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<ol style="list-style-type:upper-roman" start="2">
|
||||
<li value="2" class="p_Normal">Распакуйте архив и переместите бинарный файл helm:</li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">tar -zxvf helm-vX.Y.Z-linux-amd64.tar.gz</span><br />
|
||||
<span class="f_CodeExample">mv linux-amd64/helm /usr/local/bin/helm</span></p>
|
||||
|
||||
<div class="bottom-nav">
|
||||
|
||||
<a id="prev-link" class="topic__navi_prev" href="infrastructure-preparation.html">
|
||||
<span class="bottom-nav__arrow bottom-nav__arrow--prev"></span> <span
|
||||
class="bottom-nav__link">infrastructure-preparation.html</span>
|
||||
</a>
|
||||
|
||||
|
||||
<a id="next-link" class="topic__navi_next" href="fail-safe-kubernetes-cluster.html">
|
||||
<span class="bottom-nav__link">fail-safe-kubernetes-cluster.html</span> <span
|
||||
class="bottom-nav__arrow bottom-nav__arrow--next"></span>
|
||||
</a>
|
||||
|
||||
</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>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
<aside class="article__sidebar" style="display:none">
|
||||
<input type="checkbox" />
|
||||
<div class="article__arrow"></div>
|
||||
<div class="table-of-contents elma365-right" id="toc2Content">
|
||||
<h3 class="h3-toc">В этой статье</h3>
|
||||
<nav id="toc2"></nav>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</article>
|
||||
</main>
|
||||
<footer class="footer">
|
||||
<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>
|
||||
|
||||
|
||||
</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">© 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">© 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>
|
||||
</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="//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>
|
||||
<script src="./google-search.js"></script>
|
||||
<script src="./main.js"></script>
|
||||
<script type="text/javascript">
|
||||
HMInitToggle('TOGGLE0186A1','hm.type','dropdown','hm.state','0');
|
||||
HMInitToggle('TOGGLE0186A2','hm.type','dropdown','hm.state','0');
|
||||
HMInitToggle('TOGGLE0186A3','hm.type','dropdown','hm.state','0');
|
||||
HMInitToggle('TOGGLE0186A4','hm.type','dropdown','hm.state','0');
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
Reference in New Issue
Block a user