Итак, я развертываю экземпляр Jenkins в моем кластере K8S с помощью Helm.
Вот поток, за которым я слежу:
1) Создать пространство имен с именем jenkins-pipeline
.
kubectl get ns jenkins-pipeline -o yaml
apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: 2018-09-15T16:58:33Z
name: jenkins-pipeline
resourceVersion: "25596"
selfLink: /api/v1/namespaces/jenkins-pipeline
uid: 9449b9e7-b908-11e8-a915-080027bfdbf9
spec:
finalizers:
- kubernetes
status:
phase: Active
2) Создать учетную запись ServiceAccount с именем jenkins-admin
INSIDE namespace jenkins-pipeline
.
kubectl get serviceaccounts -n jenkins-pipeline jenkins-admin -o yaml
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: 2018-09-15T17:02:25Z
name: jenkins-admin
namespace: jenkins-pipeline
resourceVersion: "25886"
selfLink: /api/v1/namespaces/jenkins-pipeline/serviceaccounts/jenkins-admin
uid: 1e921d43-b909-11e8-a915-080027bfdbf9
secrets:
- name: jenkins-admin-token-bhvdd
3) Создать ClusterRoleBinding, связывающий мой ServiceAccount jenkins-admin
с ClusterRole cluster-admin
. (Я знаю, что не рекомендуется назначать моему развертыванию столько привилегий, но сейчас я просто тестирую локально).
kubectl get clusterrolebindings.rbac.authorization.k8s.io jenkins-cluster-role-binding -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
creationTimestamp: 2018-09-15T16:58:33Z
name: jenkins-cluster-role-binding
resourceVersion: "25597"
selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/jenkins-cluster-role-binding
uid: 944a4c18-b908-11e8-a915-080027bfdbf9
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: jenkins-admin
namespace: jenkins-pipeline
4) Развернуть мой модуль в пространстве имен jenkins-pipeline
.
5) Предоставить развертывание с использованием службы в пространстве имен jenkins-pipeline
.
Дженкинс прекрасно работает, но когда я пытаюсь проверить соединение с Kuberenetes, он не может указать:
Error testing connection https://192.168.99.100:8443: Failure executing: GET at: https://192.168.99.100:8443/api/v1/namespaces/jenkins-pipeline/pods. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. pods is forbidden: User "system:serviceaccount:jenkins-pipeline:default" cannot list pods in the namespace "jenkins-pipeline".
Фрагмент пользовательского интерфейса выглядит так:
Я настроил это, насколько мне известно. Я создал учетную запись службы в пространстве имен и дал привилегии этой учетной записи SUPER. И все же он не может перечислять стручки в своем собственном пространстве имен. Любая помощь будет оценена.
Я пытался изменить пространство имен в пользовательском интерфейсе Jenkins, но у меня есть ощущение, что по умолчанию оно jenkins-pipeline
, даже если я его не заявляю.