我正在尝试将Kubernetes集群与Gitlab集成,以使用Gitlab评论应用程序功能。
kubectl get all
给出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 <none> 443/TCP 30d
CI / CD
&gt; Kubernetes
页面,我们需要主要输入3个字段:
Rancher Dashboard
&gt;获取Kubernetes API网址。 Kubernetes
&gt; CLI
&gt; 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"
我尝试了来自Kubernetes仪表板的所有命名空间中的所有ca.crt
和token
值,但是在尝试安装Helm Tiller
应用程序时,我在Gitlab上收到此错误:< / p>
Something went wrong while installing Helm Tiller Can't start installation process
答案 0 :(得分:13)
我也和kubernetes以及GitLab一起消亡。我创建了几个单节点&#34;集群&#34;用于测试,一个使用minikube
,另一个通过kubeadm
。
我在GitLab forum上回答了这个问题,但我在下面发布了我的解决方案:
根据official documentation,API网址仅为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
然后我通过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证书,您可以照常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 < /dev/null &> apiserver.crt
$ openssl verify -verbose -CAfile ca.crt apiserver.crt
apiserver.crt: OK