You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于kops的AWS Kubernetes集群GitLab CI API认证配置问题

配置GitLab CI访问Kops搭建的AWS Kubernetes集群

看起来你已经搞定了K8s集群部署和应用上线,接下来要把GitLab CI和这个集群打通对吧?我来一步步给你捋清楚需要的配置步骤:

1. 确认Kubernetes API端点

你已经拿到了API地址:https://api.useast1.dev.example.com/,这个就是GitLab CI需要的Kubernetes API端点,直接记下来后面用就行。

2. 创建用于GitLab CI的Kubernetes服务账户及令牌

GitLab CI需要一个有足够权限的服务账户来访问集群,我们专门创建一个适配的账户:

步骤1:创建服务账户与权限绑定

先写一个YAML配置文件(比如命名为gitlab-ci-service-account.yaml),内容如下:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: gitlab-ci-service
  namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: gitlab-ci-service-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: edit # 这里用内置的edit权限,如果你需要更严格的权限,可以自定义ClusterRole
subjects:
- kind: ServiceAccount
  name: gitlab-ci-service
  namespace: default

然后执行命令应用这个配置:

kubectl apply -f gitlab-ci-service-account.yaml

步骤2:提取服务账户的认证令牌

接下来要拿到这个服务账户的令牌,用于GitLab的身份认证:

# 先获取服务账户关联的secret名称
SECRET_NAME=$(kubectl get serviceaccount gitlab-ci-service -o jsonpath='{.secrets[0].name}')

# 解码并提取令牌
kubectl get secret $SECRET_NAME -o jsonpath='{.data.token}' | base64 --decode

运行完上面的命令后,得到的一串长字符串就是服务令牌,复制好妥善保存。

3. 在GitLab中配置CI/CD变量

登录你的GitLab项目,进入设置 > CI/CD > 变量页面,添加以下两个关键变量:

  • KUBE_API_URL:值填写你的API端点https://api.useast1.dev.example.com/
  • KUBE_TOKEN:值填写刚才获取的服务令牌,记得勾选"保护变量"和"掩码变量",避免令牌泄露

4. 编写.gitlab-ci.yml示例验证连接

最后在项目根目录创建.gitlab-ci.yml,用这个示例来验证集群连接是否正常:

stages:
  - test

test_k8s_connection:
  stage: test
  image: bitnami/kubectl:latest
  script:
    - kubectl config set-cluster kops-cluster --server="$KUBE_API_URL" --insecure-skip-tls-verify=true # 如果你的API证书是自签名的需要加这个参数;可信证书可以去掉
    - kubectl config set-credentials gitlab-ci --token="$KUBE_TOKEN"
    - kubectl config set-context kops-cluster --cluster=kops-cluster --user=gitlab-ci
    - kubectl config use-context kops-cluster
    - kubectl get pods # 执行这个命令验证是否能正常访问集群资源

补充说明:如果你的K8s API使用的是可信CA证书,可以去掉--insecure-skip-tls-verify=true,额外添加一个KUBE_CA_PEM变量存储CA证书内容,然后在kubectl配置里加上--certificate-authority=<(echo "$KUBE_CA_PEM")。

这样配置完成后,GitLab CI就能正常访问你的Kops集群了,你可以根据实际需求扩展CI流程,比如自动化部署应用、执行集群资源检查等。

内容的提问来源于stack exchange,提问作者dwjohnston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:24:20