【问题标题】:Authentication Issue: GitLab CI/CD Job fails when it runs "kubectl apply -f deployment.yaml"身份验证问题:GitLab CI/CD 作业在运行“kubectl apply -f deployment.yaml”时失败
【发布时间】:2020-03-03 16:01:20
【问题描述】:

我收到此错误:forbidden: User "system:anonymous" cannot get path "/openapi/v2": No policy matched.

这里似乎发生了:

I0302 15:57:33.593662      44 round_trippers.go:423] curl -k -v -XGET  -H "Accept: application/com.github.proto-openapi.spec.v2@v1.0+protobuf" -H "User-Agent: kubectl/v1.17.3 (linux/amd64) kubernetes/06ad960" -H "Authorization: Basic YWRxxxxxxxxxxxxxxxxxxxxxx2lm" 'https://<IP>/openapi/v2?timeout=32s'
I0302 15:57:33.767657      44 round_trippers.go:443] GET https://<IP>/openapi/v2?timeout=32s 403 Forbidden in 173 milliseconds

据我了解,应该使用的用户是通过 kubectl 应用此 yaml 创建的:

apiVersion: v1
kind: Namespace
metadata:  
  name: gitlab-managed-apps
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: gitlab-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: gitlab-admin
  namespace: gitlab-managed-apps

GCP 项目中还有一个具有Kubernetes Engine Developer 权限的服务帐户。

因此,我不知道为什么仍然没有用户定义/关联。 我希望你能帮助我!

【问题讨论】:

    标签: kubernetes google-cloud-platform gitlab google-kubernetes-engine gitlab-ci


    【解决方案1】:

    经过几次尝试,我发现我与上下文混淆了一些东西。 当我意识到配置错误时,我查看了KUBECONFIG 文件。

    用于与 Kubernetes 通信的错误上下文会导致上述问题。

    您可以按照answer 中的描述检查您是否使用了正确的上下文。

    这是我为解决问题所做的:

    1. 我检查了配置文件:
      • kubectl config view

    我注意到当前上下文的设置指向了错误的上下文!

    1. 然后我设置了打算使用的上下文:
      • kubectl config get-contexts
      • kubectl config set-context NAME
      • kubectl config use-context CONTEXT_NAME

    在这里你可以找到cheatsheet,我觉得这很有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 2020-07-29
      • 2018-06-05
      • 1970-01-01
      相关资源
      最近更新 更多