Вступление
В этой статье я опишу все шаги, необходимые для настройки Gitlab CI/CD в Kuberntes с использованием Kustomize. Мы рассмотрим, как запустить Gitlab на Kubernetes, когда у вас есть связанные ресурсы Postgres
, Redis
, minio
, Сертификаты TLS
и т. Д. Уже доступна в вашей настройке.
Это очень распространенный сценарий в компаниях, а также для самостоятельного ведения, который у вас уже есть эти услуги в вашей среде, и предпочитаете использовать их для Gitlab.
Все в одной производственной установке может быть легко выполнена с помощью русла. Вы можете обратиться к официальной документации от Gitlab, если это ваше требование.
Требования
Вам понадобится следующее, чтобы запустить Gitlab.
- База данных: база данных Postgres требуется для Gitlab.
- Кэш: Redis используется для кэширования.
- Хранение: Minio используется в качестве хранилища объектов для
Реестр контейнеров
,Gitlab Backups
,Бэкэнд хранения Terraform
,Гитлаб артефакты
и т. д. - Контроллер Ingress: Nginx Ingress является частью установки.
- Постоянный том: Gitaly будет хранить
Данные хранилища
Данные на диске, для этого ваш кластер Kubernetes должен иметь способ предоставления хранения. Вы можете установить Местный путь, проводник в вашем кластере для динамически предоставляющих объемов.
- Репозитории
Информация: Вы можете поменять Minio на любые другие хранилища объектов, то есть S3, изменяя информацию об подключении
Давайте начнем
При установке Gitlab Helm он генерирует ConfigMaps после рендеринга шаблонов с параметрами, мы можем вручную изменить эти значения в ConfigMaps, но это хлопотно и не удобно.
Чтобы облегчить этот процесс, мы будем использовать инструмент под названием субвары который позволит нам отображать значения, определенные как шаблоны GO из командной строки. Установите его, следуя инструкциям на GitHub Страница, мы будем использовать его позже.
- Загрузите релиз с манифестами из 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}
- Давайте начнем с установки 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
- Мы можем создать
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
- Следующим шагом является создание секрета с конфигурацией 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
Один из самых важных секретов —
gitlab-rails-secret
В случае катастрофы, когда вы должны восстановить Gitlab из резервного копирования, вы должны применить тот же секрет в своем кластере, что и эти ключи, будут использоваться для расшифровки базы данных и т. Д. из резервного копирования. Убедитесь, что вы сохраняете это согласованным после первой установки.Мы достигли последней части, его много работы по изменению базы данных и другим параметрам один за другим в 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
Вы можете попробовать подтвердить, если все в порядке, прежде чем применять это в кластере.
- Последний шаг — создать пространство имен
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 .
- Перейдите к конечной точке, которую вы настроили для Gitlab
https://gitlab.example.com
и войти в систему.
- Информация: Пароли по умолчанию
- Пароль пользователя gitlab ‘root’
LAwGTzCebner4Kvd23UMGEOFoGAgEHYDszrsSPfAp6lCW15S4fbvrVrubWsua9PI
- Пароль Postgres настроен как секрет
ZDVhZDgxNWY2NmMzODAwMTliYjdkYjQxNWEwY2UwZGMK
Оригинал: «https://dev.to/kha7iq/installing-gitlab-on-kubernetes-with-kustomize-3ee6»