我有一个由GKE掌舵的gitlab运行程序,我已经注册了该运行程序。
当我触发管道时,流道运行失败并出现此错误
shouldComponentUpdate
我看到许多解决方案都说我可以将ssl_verify设置为false。 但是我的跑步者是由舵手安装的,我没有触摸跑步者的config.toml。 我不知道该怎么解决。请帮助我。
答案 0 :(得分:1)
您需要使用gitlab-runner的名称空间中的证书内容创建一个Kubernetes Secret。该秘密将用于填充gitlab-runner中的/ etc / gitlab-runner / certs目录。
在那之后,您需要refer在values.yaml掌舵图中的秘密名称:
## Set the certsSecretName in order to pass custom certficates for GitLab Runner to use
## Provide resource name for a Kubernetes Secret Object in the same namespace,
## this is used to populate the /etc/gitlab-runner/certs directory
## ref: https://docs.gitlab.com/runner/configuration/tls-self-signed.html#supported-options-for-self-signed-certificates
##
certsSecretName: <name_of_your_secret>
gitlab文档中的更多信息。
答案 1 :(得分:0)
由于未修复bug #3968,因此从未使用所提供的ca证书。
一种解决方法是,在用于执行HELM图表的ca.crt
中明确引用运行容器的config.toml
和values.yaml
用户空间路径:
envVars:
- name: CI_SERVER_TLS_CA_FILE
value: /home/gitlab-runner/.gitlab-runner/certs/ca.crt
- name: CONFIG_FILE
value: /home/gitlab-runner/.gitlab-runner/config.toml
答案 2 :(得分:0)
我遇到了同样的问题,就我而言,事实证明我构造的证书链错误。这些是验证您正在使用正确的证书文件的步骤。
首先,创建具有完整证书链(服务器证书,中间CA和根CA)的串联PEM文件。最好的方法是为每个证书有一个单独的文件,以便您可以在串联之前用openssl verify
验证链是否正确:
openssl verify -CAfile USERTrustRSACA.crt -untrusted SectigoRSAOrganizationValidationSecureServerCA.crt server.crt
server.crt: OK
如果您收到诸如error 20 at 1 depth lookup:unable to get local issuer certificate
之类的错误消息,则意味着您没有正确的证书集。如果您像我一样尝试使用证书中的CA Issuers - URI:http://crt.usertrust.com/USERTrustRSAAddTrustCA.crt
字段自己下载CA证书,则可能会发生这种情况。
一旦您能够使用openssl
在本地验证证书链,就可以将所有内容合并到一个文件中
cat server.crt SectigoRSAOrganizationValidationSecureServerCA.crt USERTrustRSACA.crt > gitlab.my.domain.com.crt
文件必须与服务器的FQDN相匹配。
现在您可以在GitLab服务器上安装此证书:
gitlab.my.domain.com.crt
复制到您的GitLab服务器/etc/gitlab/ssl
(证书专用密钥也必须存在)sudo gitlab-ctl reconfigure
sudo gitlab-ctl hup nginx
然后使用
验证更改是否到位openssl s_client -connect gitlab.my.domain.com:443 # look for "Certificate chain"
然后,您可以按照Providing a custom certificate for accessing GitLab中的步骤进行操作:
kubectl -n gitlabrunner delete secret gitlab-my-domain-com-cert
kubectl -n gitlabrunner create secret generic gitlab-my-domain-com-cert --from-file=gitlab.my.domain.com.crt
helm install --namespace gitlabrunner --set gitlabUrl=https://gitlab.my.domain.com --set runnerRegistrationToken=xxxxxxxxx --set logLevel=debug --set certsSecretName=gitlab-my-domain-com-cert gitlab-runner gitlab/gitlab-runner