Рубрики
Uncategorized

Установка gitlab на Kubernetes с Kustomize

Введение в этой статье я опишу все шаги, необходимые для настройки Gitlab CI/CD … Помечено учебником, DevOps, Kubernetes, Gitlab.

Вступление

В этой статье я опишу все шаги, необходимые для настройки Gitlab CI/CD в Kuberntes с использованием Kustomize. Мы рассмотрим, как запустить Gitlab на Kubernetes, когда у вас есть связанные ресурсы Postgres , Redis , minio , Сертификаты TLS и т. Д. Уже доступна в вашей настройке.

Это очень распространенный сценарий в компаниях, а также для самостоятельного ведения, который у вас уже есть эти услуги в вашей среде, и предпочитаете использовать их для Gitlab.

Все в одной производственной установке может быть легко выполнена с помощью русла. Вы можете обратиться к официальной документации от Gitlab, если это ваше требование.

Требования

Вам понадобится следующее, чтобы запустить Gitlab.

  1. База данных: база данных Postgres требуется для Gitlab.
  2. Кэш: Redis используется для кэширования.
  3. Хранение: Minio используется в качестве хранилища объектов для Реестр контейнеров , Gitlab Backups , Бэкэнд хранения Terraform , Гитлаб артефакты и т. д.
  4. Контроллер Ingress: Nginx Ingress является частью установки.
  5. Постоянный том: Gitaly будет хранить Данные хранилища Данные на диске, для этого ваш кластер Kubernetes должен иметь способ предоставления хранения. Вы можете установить Местный путь, проводник в вашем кластере для динамически предоставляющих объемов.

Информация: Вы можете поменять Minio на любые другие хранилища объектов, то есть S3, изменяя информацию об подключении

Давайте начнем

При установке Gitlab Helm он генерирует ConfigMaps после рендеринга шаблонов с параметрами, мы можем вручную изменить эти значения в ConfigMaps, но это хлопотно и не удобно.

Чтобы облегчить этот процесс, мы будем использовать инструмент под названием субвары который позволит нам отображать значения, определенные как шаблоны GO из командной строки. Установите его, следуя инструкциям на GitHub Страница, мы будем использовать его позже.

  1. Загрузите релиз с манифестами из GitHub В качестве альтернативы вы можете клонировать репо, если вы клонируете репо Удалить .git Папка впоследствии, так как она создает проблемы несколько раз, когда рендеринг нескольких версий одного и того же файла с помощью субваров.
export RELEASE_VER=1.0
wget -q https://github.com/kha7iq/gitlab-k8s/archive/refs/tags/v${RELEASE_VER}.tar.gz
tar -xf v${RELEASE_VER}.tar.gz
cd gitlab-k8s-${RELEASE_VER}
  1. Давайте начнем с установки URL для Gitlab в нашем Файл Кустомизации В папке Ingress-Nginx. Вы найдете два блока, один для Web-UI и второй для реестра вместе с TLS-Secret-Name для HTTPS.
patch: |-
    - op: replace
      path: /spec/rules/0/host
      value: your-gitlab-url.example.com
    - op: replace
      path: /spec/tls/0/hosts/0
      value: your-gitlab-url.example.com
    - op: replace
      path: /spec/tls/0/secretName
      value: example-com-wildcard-secret
  1. Мы можем создать Minio-Conn-Secret Содержит конфигурацию для Minio. Он будет использоваться для всех включенных ведер S3, кроме резервных копий Gitlab, мы создадим это отдельно. Введите информацию в соответствии с вашей настройкой и создайте секрет Kubernetes.
  • minio.config
cat << EOF > minio.config
provider: AWS
region: us-east-1
aws_access_key_id: 4wsd6c468c0974006d
aws_secret_access_key: 5d5e6c468c0974006cdb41bc4ac2ba0d
aws_signature_version: 4
host: minio.example.com
endpoint: "https://minio.example.com"
path_style: true
EOF
  • Kubernetes Secret
kubectl create secret generic minio-conn-secret \
--from-file=connection=minio.config --dry-run=client -o yaml >minio-connection-secret.yml
  1. Следующим шагом является создание секрета с конфигурацией Mino для резервного хранилища Gitlab. Просто замените Minio Endpoint, Bucket Name, AccessKey и Secret Key.
cat << EOF > storage.config
[default]
access_key = be59435b326e8b0eaa
secret_key = 6e0a10bd2253910e1657a21fd1690088
bucket_location = us-east-1
host_base = https://minio.example.com
host_bucket = https://minio.example.com/gitlab-backups
use_https = True
default_mime_type = binary/octet-stream
enable_multipart = True
multipart_max_chunks = 10000
multipart_chunk_size_mb = 128
recursive = True
recv_chunk = 65536
send_chunk = 65536
server_side_encryption = False
signature_v2 = True
socket_timeout = 300
use_mime_magic = False
verbosity = WARNING
website_endpoint = https://minio.example.com
EOF
kubectl create secret generic storage-config --from-file=config=storage.config \
--dry-run=client -o yaml > secrets/storage-config.yml

Все остальные секреты могут быть использованы, как из репозитория, или вы можете изменить их все следующие Документация Gitlab

  1. Один из самых важных секретов — gitlab-rails-secret В случае катастрофы, когда вы должны восстановить Gitlab из резервного копирования, вы должны применить тот же секрет в своем кластере, что и эти ключи, будут использоваться для расшифровки базы данных и т. Д. из резервного копирования. Убедитесь, что вы сохраняете это согласованным после первой установки.

  2. Мы достигли последней части, его много работы по изменению базы данных и другим параметрам один за другим в ConfigMaps. Я реализовал некоторые шаблоны для этого, мы можем предоставить все значения с помощью переменных среды и отображать манифесты с помощью подводов, она выведет их в папку назначения и заменит все параметры, определенные как шаблоны GO.

Переменные являются самостоятельными, Gitlab_gitaly_storage_size Переменная используется для указания того, сколько хранилища необходимо для Gitaly и Gitlab_storage_class это название класса хранения.

GITLAB_URL=gitlab.example.com \
GITLAB_REGISTRY_URL=registry.example.com \
GITLAB_PAGES_URL=pages.example.com \
GITLAB_POSTGRES_HOST=192.168.1.90 \
GITLAB_POSTGRES_PORT=5432 \
GITLAB_POSTGRES_USER=gitlab \
GITLAB_POSTGRES_DB_NAME=gitlabhq_production \
GITLAB_REDIS_HOST=192.168.1.91:6379 \
GITLAB_GITALY_STORAGE_SIZE=15Gi \
GITLAB_STORAGE_CLASS=local-path \
subvars dir --input gitlab-k8s-1.0 --out dirName

Изменить в Dirname/Gitlab-K8S-1.0 Вы можете попробовать подтвердить, если все в порядке, прежде чем применять это в кластере.

  1. Последний шаг — создать пространство имен gitlab и построить с Kustomize или Kubectl. Я предпочитаю Kustomize, но вы также можете использовать kubectl с -K флаг.
  • Создать пространство имен
kubectl create namespace gitlab
  • Применить последний манифест
kustomize build gitlab-k8s-1.0/ | kubectl apply -f -
# or following if you have already changed into directory
kustomize build . | kubectl apply -f -

# With kubectl
kubectl apply -k  gitlab-k8s-1.0/
# or following if you have already changed into directory
kubectl apply -k  .
  1. Перейдите к конечной точке, которую вы настроили для Gitlab https://gitlab.example.com и войти в систему.
  • Информация: Пароли по умолчанию
    • Пароль пользователя gitlab ‘root’
   LAwGTzCebner4Kvd23UMGEOFoGAgEHYDszrsSPfAp6lCW15S4fbvrVrubWsua9PI
  • Пароль Postgres настроен как секрет
    ZDVhZDgxNWY2NmMzODAwMTliYjdkYjQxNWEwY2UwZGMK

Оригинал: «https://dev.to/kha7iq/installing-gitlab-on-kubernetes-with-kustomize-3ee6»