1
0
Fork 0
Commit Graph

10 Commits (860bfb1e2c9391099ee50238df84cad0738d8457)

Author SHA1 Message Date
Dustin 860bfb1e2c jenkins: Set instance label for Argo CD
Argo CD wants every resource managed by an application to have that
application's name as the value of the `app.kubernetes.io/instance`
label.
2023-10-14 07:24:42 -05:00
Dustin 0c8480ba21 jenkins: Update to v2.401.3 2023-08-09 14:04:23 -05:00
Dustin b13479a297 jenkins: Remove dockerconfigjson
This is no longer necessary.
2022-12-28 11:05:40 -06:00
Dustin 10ee364612 jenkins: Add ssh_known_hosts ConfigMap
When cloning/fetching a Git repository in a Jenkins pipeline, the Git
Client plugin uses the configured *Host Key Verification Strategy* to
verify the SSH host key of the remote Git server.  Unfortunately, there
does not seem to be any way to use the configured strategy from the
`git` command line in a Pipeline job, so e.g. `git push` does not
respect it.  This causes jobs to fail to push changes to the remote if
the container they're using does not already have the SSH host key for
the remote in its known hosts database.

This commit adds a ConfigMap to the *jenkins-jobs* namespace that can be
mounted in containers to populate the SSH host key database.
2022-12-10 12:19:33 -06:00
Dustin 889cd29a3c jenkins: Update to 2.375.1
I don't want Jenkins updating itself whenever the pod restarts, so I'm
going to pin it to a specific version.  This way, I can be sure to take
a snapshot of the data volume before upgrading.
2022-12-02 22:15:11 -06:00
Dustin b8ccbd0b09 jenkins: Avoid SELinux relabel of data dir
Setting a static SELinux level for the container allows CRI-O to skip
relabeling all the files in the persistent volume each time the
container starts.  For this to work, the pod needs a special annotation,
and CRI-O itself has to be configured to respect it:

```toml
[crio.runtime.runtimes.runc]
allowed_annotations = ["io.kubernetes.cri-o.TrySkipVolumeSELinuxLabel"]
```

This *dramatically* improves the start time of the Jenkins container.
Instead of taking 5+ minutes, it now starts instantly.

https://github.com/cri-o/cri-o/issues/6185#issuecomment-1334719982
2022-12-01 21:35:02 -06:00
Dustin 404fadc68a jenkins: Run Jenkins in Kubernetes
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.
2022-11-25 13:38:10 -06:00
Dustin 19ad5023b8 jenkins: Restrict role permissions
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.
2022-11-18 13:52:25 -06:00
Dustin ac4d9c1f21 jenkins: Fix typo in README 2022-07-31 00:42:42 -05:00
Dustin 70cb9186a6 Add Jenkins setup resources 2022-07-25 17:52:55 -05:00