first commit

This commit is contained in:
2025-05-26 16:15:30 +04:00
commit a6b05d6789
6059 changed files with 495628 additions and 0 deletions

View File

@ -0,0 +1,354 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<title>Установка ELMA365 в 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 On-Premises. Об актуальной установке в Kubernetes читайте в статье «Установка ELMA365 Enterprise в..." />
<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> &gt; Дополнительно / Установка ELMA365 в Kubernetes</p>
</div>
</div>
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Установка ELMA365 в 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_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало&nbsp;внимание</span></p>
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">В статье приведена устаревшая инструкция для ELMA365 On-Premises. Об актуальной установке в Kubernetes </span>читайте в статье <a href="installing-elma365-enterprise.html" class="topiclink">«Установка ELMA365 Enterprise в Kubernetes»</a>.</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Конец&nbsp;внимание</span></p>
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">ELMA365 On-Premises можно установить с использованием Helm v.3 в уже существующий Kubernetes-кластер.</span></p>
<p class="p_Normal" style="line-height: 1.57;">Установленная версия кластера должна поддерживать Kubernetes API версии не ниже 1.21. Должно быть также разрешено проксирование из подов во внешнюю сеть.</p>
<p class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px;">ELMA365 поставляется в виде двух Helm-чартов, которые устанавливаются поочерёдно:</span></p>
<ul style="list-style-type:disc">
<li class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px; font-weight: bold;">elma365-dbs</span><span style="font-size: 15px;"> </span><span style="font-size: 15px; color: #4d5156; background-color: #ffffff;"></span><span style="font-size: 15px;"> набор баз данных и хранилищ, необходимых для работы ELMA365. Также есть возможность использовать собственные базы данных PostgreSQL, MongoDB, Redis, RabbitMQ, хранилище S3, указав строки подключения к ним </span><code><b>values</b></code><span style="font-size: 15px;"> чарта </span><span style="font-weight: bold;">elma365</span><span style="font-size: 15px;">. При этом в файле </span><code><b>values-dbs.yaml</b></code><span style="font-size: 15px;"> установку соответствующих компонентов можно отключить, выставив значение </span><code><b>false</b></code><span style="font-size: 15px;">, например для PostgreSQL: </span><code><b>global.postgresql.enabled</b></code><span style="font-size: 15px;">. Если все пять компонентов чарта будут выставлены в </span><code><b>false</b></code><span style="font-size: 15px;">, то установка этого чарта не требуется. Узнать больше о создании баз данных вы можете из раздела <a href="postgresql.html" class="topiclink">«Подготовка внешних баз данных»</a>;</span></li><li class="p_Normal" style="line-height: 1.57;"><span style="font-size: 15px; font-weight: bold;">elma365 </span><span style="font-size: 15px; color: #4d5156; background-color: #ffffff;">&nbsp;</span><span style="font-size: 15px;">чарт с ELMA365.</span></li></ul>
<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;">elma365-extension</span> больше не поддерживаются. Переход на чарты <span style="font-weight: bold;">elma365-dbs</span> с новыми версиями баз данных выполняется с помощью дампа и его восстановления.</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">конец&nbsp;внимание</span></p>
<h2 class="p_Heading2"><a id="download-links" class="hmanchor"></a><span class="f_Heading2">Ссылки для скачивания Helm-чартов</span></h2>
<ul style="list-style-type:disc">
<li class="p_Normal"><span style="font-weight: bold;">elma365-dbs</span><a href="https://dl.elma365.com/onPremise/latest/elma365-dbs-latest.tar.gz" class="weblink">https://dl.elma365.com/onPremise/latest/elma365-dbs-latest.tar.gz</a>;</li><li class="p_Normal"><span style="font-weight: bold;">elma365</span><a href="https://dl.elma365.com/onPremise/latest/elma365-latest.tar.gz" class="weblink">https://dl.elma365.com/onPremise/latest/elma365-latest.tar.gz</a>.</li></ul>
<p class="p_Normal">Подробнее об адресах для скачивания ELMA365 читайте в статье <a href="links-for-install-elma365.html#links-for-install-helm" class="topiclink">«Ссылки для скачивания дистрибутивов ELMA365»</a>. </p>
<h2 class="p_Heading2"><span class="f_Heading2">Установка чарта elma365-dbs</span></h2>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Заполните переменные в файле <code><b>values-dbs.yaml</b></code>. При использовании своих баз данных установку встроенных баз можно отключить.</li><li value="2" class="p_Normal">Если требуется создать отдельный <code><b>namespace</b></code>, укажите его во всех командах установки.</li><li value="3" class="p_Normal">Выполните команду: </li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">helm&nbsp;upgrade&nbsp;--install&nbsp;elma365-dbs&nbsp;./elma365-dbs&nbsp;-f&nbsp;values-dbs.yaml&nbsp;[-n&nbsp;namespace]</span></p>
<p class="p_Normal">Обратите внимание, аргументы в квадратных скобках опциональны. Если вы используете такой аргумент, указывайте его без скобок.</p>
<h2 class="p_Heading2"><span class="f_Heading2">Установка чарта elma365</span></h2>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Заполните переменные в файле <code><b>values-elma365.yaml</b></code>.</li><li value="2" class="p_Normal">Если необходимо восстановить дамп, перед установкой ELMA365 вы можете воспользоваться утилитой <a href="database-backup-and-recovery.html" class="topiclink">elma365-backupper</a> или выполнить скрипт <code><b>elma365db.sh</b></code> из чарта <span style="font-weight: bold;">elma365</span>.</li></ol>
<p class="p_Normal" style="text-indent: -1px; margin: 0 0 0 36px;">Пример выполнения скрипта:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">./elma365db.sh&nbsp;--restore&nbsp;--namespace&nbsp;elma365&nbsp;--path&nbsp;/backup/path/&nbsp;[--kubeconfig&nbsp;/path/to/config&nbsp;--context&nbsp;prod]</span></p>
<ol style="list-style-type:upper-roman">
<li value="3" style="line-height: 1.57; margin-top: 0; margin-right: 0; margin-bottom: 0;">Выполните установку командой: </li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">helm&nbsp;upgrade&nbsp;--install&nbsp;elma365&nbsp;./elma365&nbsp;-f&nbsp;values-elma365.yaml&nbsp;--timeout=30m&nbsp;--wait&nbsp;[-n&nbsp;namespace]</span></p>
<ol style="list-style-type:upper-roman">
<li value="4" class="p_Normal">Сохраните файл <code><b>values-elma365.yaml</b></code> для последующих обновлений.</li><li value="5" class="p_Normal">Для создания дампа можно воспользоваться утилитой <a href="database-backup-and-recovery.html" class="topiclink">elma365-backupper</a> или скриптом <code><b>elma365db.sh</b></code>.</li></ol>
<p class="p_Normal" style="text-indent: -1px; margin: 0 0 0 36px;">Пример выполнения скрипта:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">./elma365db.sh&nbsp;--dump&nbsp;--namespace&nbsp;elma365&nbsp;--path&nbsp;/backup/path/&nbsp;[--kubeconfig&nbsp;/path/to/config&nbsp;--context&nbsp;prod]</span></p>
<h2 class="p_Heading2"><span class="f_Heading2">Установка средств мониторинга (опционально)</span></h2>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Скачайте Helm-чарт дополнительного набора инструментов <span style="font-weight: bold;">addons</span> по ссылке:<span style="font-size: 15px;"> </span><a href="https://dl.elma365.com/onPremise/latest/addons-latest.tar.gz" class="weblink">https://dl.elma365.com/onPremise/latest/addons-latest.tar.gz</a>.</li><li value="2" class="p_Normal">В файле <code><b>values-addons.yaml</b></code> в блоке <code><b>grafana</b></code> и <code><b>kube-prometheus-stack</b></code> укажите требуемый <code><b>namespace</b></code> для сервиса мониторинга, например <code><b>namespaceOverride: monitoring</b></code>, и адрес, по которому будет доступен сервис мониторинга.</li><li value="3" class="p_Normal">Создайте <code><b>namespace</b></code> для сервиса мониторинга командой:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl&nbsp;create&nbsp;namespace&nbsp;monitoring</span></p>
<ol style="list-style-type:upper-roman" start="4">
<li value="4" class="p_CodeExample" style="page-break-inside: avoid;">Выполните&nbsp;установку&nbsp;чарта&nbsp;командой:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">helm&nbsp;upgrade&nbsp;--install&nbsp;addons&nbsp;./addons&nbsp;-f&nbsp;values-addons.yaml</span></p>
<ol style="list-style-type:upper-roman" start="5">
<li value="5" class="p_CodeExample" style="page-break-inside: avoid;">В&nbsp;файле&nbsp;<code><b>values-elma365.yaml</b></code>&nbsp;чарта&nbsp;<span style="font-weight: bold;">elma365</span>&nbsp;включите&nbsp;дэшборды:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">dashboard:</span><br />
<span class="f_CodeExample">enabled:</span><span class="f_CodeExample" style="font-weight: bold;">true</span></p>
<ol style="list-style-type:upper-roman" start="6">
<li value="6" class="p_CodeExample" style="page-break-inside: avoid;">Обновите&nbsp;приложение&nbsp;ELMA365&nbsp;командой<span style="font-size: 15px; color: #394149;">:</span></li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">helm&nbsp;upgrade&nbsp;elma365&nbsp;./elma365&nbsp;-f&nbsp;values-elma365.yaml&nbsp;--timeout=30m</span></p>
<h2 class="p_Heading2"><span class="f_Heading2">Установка Linkerd и автомасштабирование сервисов (опционально)</span></h2>
<p class="p_Normal" style="line-height: 1.32;"><span style="font-size: 15px; font-weight: bold; color: #394149;">Linkerd</span><span style="font-size: 15px; color: #394149;"> — это выделенный уровень инфраструктуры, который помогает обрабатывать связь между сервисами, автоматически шифровать соединения, обрабатывать повторные запросы и тайм-ауты, использовать телеметрию (коэффициент успешности, задержки) и т. д.</span></p>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal" style="line-height: 1.32;"><span style="font-size: 15px; color: #394149;">Скачайте Helm-чарт </span>дополнительного набора инструментов <span style="font-size: 15px; font-weight: bold; color: #394149;">addons</span><span style="font-size: 15px; color: #394149;"> по ссылке: </span><a href="https://dl.elma365.com/onPremise/latest/addons-latest.tar.gz" class="weblink">https://dl.elma365.com/onPremise/latest/addons-latest.tar.gz</a><span style="font-size: 15px; color: #394149;">.</span></li><li value="2" class="p_Normal" style="line-height: 1.32;"><span style="font-size: 15px; color: #394149;">Сгенерируйте сертификаты с помощью </span><code><b>openssl</b></code><span style="font-size: 15px; color: #394149;">, выполнив команды ниже. Linkerd требует сертификат привязки доверия и сертификаты эмитента с соответствующим ключом для поддержки взаимных TLS-соединений между сервисами, для всех сертификатов требуется алгоритм ECDSA P-256.</span></li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">#&nbsp;Создать&nbsp;закрытый&nbsp;ключ&nbsp;CA</span><br />
<span class="f_CodeExample">openssl&nbsp;ecparam&nbsp;-name&nbsp;prime256v1&nbsp;-genkey&nbsp;-noout&nbsp;-out&nbsp;ca-</span><span class="f_CodeExample" style="font-weight: bold;">private</span><span class="f_CodeExample">.pem</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">#&nbsp;Создать&nbsp;открытый&nbsp;ключ&nbsp;CA</span><br />
<span class="f_CodeExample">openssl&nbsp;ec&nbsp;-</span><span class="f_CodeExample" style="font-weight: bold;">in</span><span class="f_CodeExample">&nbsp;ca-</span><span class="f_CodeExample" style="font-weight: bold;">private</span><span class="f_CodeExample">.pem&nbsp;-pubout&nbsp;-out&nbsp;ca-</span><span class="f_CodeExample" style="font-weight: bold;">public</span><span class="f_CodeExample">.pem</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">#&nbsp;Создать&nbsp;самоподписанный&nbsp;сертификат&nbsp;CA</span><br />
<span class="f_CodeExample">openssl&nbsp;req&nbsp;-x509&nbsp;-</span><span class="f_CodeExample" style="font-weight: bold;">new</span><span class="f_CodeExample">&nbsp;-key&nbsp;ca-</span><span class="f_CodeExample" style="font-weight: bold;">private</span><span class="f_CodeExample">.pem&nbsp;-days&nbsp;365&nbsp;-out&nbsp;ca.crt&nbsp;-subj&nbsp;&quot;/CN=root.linkerd.cluster.local&quot;</span><br />
<span class="f_CodeExample">#&nbsp;Создать&nbsp;закрытый&nbsp;ключ&nbsp;эмитента</span><br />
<span class="f_CodeExample">openssl&nbsp;ecparam&nbsp;-name&nbsp;prime256v1&nbsp;-genkey&nbsp;-noout&nbsp;-out&nbsp;issuer-</span><span class="f_CodeExample" style="font-weight: bold;">private</span><span class="f_CodeExample">.pem</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">#&nbsp;Создать&nbsp;открытый&nbsp;ключ&nbsp;эмитента</span><br />
<span class="f_CodeExample">openssl&nbsp;ec&nbsp;-</span><span class="f_CodeExample" style="font-weight: bold;">in</span><span class="f_CodeExample">&nbsp;issuer-</span><span class="f_CodeExample" style="font-weight: bold;">private</span><span class="f_CodeExample">.pem&nbsp;-pubout&nbsp;-out&nbsp;issuer-</span><span class="f_CodeExample" style="font-weight: bold;">public</span><span class="f_CodeExample">.pem</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">#&nbsp;Создать&nbsp;запрос&nbsp;на&nbsp;подпись&nbsp;сертификата</span><br />
<span class="f_CodeExample">openssl&nbsp;req&nbsp;-</span><span class="f_CodeExample" style="font-weight: bold;">new</span><span class="f_CodeExample">&nbsp;-key&nbsp;issuer-</span><span class="f_CodeExample" style="font-weight: bold;">private</span><span class="f_CodeExample">.pem&nbsp;-out&nbsp;issuer.csr&nbsp;-subj&nbsp;&quot;/CN=identity.linkerd.cluster.local&quot;&nbsp;-addext&nbsp;basicConstraints=critical,CA:TRUE</span><br />
<span class="f_CodeExample">&nbsp;</span><br />
<span class="f_CodeExample">#&nbsp;Создать&nbsp;сертификат&nbsp;эмитента,&nbsp;подписав&nbsp;запрос</span><br />
<span class="f_CodeExample">openssl&nbsp;x509&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;-extfile&nbsp;/etc/ssl/openssl.cnf&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;-extensions&nbsp;v3_ca&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;-req&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;-</span><span class="f_CodeExample" style="font-weight: bold;">in</span><span class="f_CodeExample">&nbsp;issuer.csr&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;-days&nbsp;180&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;-CA&nbsp;ca.crt&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;-CAkey&nbsp;ca-</span><span class="f_CodeExample" style="font-weight: bold;">private</span><span class="f_CodeExample">.pem&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;-CAcreateserial&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;-extensions&nbsp;v3_ca&nbsp;\</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;-out&nbsp;issuer.crt</span><br />
<span class="f_CodeExample">#&nbsp;Удалить&nbsp;запрос&nbsp;на&nbsp;подпись&nbsp;сертификата</span><br />
<span class="f_CodeExample">rm&nbsp;issuer.csr</span></p>
<ol style="list-style-type:upper-roman" start="3">
<li value="3" class="p_CodeExample" style="page-break-inside: avoid;"><span style="font-size: 15px; color: #394149;">Включить&nbsp;параметр&nbsp;</span><code><b>linkerd2</b></code><span style="font-size: 15px; color: #394149;">&nbsp;в&nbsp;файле&nbsp;</span><code><b>values-addons.yaml</b></code><span style="font-size: 15px; color: #394149;">&nbsp;чарта&nbsp;</span><span style="font-size: 15px; font-weight: bold; color: #394149;">addons</span><span style="font-size: 15px; color: #394149;">:</span></li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">linkerd2:</span><br />
<span class="f_CodeExample"> &nbsp;enabled:</span><span class="f_CodeExample" style="font-weight: bold;">true</span></p>
<ol style="list-style-type:upper-roman" start="4">
<li value="4" class="p_Normal">В разделе <code><b>linkerd2</b></code> укажите требуемый <code><b>namespace</b></code> для сервиса Linkerd (например, <code><b>namespace: linkerd</b></code>) и содержимое сертификатов, ключа и срок действия сертификата <code><b>crtExpiry</b></code>. Обратите внимание, значение должно соответствовать дате истечения срока действия сертификата эмитента.</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">identityTrustAnchorsPEM:&nbsp;|</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;-----BEGIN&nbsp;CERTIFICATE-----</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;содержимое&nbsp;сертификата&nbsp;ca.crt</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;-----END&nbsp;CERTIFICATE-----</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;identity:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;issuer:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;crtExpiry:&nbsp;2023-03-30T05:28:39Z</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tls:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;crtPEM:&nbsp;|</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----BEGIN&nbsp;CERTIFICATE-----</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;содержимое&nbsp;сертификата&nbsp;issuer.crt</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----END&nbsp;CERTIFICATE-----</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyPEM:&nbsp;|</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----BEGIN&nbsp;EC&nbsp;PRIVATE&nbsp;KEY-----</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;содержимое&nbsp;сертификата&nbsp;issuer-</span><span class="f_CodeExample" style="font-weight: bold;">private</span><span class="f_CodeExample">.pem</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-----END&nbsp;EC&nbsp;PRIVATE&nbsp;KEY-----</span></p>
<ol style="list-style-type:upper-roman" start="5">
<li value="5" class="p_CodeExample" style="page-break-inside: avoid;"><span style="font-size: 15px; color: #394149;">Выполните&nbsp;установку&nbsp;чарта&nbsp;командой:</span></li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">helm&nbsp;upgrade&nbsp;--install&nbsp;addons&nbsp;./addons&nbsp;-f&nbsp;values-addons.yaml</span></p>
<ol style="list-style-type:upper-roman" start="6">
<li value="6" class="p_Normal">Добавьте аннотацию на <code><b>namespace</b></code> с приложением ELMA365 для автоматической инъекции контейнеров <span style="font-weight: bold;">Linkerd-proxy</span> в сервисы ELMA365 командой:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl&nbsp;annotate&nbsp;namespace&nbsp;default&nbsp;linkerd.io/inject=enabled</span></p>
<ol style="list-style-type:upper-roman" start="7">
<li value="7" class="p_Normal">Включить автомасштабирование сервисов параметром <code><b>autoscaling</b></code> в файле <code><b>values-elma365.yaml</b></code> через <span style="font-weight: bold;">elma365</span>:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">autoscaling:</span><br />
<span class="f_CodeExample">&nbsp;&nbsp;&nbsp;&nbsp;enabled:</span><span class="f_CodeExample" style="font-weight: bold;">true</span></p>
<ol style="list-style-type:upper-roman" start="8">
<li value="8" class="p_CodeExample" style="page-break-inside: avoid;"><span style="font-size: 15px; color: #394149;">Обновите&nbsp;приложение&nbsp;ELMA365&nbsp;командой:</span></li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">helm&nbsp;upgrade&nbsp;elma365&nbsp;./elma365&nbsp;-f&nbsp;values-elma365.yaml&nbsp;--timeout=30m</span></p>
<ol style="list-style-type:upper-roman" start="9">
<li value="9" class="p_Normal">Перезапустите все сервисы командой:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl&nbsp;rollout&nbsp;restart&nbsp;deploy&nbsp;[-n&nbsp;namespace]&nbsp;&amp;&amp;&nbsp;kubectl&nbsp;rollout&nbsp;restart&nbsp;ds&nbsp;[-n&nbsp;namespace]</span></p>
<h2 class="p_Heading2"><span class="f_Heading2">Установка NodeLocal DNS Cache (опционально)</span></h2>
<p class="p_Normal">Установка <code><b>NodeLocal DNS Cache</b></code> позволяет снизить нагрузку по DNS-запросам в кластере Kubernetes и повысить стабильность преобразования DNS-имён. Это позволит избежать правил DNAT, connection tracking и ограничений по количеству соединений.</p>
<p class="p_Normal">Для установки: </p>
<ol style="list-style-type:upper-roman">
<li value="1" class="p_Normal">Скачайте Helm-чарт дополнительного набора инструментов <span style="font-weight: bold;">addons</span> по ссылке: <a href="https://dl.elma365.com/onPremise/latest/addons-latest.tar.gz" class="weblink">https://dl.elma365.com/onPremise/latest/addons-latest.tar.gz</a>.</li><li value="2" class="p_Normal">Получите IP-адрес сервиса kube-dns:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl&nbsp;get&nbsp;svc&nbsp;kube-dns&nbsp;-n&nbsp;kube-system&nbsp;-o&nbsp;jsonpath={.spec.clusterIP}</span></p>
<ol style="list-style-type:upper-roman" start="3">
<li value="3" class="p_Normal">В чарте <span style="font-weight: bold;">addons</span> в файле <code><b>values-addons.yaml</b></code> в блоке <code><b>node-local-dns</b></code> настройте следующие параметры:</li></ol>
<ul style="list-style-type:disc">
<li class="p_Normal"><code><b>pillar_dns_domain</b></code> — домен кластера;</li><li class="p_Normal"><code><b>pillar_dns_server</b></code> — IP-адрес сервиса kube-dns;</li><li class="p_Normal"><code><b>pillar_local_dns</b></code> — локальный IP-адрес для NodeLocal DNS Cache. </li></ul>
<ol style="list-style-type:upper-roman" start="4">
<li value="4" class="p_Normal">Выполните установку чарта командой:</li></ol>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">helm&nbsp;upgrade&nbsp;--install&nbsp;addons&nbsp;./addons&nbsp;-f&nbsp;values-addons.yaml</span></p>
<h2 class="p_Heading2"><span class="f_Heading2">Обновление версии ELMA365</span></h2>
<p class="p_Normal">В новом чарте замените файл <code><b>values-elma365.yaml</b></code> файлом, сохранённым на этапе установки, а затем выполните команду: </p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">helm&nbsp;upgrade&nbsp;--install&nbsp;elma365&nbsp;./elma365&nbsp;-f&nbsp;values-elma365.yaml&nbsp;--timeout=30m&nbsp;--wait&nbsp;[-n&nbsp;namespace]</span></p>
<p class="p_Normal">В случае изменения строк подключения (<span style="font-weight: bold;">сonnection strings</span>) к БД при обновлении приложения перезапустите все сервисы командой: </p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl&nbsp;rollout&nbsp;restart&nbsp;deploy&nbsp;[-n&nbsp;namespace]&nbsp;&amp;&amp;&nbsp;kubectl&nbsp;rollout&nbsp;restart&nbsp;ds&nbsp;[-n&nbsp;namespace]</span></p>
<h2 class="p_Heading2"><span class="f_Heading2">Удаление</span></h2>
<p class="p_Normal">Для удаления чартов выполните команды:</p>
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">helm&nbsp;uninstall&nbsp;elma365&nbsp;[-n&nbsp;namespace]</span><br />
<span class="f_CodeExample">helm&nbsp;uninstall&nbsp;elma365-dbs&nbsp;[-n&nbsp;namespace]&nbsp;</span></p>
<div class="bottom-nav">
<a id="prev-link" class="topic__navi_prev" href="elma365-stack.html">
<span class="bottom-nav__arrow bottom-nav__arrow--prev"></span> <span
class="bottom-nav__link">elma365-stack.html</span>
</a>
<a id="next-link" class="topic__navi_next" href="kubernetes-air-gap.html">
<span class="bottom-nav__link">kubernetes-air-gap.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">&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>
</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>
</body>
</html>