Продолжение приключений в лабе.
В общем, столкнулся с такой бедой, что 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)
Отсюда и проблема, дериктивы ssl_certificate и ssl_certificate_key - почему-то не зарешали. Смысл в том, что файлы сертификата и ключа имели другое имя. В общем, после того, как это поправил - всё взлетело.
Комментариев нет:
Отправить комментарий
Уважаемый коллега, Ваш комментарий пройдёт модерацию, чтобы избежать спам-атак в ленте. Спасибо за понимание.