Установка AppSec.Code в Kubernetes¶
Документ описывает базовый порядок установки AppSec.Code в кластер Kubernetes с помощью Helm Chart.
Переменные установки¶
Во всех приведенных ниже командах установки задайте свои актуальные значения для следующих переменных:
export KUBECONFIG_PATH="<PATH_TO_KUBECONFIG>"
export NAMESPACE="<TARGET_NAMESPACE>"
export RELEASE_NAME="<HELM_RELEASE_NAME>"
export DOMAIN="<BASE_DOMAIN>"
export TLS_SECRET_NAME="<TLS_SECRET_NAME>"
export CHART_VERSION="<CHART_VERSION>"
Необходимые условия для установки¶
Для установки должны быть доступны:
- Инструмент командной строки
kubectl. - Менеджер пакетов Helm.
- Доступ к целевому кластеру Kubernetes.
- Доступ к OCI registry
registry.appsec.global. - Подготовленный под свою среду файл values.yaml или набор параметров для передачи через
--set. - TLS-сертификат для доменов инсталляции, если используется HTTPS через Ingress.
Перед установкой проверьте, что в файле values.yaml или в CLI-параметрах заданы:
global.registrykey.- Домены и Ingress-настройки.
- Имя TLS-секрета.
- Необходимые теги образов для компонентов, если они переопределяются отдельно.
Загрузка Helm-чарта AppSec.Code¶
-
Войдите в OCI-совместимый Helm приватный реестр
registry.appsec.global: -
Скачайте нужную версию AppSec.Code Helm-чарт:
-
После загрузки перейдите в директорию распакованного Helm-чарта или используйте локальную директорию с чартом.
Создание пространства имен¶
Создайте новое пространство имен с помощью команды:
Создание TLS secret¶
-
Создайте TLS secret
kubernetes.io/tlsв целевом пространстве имен: -
Примените созданный TLS secret:
Установка Helm-чарта¶
Вариант 1. Установка с подготовленным values.yaml¶
Установите или обновите релиз AppSec.Code, выполнив приведенную ниже команду.
Если Helm-чарт лежит не в директории ./appsec-code, замените в команде значение ./appsec-code на актуальное.
```bash
helm --kubeconfig "$KUBECONFIG_PATH" \
upgrade --install "$RELEASE_NAME" ./appsec-code \
-n "$NAMESPACE" \
--create-namespace \
--wait \
--timeout 15m
```
Вариант 2. Установка со стандартным values.yaml и переопределением через --set¶
Существует способ установки, при котором не требуется отдельно изменять файл values.yaml, а обязательные параметры можно передать непосредственно в команде установки.
В этом случае команду установки необходимо запускать из директории, где расположен Helm-чарт.
helm --kubeconfig "$KUBECONFIG_PATH" \
upgrade --install "$RELEASE_NAME" . \
-n "$NAMESPACE" \
--set global.registrykey=<BASE64_DOCKERCONFIGJSON> \
--set global.hosts.domain="$DOMAIN" \
--set global.hosts.gitlab.name="<GITLAB_HOSTNAME>" \
--set global.hosts.minio.name="<MINIO_HOSTNAME>" \
--set global.hosts.registry.name="<REGISTRY_HOSTNAME>" \
--set global.hosts.kas.name="<KAS_HOSTNAME>" \
--set global.ingress.class="<INGRESS_CLASS>" \
--set global.ingress.tls.secretName="$TLS_SECRET_NAME"
Отслеживание статуса после запуска развертывания¶
После запуска развертывания ориентируйтесь в первую очередь на логи пода migrations.
Команда просмотра логов:
kubectl --kubeconfig "$KUBECONFIG_PATH" \
logs -n "$NAMESPACE" "$(kubectl --kubeconfig "$KUBECONFIG_PATH" get pods -n "$NAMESPACE" --no-headers | awk '/migrations/ {print $1; exit}')"
Выполнение миграций¶
Если логи содержат записи следующего вида:
NOTICE: There are 1880 pending migrations.
Checking database migrations are up-to-date
Performing migrations (this will initialized if needed)
Running db:schema:load rake task
это означает, что установка идёт нормально и миграции уже выполняются. На этом этапе обычно следует просто подождать около 5-10 минут.
Окончание миграций¶
Если логи содержат записи следующего вида:
OK
== Seeding took 7.89 seconds
Running gitlab:clickhouse:migrate:main rake task
Performing custom instance setup
Registering OAuth applications.
это означает, что основная часть миграций завершилась. После этого вскоре начнут подниматься оставшиеся поды, и можно будет получить логин и пароль администратора.
Получение логина и пароля root¶
После завершения миграций получить учётные данные root можно командой:
kubectl --kubeconfig "$KUBECONFIG_PATH" \
logs -n "$NAMESPACE" "$(kubectl --kubeconfig "$KUBECONFIG_PATH" get pods -n "$NAMESPACE" --no-headers | awk '/migrations/ {print $1; exit}')" \
| awk '/login:|password:/'
Если нужен только пароль, используйте следующую команду: