вторник, 11 марта 2025 г.

Веселье перевода GitLab на https и другие пляски

Продолжение приключений в лабе.

В общем, столкнулся с такой бедой, что k8s runner Gitlab требует наличия https и доп. ключи в командах не помогают. Подробнее можно ознакомиться тут.

"Yes, kubectl would never send credentials over a cleartext connection. --insecure-skip-tls-verify wouldn't help, it just disables TLS verification, but TLS is still required for it to send credentials."

Смысл проблемы понятен и я стал переводить лабу на https, выпустив сертификат самоподписанный для сервера GitLab и всех необходимых SAN (Subject Alternative Name).

После того, как я настроил https на сервере, естественно отвалился KAS (k8s agent server) GitLab, ибо он был настрое для http. Следом отвалилась Visual Studio Code, отказывающаяся принимать самопдписанный серт. 

Первое я починил сделав несколько приседаний с размещением сертификатов в /usr/local/shara/ca-certificates на серверах k8s и GitLab, с последующей коммандой sudo update-ca-trust. В Helm вызове обвноления развёртывания KAS необходимо было указать 

--set-file config.kasCert=/opt/<cert_name.crt> и --set config.kasAddress=wss://<gitlab.domain.ru>/-/kubernetes-agent/  (может использоваться ссылка =ws://, если мы говорим о http), внести в /etc/gitlab-runner/config.toml директиву tls-ca-file="/usr/local/shara/ca-certificates/<cert_name.crt>" в секции [[runners]]. После этого KAS позеленел (при обновлении стоит не забывать актуализировать версию агента - я про это забыл и потерял некоторое кол-во времени дополнительно, поймав рассинхрон между сервером GitLab и KAS по версиям). 

Второе же, почилилось без сложных приседаний: я нашел рекомендацию, где сказано, что надо отключить "HTTP: Proxy support", что и проделал. Детали можно посмотреть тут

Осталось починить runners, пока pipeline зависает, т.к. runners потеряли gitlab сервер.

Продолжаем-с....

P.S. А, забыл, Container Registry тоже отлетел. Не забываем менять /etc/gitlab/gitlab.rb в части registry_external_url 'https://<gitlab.domain.ru>:<port_number>', после выполнения команд из предыдущей статьи nginx упал с ошибкой.

[ladmin@k8srepo ~]$ sudo gitlab-ctl status nginx
down: nginx: 1s, normally up, want up; run: log: (pid 1077) 1717

По-умолчанию, nginx пытается открыть файл ключа и сертификата с именем, как в выводе ниже.

 [emerg] 1920#0: cannot load certificate "/etc/gitlab/ssl/<gitlab.domain.ru>.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/gitlab/ssl/<server_fqdn>.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

Детализацию получил с помощью команды  sudo gitlab-ctl tail.

Отсюда и проблема, дериктивы  ssl_certificate и ssl_certificate_key - почему-то не зарешали. Смысл в том, что файлы сертификата и ключа имели другое имя. В общем, после того, как это поправил - всё взлетело.






Комментариев нет:

Отправить комментарий

Уважаемый коллега, Ваш комментарий пройдёт модерацию, чтобы избежать спам-атак в ленте. Спасибо за понимание.