Сервисная учетная запись x509: сертификат подписан неизвестным органом - PullRequest
1 голос
/ 15 мая 2019

У меня проблемы с учетными записями служб. Я создал учетную запись службы, а затем создал .key и .crt, используя это руководство:

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

Я использовал cluster_ca.key и cluster_ca.crt из KOPS_STATE_STORE корзины (поскольку я использовал 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>

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Мне удалось решить это. Извините за столь поздний ответ. Сообщение об этом на случай, если кто-то еще столкнется с той же проблемой.

Следующая строка не нужна:

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

Поскольку мы выпускаем токены, можно использовать только токен.

0 голосов
/ 25 июня 2019

Трудно помочь вам в этом деле.Я воспроизвел это на своем тестовом кластере, и я не могу придумать никаких советов, кроме как следовать пошаговому руководству Bitnami и дважды проверять имена.Я смог успешно создать список пользователей gitlab-telematics-dev, а затем создать развертывание в пространстве имен telematics-dev, используя только ваши манифесты и связанный учебник, поэтому проблема не в конфигурации или именах в ролях и т. Д. Это мне кажетсяВы должны были что-то пропустить в процессе.

Что я могу посоветовать, так это сначала попробовать команды как созданный пользователь.Поэтому, когда вы сможете составить список модулей и создать развертывание как gitlab-telematics-dev, ваше развертывание также должно работать.

...