Jenkins doesn't really need full control of all resources in its namespace. Rather, it only needs to be able to manage Pod and PersistentVolumeClaim resources.
Jenkins Kubernetes Integration
Kubernetes Setup
Create jenkins user:
kubeadm kubeconfig user \
--client-name jenkins \
--config kubeadm-user.yaml \
--org jenkins \
> jenkins.kubeconfig
Configure Jenkins resources:
kubectl apply -f jenkins.yaml
Jenkins Setup
Install Kubernetes plugin.
Set TCP port for inbound agents setting (Manage Jenkins → Configure Global Security) to Fixed and enter a number. Be sure to open this port with firewalld on the Jenkins server.
Configure Kubernetes (Manage Jenkins → Manage Nodes and Clouds → Configure Clouds:
- Kubernetes URL: https://kubernetes.pyrocufflink.blue:6443
- Kubernetes server certificate key: Contents of
/etc/kubernetes/pki/ca.crt - Kubernetes Namespace: jenkins
- Credentials: Certificate and private key from
jenkins.kubeconfig