服务帐户 x509:由未知授权机构签署的证书
Service account x509: certificate signed by unknown authority
我在使用服务帐户时遇到问题。我创建了一个服务帐户,然后使用本指南创建了 .key 和 .crt:
https://docs.bitnami.com/kubernetes/how-to/configure-rbac-in-your-kubernetes-cluster/
我使用 KOPS_STATE_STORE
存储桶中的 cluster_ca.key
和 cluster_ca.crt
(因为我使用 kops
创建集群)来创建用户 ca.crt
和 ca.key
。然后我从秘密那里得到了令牌。
我这样设置上下文:
kubectl config set-cluster ${K8S_CLUSTER_NAME} --server="${K8S_URL}" --embed-certs=true --certificate-authority=./ca.crt
kubectl config set-credentials gitlab-telematics-${CI_COMMIT_REF_NAME} --token="${K8S_TOKEN}"
kubectl config set-context telematics-dev-context --cluster=${K8S_CLUSTER_NAME} --user=gitlab-telematics-${CI_COMMIT_REF_NAME}
kubectl config use-context telematics-dev-context
当我使用该服务帐户令牌进行部署时,出现以下错误:
error: unable to recognize "deployment.yml": Get https://<CLUSTER_ADDRESS>/api?timeout=32s: x509: certificate signed by unknown authority
服务帐户、角色和角色绑定 YAML:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: gitlab-telematics-dev
namespace: telematics-dev
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: telematics-dev-full-access
namespace: telematics-dev
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["deployments", "replicasets", "pods", "services"]
verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: telematics-dev-view
namespace: telematics-dev
subjects:
- kind: ServiceAccount
name: gitlab-telematics-dev
namespace: telematics-dev
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: telematics-dev-full-access
生成的 kubeconfig
对我来说很好:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: <REDACTED>
server: https://<CLUSTER_ADDRESS>
name: <CLUSTER_NAME>
contexts:
- context:
cluster: <CLUSTER_NAME>
user: gitlab-telematics-dev
name: telematics-dev-context
current-context: telematics-dev-context
kind: Config
preferences: {}
users:
- name: gitlab-telematics-dev
user:
token: <REDACTED>
这个案子很难帮你。我在我的测试集群上复制了这个,除了按照 Bitnami 的分步教程并仔细检查名称外,我无法提出任何建议。我能够成功创建用户 gitlab-telematics-dev
列表 pods,然后仅使用您的清单和链接教程在 telematics-dev
命名空间中创建部署,因此问题不在配置或名称中角色等。在我看来,您必须在此过程中错过一些东西。
我能建议的是首先以创建的用户身份尝试命令。因此,当您能够列出 pods 并将部署创建为 gitlab-telematics-dev
时,您的部署也应该可以正常工作。
我设法解决了这个问题。抱歉回复晚了。发布这个以防其他人遇到同样的问题。
不需要以下行:
kubectl config set-cluster ${K8S_CLUSTER_NAME} --server="${K8S_URL}" --embed-certs=true --certificate-authority=./ca.crt
由于我们是发行代币,所以只能使用代币。
我在使用服务帐户时遇到问题。我创建了一个服务帐户,然后使用本指南创建了 .key 和 .crt:
https://docs.bitnami.com/kubernetes/how-to/configure-rbac-in-your-kubernetes-cluster/
我使用 KOPS_STATE_STORE
存储桶中的 cluster_ca.key
和 cluster_ca.crt
(因为我使用 kops
创建集群)来创建用户 ca.crt
和 ca.key
。然后我从秘密那里得到了令牌。
我这样设置上下文:
kubectl config set-cluster ${K8S_CLUSTER_NAME} --server="${K8S_URL}" --embed-certs=true --certificate-authority=./ca.crt
kubectl config set-credentials gitlab-telematics-${CI_COMMIT_REF_NAME} --token="${K8S_TOKEN}"
kubectl config set-context telematics-dev-context --cluster=${K8S_CLUSTER_NAME} --user=gitlab-telematics-${CI_COMMIT_REF_NAME}
kubectl config use-context telematics-dev-context
当我使用该服务帐户令牌进行部署时,出现以下错误:
error: unable to recognize "deployment.yml": Get https://<CLUSTER_ADDRESS>/api?timeout=32s: x509: certificate signed by unknown authority
服务帐户、角色和角色绑定 YAML:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: gitlab-telematics-dev
namespace: telematics-dev
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: telematics-dev-full-access
namespace: telematics-dev
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["deployments", "replicasets", "pods", "services"]
verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: telematics-dev-view
namespace: telematics-dev
subjects:
- kind: ServiceAccount
name: gitlab-telematics-dev
namespace: telematics-dev
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: telematics-dev-full-access
生成的 kubeconfig
对我来说很好:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: <REDACTED>
server: https://<CLUSTER_ADDRESS>
name: <CLUSTER_NAME>
contexts:
- context:
cluster: <CLUSTER_NAME>
user: gitlab-telematics-dev
name: telematics-dev-context
current-context: telematics-dev-context
kind: Config
preferences: {}
users:
- name: gitlab-telematics-dev
user:
token: <REDACTED>
这个案子很难帮你。我在我的测试集群上复制了这个,除了按照 Bitnami 的分步教程并仔细检查名称外,我无法提出任何建议。我能够成功创建用户 gitlab-telematics-dev
列表 pods,然后仅使用您的清单和链接教程在 telematics-dev
命名空间中创建部署,因此问题不在配置或名称中角色等。在我看来,您必须在此过程中错过一些东西。
我能建议的是首先以创建的用户身份尝试命令。因此,当您能够列出 pods 并将部署创建为 gitlab-telematics-dev
时,您的部署也应该可以正常工作。
我设法解决了这个问题。抱歉回复晚了。发布这个以防其他人遇到同样的问题。
不需要以下行:
kubectl config set-cluster ${K8S_CLUSTER_NAME} --server="${K8S_URL}" --embed-certs=true --certificate-authority=./ca.crt
由于我们是发行代币,所以只能使用代币。