LoginSignup
0
1

Helm を用いて Jenkins を OpenShift にデプロイする

Last updated at Posted at 2024-02-03

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
$ 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
# Change `runAsUsers` from default value `1000` to `0` (root)
controller:
  usePodSecurityContext: true
  runAsUser: 0
  fsGroup: 0
  containerSecurityContext:
    runAsUser: 0
    runAsGroup: 0
    readOnlyRootFilesystem: false
    
persistence:
  storageClass: <STORAGE_CLASS_NAME>
  # If you are using ODF, this may work: 
  # storageClass: ocs-storagecluster-ceph-rbd

(OpenShift クラスタが低スペックな人へ)
筆者の OKD4 環境はマシンスペックが低く insufficient memory エラーで Pod が立ち上がらなかった。これを避けるには value.yaml に次のキーも記述する:

controller:
  initContainerResources:
    requests: {}

Helm で Jenkins をデプロイする。

# Install jenkins
$ helm install jenkins jenkinsci/jenkins --version 5.0.10 -f values.yaml

(OpenShift クラスタが低スペックな人へ)
values.yamlresource を削除しても、Quotas の影響で Resource 要求が自動的に追加されることがある。その場合は、oc edit sts jenkins を実行し、作成された StatefulSet を直接編集して、resources: キーがある部分を resource: {} などに置換してから、Pod を再作成する。

$ oc delete pod jenkins-0

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 にアクセスする。

Screenshot from 2024-02-03 18-04-01.png

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>

ログインする。

Screenshot from 2024-02-03 18-04-26.png

Cleanup

本記事で構築したものをクリーンアップするには、次のコマンドを実行する。

$ helm uninstall jenkins
$ oc delete route jenkins

Links

参考にした GitHub Issues

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1