2021年3月12日金曜日

k8s 上に Jenkins Server をデプロイして使ってみた

概要

kubeadm で構築した k8s 上に Jenkins をデプロイしてみました
helm を使ってデプロイしています

環境

  • Ubuntu 18.04
  • k8s v1.20.4
  • helm 3.5.2

pv の作成

Jenkins 用の PersistentVolume を作成しておきます
pvc に自動で結びつくように claimRef をしっかり定義しておきます

  • vim jenkins_pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  claimRef:
    namespace: default
    name: jenkins
  storageClassName: local-storage
  local:
    path: /mnt/jenkins
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - node1
  • kubectl apply -f jenkins_pv.yml

Jenkins のデプロイ

  • helm repo add jenkins https://charts.jenkins.io
  • helm repo update
  • helm install jenkins jenkins/jenkins

とりあえずそのままデプロイしています
リポジトリを追加して install するだけです

Pods の確認

Pod が立ち上がっていれば成功です

  • kubectl get pod jenkins-0
NAME        READY   STATUS    RESTARTS   AGE
jenkins-0   2/2     Running   0          6m59s

Loadbalancer として使える Ingress がある場合はそのまま Ingress リソースを追加するだけで良いのですが NodePort を使ってノードの IP を使う場合はこのままだとアクセスできません
なので chart のパラメータを少しいじっして NodePort からアクセスできるようにしてみます

upgrade する

  • helm upgrade --set controller.serviceType=NodePort jenkins jenkins/jenkins

install 時でも良いのですが --set controller.serviceType=NodePort を付与することでノード側の IP でバインドしてくれます
service を確認してみます

  • kubectl get svc jenkins
NAME      TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
jenkins   NodePort   10.109.115.80   <none>        8080:31441/TCP   30m

動作確認

http://192.168.100.10:31441/ にアクセスすると Jenkins のログイン画面になります
admin ユーザのトークンは secret に格納されています

  • kubectl exec --namespace default -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/chart-admin-password && echo

ジョブを作成して実行してみると jenkins-agent がジョブ実行用の Pods を作成してそこでビルドが実行されているのが確認できると思います

Tips: カスタマイズできる項目の取得 values

  • helm show values jenkins/jenkins

これで values.yml が取得できます
chart 自体の構成を見たい場合は

  • helm show chart jenkins/jenkins

で取得できます

参考サイト

0 件のコメント:

コメントを投稿