首先你需要安装一个kubernetes :
linux centos 以Minikube单机模式运行kubernetes
安装完成后,你需要将该 kubernetes 集群配置到 gitlab:
首先打开gitlab 找到图上这个 kubernetes 管理菜单,添加一个现有的 kubernetes 集群:
表单需要我们填写:
#集群名称
#API 地址:
kubectl cluster-info | grep 'Kubernetes master' | awk '/http/ {print $NF}'
# https://192.168.122.161:6443
#CA证书:
kubectl get secrets
# 把结果中 name 类似于 default-token-xxxxx 的 token name 复制到下面的命令中:
kubectl get secret <secret name> -o jsonpath="{['data']['ca\.crt']}" | base64 --decode
#-----BEGIN CERTIFICATE----- 这一句也要复制!
# xxxxxxxxx
#-----END CERTIFICATE----- 这一句也要复制!
Service Token 要麻烦一点,GitLab使用 Service Token 对 Kubernetes 特定的 namespace 进行身份验证,而这里的令牌应该属于拥有 cluster-admin
角色的服务账号。
首先:
- 创建
gitlab-admin-service-account.yaml
文件:
apiVersion: v1
kind: ServiceAccount
metadata:
name: gitlab-admin
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: gitlab-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: gitlab-admin
namespace: kube-system
创建这个服务账号,并绑定到 cluster-admin
角色下:
kubectl apply -f gitlab-admin-service-account.yaml
# serviceaccount "gitlab-admin" created
# clusterrolebinding "gitlab-admin" created
输入以下命令,并从输出中拷贝出 token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep gitlab-admin | awk '{print $1}')
# Name: gitlab-admin-token-b5zv4
# Namespace: kube-system
# Labels: <none>
# Annotations: kubernetes.io/service-account.name=gitlab-admin
# kubernetes.io/service-account.uid=bcfe66ac-39be-11e8-97e8-026dce96b6e8
# Type: kubernetes.io/service-account-token
# Data
# ====
# ca.crt: 1025 bytes
# namespace: 11 bytes
# token: <authentication_token>
点击添加,如果出现本地url不允许设置的提示,设置一下IP白名单:
点击添加以后,可以看到需要安装一下依赖和应用:
如果安装出现错误,请检查pod状态,是否存在镜像被墙,拉不下来的情况,并参考这里解决:
k8s.gcr.io 国内镜像拉不下来
如果 ingress 安装出现问题请参考这里:
gitlab kubernetes 安装 ingress endpoint 启动失败
gitlab kubernetes 安装 ingress 超时
网友评论