我正在 gke 上配置 Jenkins。
jenkins 位于命名空间 devops-tools 上。 Nginx 位于命名空间 kube-system 上。
我想使用私有域配置对 Jenkins 的访问。
- Helm: version.BuildInfo{Version:"v3.13.0", GitCommit:"825e86f6a7a38cef1112bfa606e4127a706749b1", GitTreeState:"clean", GoVersion:"go1.20.8"}
- Kubernetes: Client Version: v1.28.2
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.27.3-gke.100
图表版本
jenkins-4.8.2
我从 Helm Chart jenkinsci/helm-charts 配置了 Jenkins,其中一些值如下:
httpsKeyStore:
jenkinsHttpsJksSecretName: ''
jenkinsHttpsJksSecretKey: "jenkins-jks-file"
jenkinsHttpsJksPasswordSecretName: ""
jenkinsHttpsJksPasswordSecretKey: "https-jks-password"
enable: true
httpPort: 8081
path: "/var/lib/jenkins"
fileName: "keystore.jks"
password: "some password"
jenkinsKeyStoreBase64Encoded: |
/u3+7QAAAAIAAAA...
ingress:
enabled: true
apiVersion: "networking.k8s.io/v1"
ingressClassName: nginx
hostName: "jenkins.devops-tools-k8s-cluster.internal.com"
tls:
- secretName: jenkins-tls-secret
hosts:
- jenkins.devops-tools-k8s-cluster.internal.com
这实际上是与端口转发一起使用的。我可以看到我的证书就在那里。
我为 Nginx 配置了这个秘密:
apiVersion: v1
kind: Secret
metadata:
name: jenkins-tls-secret
namespace: devops-tools
data:
tls.crt: base64 crt
tls.key: base64 key
type: kubernetes.io/tls
在 nginx 日志上我得到了这个:
I1108 09:05:56.567114 1 store.go:585] "Secret was added and it is used in ingress annotations. Parsing" secret="devops-tools/jenkins-tls-secret"
I1108 09:05:56.568214 1 backend_ssl.go:67] "Adding secret to local store" name="devops-tools/jenkins-tls-secret"
但是当我尝试访问我的网址时https://jenkins.devops-tools-k8s-cluster.internal.com 我收到错误:
2023/11/08 09:42:57 [error] 32#32: *128412 [lua] certificate.lua:263: call(): failed to set DER private key: d2i_PrivateKey_bio() failed, context: ssl_certificate_by_lua*, client: 172.38.0.1, server: 0.0.0.0:443
至于 nginx,我使用 https://hub.docker.com/r/bitnami/nginx 以及最新的稳定版本。
我尝试了其他版本以确保它们存在相同的问题。
该证书在 gcp 中自叹其为私有域。
我做错了什么?难道bitnami的nginx有问题?
显然是bitnami版本有问题。 我把它换成了新的,现在工作正常了。