概要
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 件のコメント:
コメントを投稿