Running Jenkins in Kubernetes is relatively straightforward. The Kubernetes plugin automatically discovers all the connection and authentication configuration, so a `kubeconfig` file is no longer necessary. I did set the *Jenkins tunnel* option, though, so that agents will connect directly to the Jenkins JNLP port instead of going through the ingress controller. Jobs now run in pods in the *jenkins-job* namespace instead of the *jenkins* namespace. The latter is now where the Jenkins controller runs, and the controller should not have permission to modify its own resources. |
||
---|---|---|
.. | ||
README.md | ||
jenkins.yaml | ||
kustomization.yaml |
README.md
Jenkins in Kubernetes
Kubernetes Setup
Configure Jenkins resources:
ln imagepull-gitea jenkins/.dockerconfigjson
kubectl apply -k jenkins
Jenkins Setup
Install Kubernetes plugin.
Set TCP port for inbound agents setting (Manage Jenkins → Configure Global
Security) to Fixed and enter 40414
.
Configure Kubernetes (Manage Jenkins → Manage Nodes and Clouds → Configure Clouds:
- Add a new cloud → Kubernetes
- Enter a name
- Kubernetes Cloud details...
- Kubernetes URL: (leave blank; will use Kubernetes service discovery)
- Kubernetes Namespace:
jenkins-jobs
- Credentials:
- none -
(will use Service Account token) - Jenkins tunnel:
jenkins.jenkins.svc.cluster.local:
(trailing colon!)