Helm を用いて OpenShift に Jenkins をデプロイし、https://jenkins.apps.<openshift-domain>
からアクセスできるようにする。手順は https://artifacthub.io/packages/helm/jenkinsci/jenkins に従う。
サンプルレポジトリ:
Environment
-
helm
-
OKD4 (v4.14.0)
- Dynamic Provisioning 可能な StorageClass
- e.g. ODF の
ocs-storagecluster-ceph-rbd
- e.g. ODF の
- Dynamic Provisioning 可能な StorageClass
$ oc get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
localblock kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 26h
ocs-storagecluster-ceph-rbd openshift-storage.rbd.csi.ceph.com Delete Immediate true 25h
ocs-storagecluster-ceph-rgw openshift-storage.ceph.rook.io/bucket Delete Immediate false 26h
ocs-storagecluster-cephfs openshift-storage.cephfs.csi.ceph.com Delete Immediate true 25h
手順
Helm chart のデプロイ
Jenkins の Helm レポジトリを追加する
# Add repository
$ helm repo add jenkinsci https://charts.jenkins.io/
# Update repository
$ helm repo update
helm の設定をデフォルトからカスタマイズするために、下記の values.yaml
作成する。
values.yaml
controller:
usePodSecurityContext: true
runAsUser: 0
fsGroup: 0
containerSecurityContext:
runAsUser: 0
runAsGroup: 0
readOnlyRootFilesystem: false
persistence:
storageClass: <STORAGE_CLASS_NAME>
Helm で Jenkins をデプロイする。
# Install jenkins
$ helm install jenkins jenkinsci/jenkins --version 5.3.3 -f values.yaml
Jenkins がデプロイされたことを確認する:
$ oc get pods
NAME READY STATUS RESTARTS AGE
jenkins-0 2/2 Running 0 4m43s
$ oc get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
jenkins ClusterIP 172.30.147.224 <none> 8080/TCP 31m
jenkins-agent ClusterIP 172.30.99.228 <none> 50000/TCP 31m
$ oc get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
...
jenkins Bound pvc-e09c4ae6-5eaf-415b-97a0-3726e971c254 8Gi RWO ocs-storagecluster-ceph-rbd 29m
$ oc get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
...
pvc-e09c4ae6-5eaf-415b-97a0-3726e971c254 8Gi RWO Delete Bound default/jenkins ocs-storagecluster-ceph-rbd 29m
Route の作成
$ oc create route edge --service=jenkins --hostname=jenkins.apps.ocp4.example.com --port='8080' --insecure-policy='Redirect'
Jenkins へのアクセス
指定した URL (e.g. https://jenkins.apps.ocp4.example.com) から Jenkins にアクセスする。
Secrets からログイン情報を取得する。
$ oc get secrets jenkins -o yaml | yq '.data.jenkins-admin-user' | base64 --decode
admin
$ oc get secrets jenkins -o yaml | yq '.data.jenkins-admin-password' | base64 --decode
<PASSWORD>
ログインする。
Cleanup
本記事で構築したものをクリーンアップするには、次のコマンドを実行する。
$ helm uninstall jenkins
$ oc delete route jenkins
Links
参考にした GitHub Issues
- Permission denied on disable Setup Wizard step · Issue #210 · jenkinsci/helm-charts
- (k8s v1.25 bug?) compute-resources: must specify limits.cpu for: config-reload; limits.memory for: config-reload; requests.cpu for: config-reload; requests.memory for: config-reload · Issue #737 · jenkinsci/helm-charts
- Error while deploying on OpenShift: AccessDeniedException: /.cache · Issue #506 · jenkinsci/helm-charts