Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
devops:setup_jenkins_on_kubernetes [2020/02/20 13:48] – [jenkins pod Init:0/1] admindevops:setup_jenkins_on_kubernetes [2020/04/23 10:51] (current) – [jenkins pod Init:0/1] admin
Line 1: Line 1:
 +====== Установка Jenkins с помощью helm ======
 +  kubectl create ns jenkins
 +  helm install --name jenkins --namespace jenkins stable/jenkins -f ./values-autosys.yaml
 +В результате в неймспейсе **jenkins** создадутся все нужные объекты, однако **pod** будет в состоянии **pending**, потому что у него отсутсвует **PersistentVolume**, запрашиваемый при помощи **PersistentVolumeClaim**. \\
 +
 +===== values-autosys.yaml =====
 +<code>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</code>
 +  
 +===== jenkins pod Init:0/1 =====
 +Сразу после разворачивания **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**
 +====== Создадим StorageClass и PersistentVolume ======
 +<code>
 +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</code>
 +
 +
 +====== Пароль учетки admin ======
 +  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
 +
 +====== Дадим права на создание pod'ов ======
 +  kubectl create clusterrolebinding jenkins --clusterrole cluster-admin --serviceaccount=jenkins:default
 +====== Конфигурация после установки ======
 +После установки нужно как минимум сконфигурировать параметры **Jenkins Location**:
 +    * **Jenkins URL**
 +    * **System Admin e-mail address**
 +
 +====== Ссылки ======
 +https://habr.com/ru/post/442614/ \\
  
  • devops/setup_jenkins_on_kubernetes.txt
  • Last modified: 2020/04/23 10:51
  • by admin