身份验证问题:GitLab CI / CD作业运行“ kubectl apply -f deployment.yaml”时失败

时间:2020-03-02 16:16:26

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

我收到此错误: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权限的服务帐户。

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

1 个答案:

答案 0 :(得分: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,这对我很有帮助。