如何将Kubernetes与Gitlab集成

时间:2018-05-17 06:07:44

标签: kubernetes gitlab gitlab-ci rancher

我正在尝试将Kubernetes集群与Gitlab集成,以使用Gitlab评论应用程序功能。

  • Kubernetes集群是通过Rancher 1.6
  • 创建的
  • 从kubernetes shell运行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
  • 在Gitlab上CI / CD&gt; Kubernetes页面,我们需要主要输入3个字段:
    1. API网址
    2. CA证书
    3. 令牌

API网址

  • 如果我没错,我们可以从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"

CA证书&amp;令牌?

  • 现在,问题是,在哪里获得CA证书(pem格式)和令牌?

我尝试了来自Kubernetes仪表板的所有命名空间中的所有ca.crttoken值,但是在尝试安装Helm Tiller应用程序时,我在Gitlab上收到此错误:< / p>

Something went wrong while installing Helm Tiller

Can't start installation process

以下是我的秘密页面的样子 enter image description here

1 个答案:

答案 0 :(得分:13)

我也和kubernetes以及GitLab一起消亡。我创建了几个单节点&#34;集群&#34;用于测试,一个使用minikube,另一个通过kubeadm

我在GitLab forum上回答了这个问题,但我在下面发布了我的解决方案:

API网址

根据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

获取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 < /dev/null &> apiserver.crt

$ openssl verify -verbose -CAfile ca.crt apiserver.crt
apiserver.crt: OK