Закрома.Хранение использует следующие компоненты, которые должны быть установлены в кластере до установки сервисов Закрома:
Ссылка на artifacthub.io
Прямая ссылка на helm chart.
После скачивания, распаковываем и переходим в папку с chart-ом Выполняем команды:
kubectl create namespace ingress-nginx
helm install ingress-nginx . -n ngress-nginx
Ссылка на artifacthub.io
Прямая ссылка на helm chart.
После скачивания, распаковываем и переходим в папку с chart-ом Выполняем команды:
kubectl create namespace certmanager
helm install certmanager-cert-manager . -n certmanager
Если используете новый проект то необходимо в файле values.yaml изменить две переменные startupapicheck.timeout=5m и installCRDs=true иначе при установке cert-manager создается job с именем certmanager-cert-manager-startupapicheck и его логах присутствует ошибка Not ready: the cert-manager webhook deployment is not ready yet Not ready: the cert-manager webhook deployment is not ready yet Not ready: the cert-manager webhook deployment is not ready yet Not ready: the cert-manager webhook deployment is not ready yet Обсуждение проблемы тут.
Создаем подписанта, в нем необходимо указать валидный почтовый ящик ( файл в проекте ) Выполняем команды:
vim acme-issuer.yaml
kubectl apply -f acme-issuer.yaml
Ссылка на artifacthub.io
Прямая ссылка на helm chart.
После скачивания, распаковываем и переходим в папку с chart-ом
Создаем Динамический PVC ( файл в проекте ) , Яндекс автоматом выделит диск при подключении к PVC так что PV и класс создавать не надо. Выполняем команды:
vim pvc-PQSL.yaml
kubectl apply -f pvc-PQSL.yaml
Создаем value-PQSL ( файл в проекте ) для настройки postgresql и устанавливаем postgresql Выполняем команды: vim value-PQSL.yaml
helm install postgresql -f value-PQSL.yaml . -n postgresql
Ссылка на artifacthub.io.
Прямая ссылка на helm chart.
После скачивания, распаковываем и переходим в папку с chart-ом
Создаем файл настройки для keycloak с указанием внешней бд и паролями для доступа к интерфейсу Выполняем команды:
vim keycloak-vars.yaml
kubectl create namespace keycloak
helm install keycloak -f keycloak-vars.yaml . -n keycloak
Создаем ingress для keycloak в котором указываем свои пути согласно DNS записям ( файл в проекте ) Выполняем команды:
vim ingress-keycloak.yaml
kubectl apply -f ingress-keycloak.yaml
Ссылка на artifacthub.io
https://artifacthub.io/packages/helm/helm-openldap/openldap
Прямая ссылка на helm chart
https://jp-gouin.github.io/helm-openldap/openldap-2.0.4.tgz
Устанавливаем openldap c секретом и конфиг файлом values-openldap.yaml
Выполняем команды из папки с проектом openldap:
helm repo add helm-openldap https://jp-gouin.github.io/helm-openldap/
helm repo update
kubectl create namespace openldap
kubectl apply -f secret-passwords.yml
helm upgrade --install openldap -n openldap -f values-openldap.yaml .
Теперь необходимо настроить openldap, для этого необходим дополнительный интрументарий,
в данном случае использовался Lens + Apache directory studio
Через Lens создаем проброс порта 389 из пода с openldap на локальную машину
далее подключаемся через Apache directory studio и создаем новое подключение с указанием данных из openldap Apache directory
вкладка сетевые параметры
localhost port:389
вкладка Аутентификация
Bind DN or user: cn=admin,dc=demo,dc=zakroma,dc=ru
Bind password внутри секрета openldap-passwd в неймспейсе openldap
Далее нужно создать схему дерева с ou и вложенными cn структура, наша структура будет находится
в файле tree.ldif в папке с проектом и ее можно просто импортировать, но можно и создать руками
version: 1
dn: dc=demo,dc=zakroma,dc=ru
objectClass: dcObject
objectClass: organization
objectClass: top
dc: demo
o: Spiritcloud
dn: ou=users,dc=demo,dc=zakroma,dc=ru
objectClass: organizationalUnit
objectClass: top
ou: users
dn: ou=groups,dc=demo,dc=zakroma,dc=ru
objectClass: organizationalUnit
objectClass: top
ou: groups
dn: cn=zakromaadmin,ou=users,dc=demo,dc=zakroma,dc=ru
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: zakromaadmin
sn: zakromaadmin
userPassword:: QWRtaW4xMjM0NQ==
dn: cn=cloudadmin,ou=groups,dc=demo,dc=zakroma,dc=ru
objectClass: groupOfUniqueNames
objectClass: top
cn: cloudadmin
uniqueMember: cn=zakromaadmin,ou=users,dc=demo,dc=zakroma,dc=ru
dn: cn=zakromauser,ou=users,dc=demo,dc=zakroma,dc=ru
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: zakromauser
sn: zakromaadmin
userPassword:: QWRtaW4xMjM0NQ==
dn: cn=clouduser,ou=groups,dc=demo,dc=zakroma,dc=ru
objectClass: groupOfUniqueNames
objectClass: top
cn: clouduser
uniqueMember: cn=zakromaadmin,ou=users,dc=demo,dc=zakroma,dc=ru
uniqueMember: cn=zakromauser,ou=users,dc=demo,dc=zakroma,dc=ru
dn: cn=doclibadmin,ou=groups,dc=demo,dc=zakroma,dc=ru
objectClass: groupOfUniqueNames
objectClass: top
cn: doclibadmin
uniqueMember: cn=zakromaadmin,ou=users,dc=demo,dc=zakroma,dc=ru
dn: cn=doclibuser,ou=groups,dc=demo,dc=zakroma,dc=ru
objectClass: groupOfUniqueNames
objectClass: top
cn: doclibuser
uniqueMember: cn=zakromaadmin,ou=users,dc=demo,dc=zakroma,dc=ru
uniqueMember: cn=zakromauser,ou=users,dc=demo,dc=zakroma,dc=ru
Ссылка на artifacthub.io
Прямая ссылка на helm chart.
После скачивания, распаковываем и переходим в папку с chart-ом, выполняем команды:
kubectl create namespace monitoring
helm install prometheus . -n monitoring
Создаем ingress для grafana в котором указываем свои пути согласно DNS записям (файл в проекте). Выполняем команды:
vim ingress-grafana.yaml
kubectl apply -f ingress-grafana.yaml
Если необходимо меняем пароль, по умолчанию он после установки: UserName: admin
Password: prom-operator
Хранится он в кластер > конфигурация > секреты >prometheus-grafana
в виде base64.
Меняем или через редактирование секрета напрямую Выполняем команду:
kubectl edit secrets prometheus-grafana -n monitoring
Или можно через браузер.
Ссылка на artifacthub.io. Прямая ссылка на helm chart После скачивания, распаковываем и переходим в папку с chart-ом Выполняем команду:
kubectl create namespace elk
Для вкл безопасности необходимо создать ключи в секретах ( если необходимо )
Выполняем команду:
kubectl create secret generic secret-basic-auth -n elk --from-literal=password=xxxxxx --from-literal=username=xxxxxxx
Для обхода блокировки от elastic в файле values.yaml ищем ключ images и imageTag и меняем их значение на докер файл из локального репозитория или nexus image: "xxxxxxxxxxx" imageTag: "7.17.3"
там же добавляем переменные из секретов и вкл xpack ( если необходима безопасность):
esConfig:
elasticsearch.yml: |
xpack.security.enabled: true
extraEnvs:
- name: ELASTIC_PASSWORD
valueFrom:
secretKeyRef:
name: secret-basic-auth
key: password
- name: ELASTIC_USERNAME
valueFrom:
secretKeyRef:
name: secret-basic-auth
key: username
Устанавливаем elastic Выполняем команду:
Ссылка на artifacthub.io
Прямая ссылка на helm chart
После скачивания, распаковываем и переходим в папку с chart-ом.
Для обхода блокировки от elastic в файле values.yaml ищем ключ images и imageTag и меняем их значение на докер файл из локального репозитория или nexus image: "xxxxxxxxxxxxx" imageTag: "7.17.3"
там же добавляем переменные из секретов ( если необходима безопасность )
extraEnvs:
- name: "NODE_OPTIONS"
value: "--max-old-space-size=1800"
- name: 'ELASTICSEARCH_USERNAME'
valueFrom:
secretKeyRef:
name: secret-basic-auth
key: username
- name: 'ELASTICSEARCH_PASSWORD'
valueFrom:
secretKeyRef:
name: secret-basic-auth
key: password
Ставим kibana Выполняем команду:
helm install kibana . -n elk
Создаем ingress для kibana в котором указываем свои пути согласно DNS записям ( файл в проекте ) Выполняем команды:
vim ingress-kibana.yaml
kubectl apply -f ingress-kibana.yaml
Ссылка на artifacthub.io
Прямая ссылка на helm chart.
После скачивания, распаковываем и переходим в папку с chart-ом Выполняем команду:
kubectl create namespace logging
В файле values.yaml ищем ключ image:tag и ставим его в версию 1.9.8 как в исходном проекте tag: "1.9.8"
Если при установке elastic мы включали безопасность, то необходимо настроить output, что бы можно было коннектиться к эластики добавляем в файл values.yaml эти строки HTTP_User xxxx HTTP_Passwd xxxxxxx должно быть так:
[OUTPUT]
Name es
Match kube.*
Host elasticsearch-master.elk.svc.cluster.local
HTTP_User xxxxxx
HTTP_Passwd xxxxxxx
Logstash_Format On
Generate_ID On
Write_Operation upsert
Retry_Limit False
Trace_Error on
Replace_Dots On_
[OUTPUT]
Name es
Match host.*
Host elasticsearch-master.elk.svc.cluster.local
HTTP_User xxxxxx
HTTP_Passwd xxxxxx
Logstash_Format On
Logstash_Prefix node
Write_Operation upsert
Generate_ID On
Retry_Limit False
Trace_Error on
Replace_Dots On
Ставим fluent-bit командой:
helm install fluent-bit . -n logging