【问题标题】:Service account x509: certificate signed by unknown authority服务帐户 x509:由未知机构签署的证书
【发布时间】:2019-10-02 07:09:40
【问题描述】:

我在使用服务帐户时遇到问题。我创建了一个服务帐户,然后使用本指南创建了 .key 和 .crt:

https://docs.bitnami.com/kubernetes/how-to/configure-rbac-in-your-kubernetes-cluster/

我使用来自KOPS_STATE_STORE 存储桶的cluster_ca.keycluster_ca.crt(因为我使用kops 创建集群)来创建用户ca.crtca.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>

【问题讨论】:

    标签: kubernetes kubectl kops


    【解决方案1】:

    我设法解决了这个问题。抱歉回复晚了。发布此内容以防其他人面临同样的问题。

    以下行不需要:

    kubectl config set-cluster ${K8S_CLUSTER_NAME} --server="${K8S_URL}" --embed-certs=true --certificate-authority=./ca.crt

    由于我们在发行代币,所以只能使用代币。

    【讨论】:

      【解决方案2】:

      这个案子很难帮你。我在我的测试集群上重现了这个,除了按照 Bitnami 的分步教程并仔细检查名称之外,我无法提出任何建议。我能够成功创建用户 gitlab-telematics-dev 列表 pod,然后仅使用您的清单和链接教程在 telematics-dev 命名空间中创建部署,因此问题不在于配置或角色中的名称等。这在我看来就像你必须在这个过程中错过一些东西。

      我可以建议首先以创建的用户身份尝试命令。因此,当您能够列出 pod 并将部署创建为 gitlab-telematics-dev 时,您的部署也应该可以工作。

      【讨论】:

        猜你喜欢
        • 2017-12-23
        • 2020-05-27
        • 2019-10-29
        • 1970-01-01
        • 1970-01-01
        • 2020-07-23
        • 2023-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多