Настройка ServiceAccount Jenkins для K8s
Данную мини-заметку пишу для себя, но вдруг кому-то это тоже будет интересно.
Иногда возникают задачи, в которых мне нужно настроить K8s-кластер таким образом, чтоб из Jenkins можно было взаимодействовать с K8s. Например, развертывание приложений или их обновление.
В этой заметке я не буду описывать процесс написания Jenkins-пайплайна. Каждый случай уникален, да и информации в интернете много. Также здесь не будет процесса создания kube-config файла. Возможно, опишу работу с rbac-в отдельной статье.
Создание манифестов
Для базовой настройки ServiceAccount можно использовать следующий файл:
### Создаем Namespace, в котором будет хранить все ресурсы
apiVersion: v1
kind: Namespace
metadata:
name: jenkins
labels:
name: jenkins
---
###Создаем ServiceAccount (пользователя) под которым jenkins будет обращаться в кластер
apiVersion: v1
kind: ServiceAccount
metadata:
name: jenkins
namespace: jenkins
annotations:
kubernetes.io/service-account.name: jenkins
---
###Привязываем пользователя к роли. В данном случае роль не создаем, а даем нашему SA права администратора кластера
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: jenkins-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: jenkins
namespace: jenkins
---
###Создаем секрет со статичным именем для JWT-token'a
apiVersion: v1
kind: Secret
metadata:
name: jenkins-token
namespace: jenkins
annotations:
kubernetes.io/service-account.name: jenkins
type: kubernetes.io/service-account-token
Представленный вариант носит схематичный характер и больше похож на шпаргалку конфига, который я кладу сюда, чтоб не искать его по серверам :D