作者:蒓子2502883107 | 来源:互联网 | 2022-12-17 09:42
我正在尝试将Kubernetes集群与Gitlab集成以使用Gitlab Review Apps功能.
Kubernetes集群是通过Rancher 1.6创建的
kubectl get all
从kubernetes shell 运行给出
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/my-service LoadBalancer x.x.144.67 x.x.13.89 80:32701/TCP 30d
svc/kubernetes ClusterIP 10.43.0.1 443/TCP 30d
在Gitlab CI / CD
> Kubernetes
页面上,我们需要输入3个字段:
API URL
CA证书
代币
API URL
如果我没有错,我们可以从Kubernetes API网址Rancher Dashboard
> Kubernetes
> CLI
> Generate Config
并复制server
下网址cluster
apiVersion: v1
kind: Config
clusters:
- cluster:
api-version: v1
insecure-skip-tls-verify: true
server: "https://x.x.122.197:8080/r/projects/1a7/kubernetes:6443"
CA证书和令牌?
现在,问题是,在哪里获得CA证书(pem格式)和令牌?
我尝试了来自Kubernetes仪表板的所有命名空间中的所有ca.crt
和token
值,但是在尝试安装Helm Tiller
应用程序时我在Gitlab上收到此错误:
Something went wrong while installing Helm Tiller
Can't start installation process
这是我的秘密页面的样子
1> 小智..:
我也和kubernetes以及GitLab一起消失了.我已经创建了几个用于测试的单节点"集群",一个用于minikube
另一个用户kubeadm
.
我在GitLab论坛上回答了这个问题,但我在下面发布了我的解决方案:
API URL
根据官方文档,API URL只是https://hostname:port
没有斜杠
列出秘密
首先,我像往常一样列出了秘密:
$ kubectl get secrets
NAME TYPE DATA AGE
default-token-tpvsd kubernetes.io/service-account-token 3 2d
k8s-dashboard-sa-token-XXXXX kubernetes.io/service-account-token 3 1d
获取服务令牌
$ kubectl -o json get secret k8s-dashboard-sa-token-XXXXX | jq -r '.data.token' | base64 -d
eyJhbGci ... sjcuNA8w
获取CA证书
然后我通过jq使用自定义选择器直接从JSON输出获得CA证书:
$ kubectl -o json get secret k8s-dashboard-sa-token-XXXXX | jq -r '.data."ca.crt"' | base64 -d - | tee ca.crt
-----BEGIN CERTIFICATE-----
MIICyDCCAbCgAwIBAgIBADANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwprdWJl
... ... ... ... ... ...
FT55iMtPtFqAOnoYBCiLH6oT6Z1ACxduxPZA/EeQmTUoRJG8joczI0V1cnY=
-----END CERTIFICATE-----
验证CA证书
有了CA证书,您可以verify
照常:
$ openssl x509 -in ca.crt -noout -subject -issuer
subject= /CN=kubernetes
issuer= /CN=kubernetes
$ openssl s_client -showcerts -connect 192.168.100.20:6443 apiserver.crt
$ openssl verify -verbose -CAfile ca.crt apiserver.crt
apiserver.crt: OK