# On-Premises Helm

Пошагово здесь: https://elma365.com/ru/help/install-kubernetes.html

# Pods

# Удалить evicted pods

```bash
kubectl get po -A --all-namespaces -o json | jq  '.items[] | select(.status.reason!=null) | select(.status.reason | contains("Evicted")) | "kubectl delete po \(.metadata.name) -n \(.metadata.namespace)"' | xargs -n 1 bash -c
```

<p class="callout warning">Предварительно должен быть установлен jq</p>

# Полезное

# Перезапуск всех сервисов

```bash
kubectl -n default rollout restart deploy
kubectl -n default rollout restart ds
```

Если namespace отличен от по умолчанию, заменить default на свой

Более интересный вариант:

```bash
#!/usr/bin/env bash

function clearCompleted() {
    kubectl delete job $(kubectl get job -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}') > /dev/null 2>&1
}


kubectl scale deploy --replicas=0 --all

while [[ $(kubectl get pods -n default | grep -c "") -ne 0 ]]
do
  clearCompleted
  echo "Waiting for all pods are Terminating."
  sleep 15
done

kubectl scale deploy --replicas=1 --all
kubectl scale --replicas=4 deployment/worker

while true
do
  clearCompleted
  echo "Waiting for all pods are Ready."
  kubectl wait pods --all -n default --for condition=Ready --timeout=60s > /dev/null 2>&1 && break
  sleep 15
done

echo "All done."
```

# Установка порта отличного от 80

```bash
tar -xzf elma365.tar.gz elma365

sed -i -e 's/: 80/: 88/g' elma365/charts/front/templates/ingress.yaml
```

# Проверка статуса узлов кластера

```bash
etcdctl --cluster=true endpoint health
```

# Ошибка при вызове Web API

После обновления на релиз 2026.1 вариант Helm может перестать работать Web API. Чтобы решить эту проблему необходимо проверить наличие в values-elma365.yaml записи ingressClassName и если ее нет то добавить:

```yaml
  # домен или ip адрес, по которому будет доступна система
  # host: 'host.randm.ru'
  host: 'host.rmg365.ru'
  ingress:
    # включение host в ingress (значение берется из host)
    # для установленного s3 minio через чарты elma365-extensions, укажите в блоке minio 
    # значение в параметре hosts в файле values-extensions.yaml
    ingressClassName: nginx
```

<p class="callout warning">До версии 2026.1 этого не требовалось</p>

# Проблемы

# Error: Kubernetes cluster unreachable: Get https://127.0.0.1:16443

После обновления сертификатов в кубике возможна неработоспособность helm - появляется ошибка или с неверным сертификатом или что то с портом.

Необходимо обновить файл конфигурации кубика:

```bash
microk8s.kubectl config view --raw > $HOME/.kube/config
```

После этого helm должен ожить.

# Hub

# 2025.8.6+: Доступ к площадкам

Начиная с данной версии вырезано в Ingress прописывание тенантов и как следствие система перестала работать как надо.  
Чтобы это вылечить, необходимо:  
в values-elma365.yaml указать:

```yaml
global:
  host: 'myhubdomain.ru'
  ingress:
    hostEnabled: false
```

В реверс прокси для каждого адреса тенанта добавить в хидер:  
X-Company &lt;tenant&gt;  
где, &lt;tenant&gt; для конкретного названия, которое будет добавлено к полному имени &lt;tenant&gt;.myhubdomain.ru

edition: hub (solution: hub на текущий момент в природе не существует )

секцию hub прописываем как и раньше для каждого тенанта

если надо включить фишки хаб сервисов, то hubEnabled: true

# 2026.1-2026.3: Не создаются площадки

Начиная с указанной версии перестали создаваться и обновляться площадки. Это связано с некорректным значением в чарте дистрибутива. Для устранения данной проблемы необходимо создать следующий патч create-company.patch:

```diff
--- elma365/templates/create-company.yaml	2026-04-10 11:06:27.000000000 +0300
+++ ./create-company.yaml	2026-04-08 08:20:01.000000000 +0300
@@ -1,4 +1,5 @@
 {{- if eq .Values.global.solution "onPremise" }}
+{{- if or (eq .Values.global.edition "standard") (eq .Values.global.edition "enterprise") }}
 apiVersion: batch/v1
 kind: Job
 metadata:
@@ -57,7 +58,7 @@
   activeDeadlineSeconds: {{ default 1800 .Values.global.activeDeadlineSeconds }}
   ttlSecondsAfterFinished: 120
 
-{{- else if eq .Values.global.solution "hub" }}
+{{- else if eq .Values.global.edition "hub" }}
 
 {{- range $index, $job := .Values.global.hub }}
 ---
@@ -206,3 +201,4 @@
 data: {}
 
 {{- end }}
+{{- end }}
```

После чего применить его:

```bash
patch -u elma365/templates/create-company.yaml < create-company.patch
rm -f elma365/templates/create-company.yaml.orig
```

# 2026.4+: Не создаются площадки

Начиная с указанной версии перестали создаваться и обновляться площадки. Это связано с некорректным значением в чарте дистрибутива. Для устранения данной проблемы необходимо создать следующий патч create-company.patch:

```diff
--- elma365/templates/create-company.yaml	2026-05-14 14:35:38.000000000 +0300
+++ ./create-company.yaml	2026-05-17 09:53:59.345172000 +0300
@@ -1,4 +1,5 @@
 {{- if eq .Values.global.solution "onPremise" }}
+{{- if or (eq .Values.global.edition "standard") (eq .Values.global.edition "enterprise") }}
 apiVersion: batch/v1
 kind: Job
 metadata:
@@ -64,7 +65,7 @@
   activeDeadlineSeconds: {{ default 1800 .Values.global.activeDeadlineSeconds }}
   ttlSecondsAfterFinished: 120
 
-{{- else if eq .Values.global.solution "hub" }}
+{{- else if eq .Values.global.edition "hub" }}
 
 {{- range $index, $job := .Values.global.hub }}
 ---
@@ -83,9 +84,6 @@
   template:
     metadata:
       labels:
-        {{- if .Values.global.helmLibrary }}
-        {{- include "helm-library.deployment.podLabels" . | nindent 8 }}
-        {{- end }}
         app: hub
         tier: elma365
         sidecar.istio.io/inject: "false"
@@ -208,3 +206,4 @@
 data: {}
 
 {{- end }}
+{{- end }}
```

После чего применить его:

```bash
patch -u elma365/templates/create-company.yaml < create-company.patch
```