We don't want to hard-code a namespace for the `ssh-known-hosts` ConfigMap because that makes it less useful for other projects besides Jenkins. Instead, we omit the namespace specification and allow consumers to specify their own. The _jenkins_ project doesn't have a default namespace, since it specifies resources in the `jenkins` and `jenkins-jobs` namespaces, we need to create a sub-project to set the namespace for the `ssh-known-hosts` ConfigMap. |
||
---|---|---|
.. | ||
ssh-host-keys | ||
.gitignore | ||
README.md | ||
gentoo-storage.yaml | ||
iscsi-migrate.yaml | ||
iscsi.yaml | ||
jenkins.yaml | ||
kustomization.yaml | ||
secrets.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!)
iSCSI Persistent Volume
Because of the large size of the Jenkins volume, it does not work well managed by Longhorn. Instead, we use a pre-provisioned iSCSI volume on the Synology NAS. This improves performance and avoids keeping multiple replicas of the Jenkins data, while still benefiting from snapshots, etc.