kubectl create ns jenkins helm install --name jenkins --namespace jenkins stable/jenkins -f ./values-autosys.yaml
В результате в неймспейсе jenkins создадутся все нужные объекты, однако pod будет в состоянии pending, потому что у него отсутсвует PersistentVolume, запрашиваемый при помощи PersistentVolumeClaim.
master:
Name: jenkins-master
overwriteConfig: true
# hostNetworking: true
ingress:
enabled: true
# For Kubernetes v1.14+, use 'networking.k8s.io/v1beta1'
apiVersion: "extensions/v1beta1"
labels: {}
annotations:
cert-manager.io/cluster-issuer: letsencrypt
kubernetes.io/ingress.class: nginx
hostName: jenkins.autosys.tk
tls:
- hosts:
- jenkins.autosys.tk
secretName: jenkins-autosys-tk-tls
persistence:
enabled: true
storageClass: jenkins
Сразу после разворачивания pod jenkins у меня находился в состоянии Init:0/1, а в статусе pod'а можно обнаружить такое:
message: 'containers with incomplete status: [copy-default-config]'
В это время в поде jenkins'а работает контейнер copy-default-config, который скачивает с jenkins.io различные компоненты, необходимые для работы (плагины). Ход этого процесса можно наблюдать так:
kubectl logs -n jenkins jenkins-.... -c copy-default-config -f
В контейнере этот процесс выполняется скриптом: /var/jenkins_config/apply_config.sh
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: jenkins
namespace: jenkins
provisioner: kubernetes.io/no-provisioner
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
namespace: jenkins
labels:
app: jenkins
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
storageClassName: jenkins
hostPath:
path: "/kubernetes_volumes/jenkins-home"
type: Directory
persistentVolumeReclaimPolicy: Retain
printf $(kubectl get secret --namespace jenkins jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo
Jenkins URL
export SERVICE_IP=$(kubectl get svc --namespace default jenkins --template "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}")
echo http://$SERVICE_IP:8080/login
kubectl create clusterrolebinding jenkins --clusterrole cluster-admin --serviceaccount=jenkins:default
После установки нужно как минимум сконфигурировать параметры Jenkins Location: