GNU/Linux >> Znalost Linux >  >> Linux

Jak nainstalovat Jenkins na Kubernetes

Úvod

Jenkins je nepřetržitá integrace nástroj, který automatizuje velkou část procesu vývoje softwaru. Několik vývojových týmů pracujících na více projektech v komplexním prostředí mikroslužeb může zatěžovat omezené zdroje. Jenkins vám pomůže dodat bezchybný konečný produkt podle plánu.

Cluster Kubernetes přidává do Jenkins novou vrstvu automatizace. Kubernetes zajišťuje, že zdroje jsou využívány efektivně a že vaše servery a základní infrastruktura nejsou přetížené.

Tento kurz vám ukáže, jak nainstalovat Jenkins na cluster Kubernetes.

Předpoklady

  • Přístup k příkazovému řádku/terminálu
  • Cluster Kubernetes
  • Plně nakonfigurovaný nástroj příkazového řádku kubectl na vašem místním počítači

Instalace Jenkinse na Kubernetes Cluster

Schopnost Kubernetes zorganizovat nasazení kontejnerů zajišťuje, že Jenkins má vždy k dispozici správné množství zdrojů. Níže uvedený příklad ukazuje, jak použít sadu souborů YAML k instalaci Jenkins na cluster Kubernetes . Soubory YAML lze snadno sledovat, upravovat a lze je neomezeně opakovaně používat.

Vytvořte jmenný prostor pro nasazení Jenkins

Odlišný jmenný prostor poskytuje další vrstvu izolace a větší kontrolu nad prostředím nepřetržité integrace. Vytvořte jmenný prostor pro nasazení Jenkins zadáním následujícího příkazu do terminálu:

kubectl create namespace jenkins

Název jmenného prostoru by měl být štítek kompatibilní s DNS. Tento příklad používá název jenkins .

Pomocí následujícího příkazu vypíšete existující jmenné prostory:

kubectl get namespaces

Výstup potvrzuje, že jenkins jmenný prostor byl úspěšně vytvořen.

Vytvořte si servisní účet

Účty služeb poskytují identity, které se používají k řízení procesů pod. Pomocí textového editoru vytvořte soubor YAML, do kterého budete ukládat prohlášení o servisním účtu:

nano sa-jenkins.yaml

Soubor definuje roli clusteru s oprávněními správce. Vytvoří také nový účet služby s názvem admin a spojí jej s dříve definovanou rolí clusteru.

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: admin
rules:
  - apiGroups: [""]
    resources: ["*"]
    verbs: ["*"]

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin
  namespace: jenkins

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: admin
subjects:
- kind: ServiceAccount
  name: admin
  namespace: jenkins

Uložte soubor a ukončete. Použijte konfiguraci pomocí kubectl apply .

kubectl apply -f sa-jenkins.yaml

Vytvoření Jenkinsova trvalého svazku a trvalého svazku

Úlohou trvalého svazku je ukládat základní data Jenkins a uchovávat je po dobu životnosti modulu. Vytvořte soubor YAML, který bude definovat součásti nasazení související s úložištěm:

nano volume-jenkins.yaml

V první části soubor deklaruje local-storage skladovací třída. Druhá část definuje jenkins-pv trvalý svazek, zatímco třetí vytváří nárok na trvalý svazek jenkins-pvc který bude vázán na jenkins-pv hlasitost.

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-pv
  labels:
    type: local
spec:
  storageClassName: local-storage
  claimRef:
    name: jenkins-pvc
    namespace: jenkins
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  local:
    path: /mnt
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - minikube

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-pvc
  namespace: jenkins
spec:
  storageClassName: local-storage
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

Uložte soubor a ukončete. Dále použijte soubor.

kubectl apply -f volume-jenkins.yaml

Vytvoření a použití souboru Jenkins Deployment File

Vytvořte soubor YAML pro uložení informací o nasazení Jenkins.

nano deploy-jenkins.yaml

Soubor nasazení v tomto příkladu využívá jenkins/jenkins:lts Docker image a vytvoří 1 repliku který bude vystaven na portu 8080 .

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
  namespace: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins-server
  template:
    metadata:
      labels:
        app: jenkins-server
    spec:
      securityContext:
            fsGroup: 1000 
            runAsUser: 1000
      serviceAccountName: admin
      containers:
        - name: jenkins
          image: jenkins/jenkins:lts
          resources:
            limits:
              memory: "2Gi"
              cpu: "1000m"
            requests:
              memory: "500Mi"
              cpu: "500m"
          ports:
            - name: httpport
              containerPort: 8080
            - name: jnlpport
              containerPort: 50000
          livenessProbe:
            httpGet:
              path: "/login"
              port: 8080
            initialDelaySeconds: 90
            periodSeconds: 10
            timeoutSeconds: 5
            failureThreshold: 5
          readinessProbe:
            httpGet:
              path: "/login"
              port: 8080
            initialDelaySeconds: 60
            periodSeconds: 10
            timeoutSeconds: 5
            failureThreshold: 3
          volumeMounts:
            - name: jenkins-data
              mountPath: /var/jenkins_home         
      volumes:
        - name: jenkins-data
          persistentVolumeClaim:
              claimName: jenkins-pvc

volumeMounts sekce souboru připojí trvalý svazek vytvořený v předchozím kroku. livenessProbe a readinessProbe sekce deklarují sondy, které restartují neúspěšné moduly a detekují, kdy jsou moduly připraveny.

Ukončete soubor a uložte změny. Použijte nově vytvořený soubor k nasazení Jenkins:

kubectl apply -f deploy-jenkins.yaml

Vytvoření a použití souboru Jenkins Service

Služba Kubernetes je abstrakce, která Jenkinse vystavuje širší síti. Umožňuje nám udržovat trvalé připojení k modulu bez ohledu na změny, ke kterým v clusteru dochází.

Vytvořte soubor YAML, ve kterém definujete službu:

nano service-jenkins.yaml

Přidejte následující obsah:

apiVersion: v1
kind: Service
metadata:
  name: jenkins-svc
  namespace: jenkins
  annotations:
      prometheus.io/scrape: 'true'
      prometheus.io/path:   /
      prometheus.io/port:   '8080'
spec:
  selector: 
    app: jenkins-server
  type: NodePort  
  ports:
    - port: 8080
      targetPort: 8080
      nodePort: 44000

Uložte soubor a ukončete. Nyní vytvořte službu zadáním:

kubectl apply -f jenkins-service.yaml

Nyní máte přístup k ovládacímu panelu Jenkins.

Přístup k Jenkins Dashboard

Než přistoupíte ke spuštění Jenkins, zkontrolujte, zda všechny komponenty, které jste nasadili, fungují podle očekávání. Použijte kubectl get all a zadejte správný jmenný prostor:

kubect get all -n jenkins

Příklad ukazuje správně fungující nasazení:

  • Pod je označen jako READY a Running .
  • Adresa IP clusteru a porty služby byly úspěšně přiděleny.
  • Nasazení je označeno jako READY a AVAILABLE .
  • Bylo dosaženo požadovaného počtu replik (1).

Přejděte do prohlížeče a přistupte k uzlu pomocí jeho IP adresy a portu, který jste definovali v souboru služby. Pokud neznáte IP adresu svého uzlu, najděte ji ve výstupu následujícího příkazu:

kubectl get nodes -o yaml

IP adresa uzlu se nachází ve status část výstupu.

S využitím informací z příkladu je adresa Jenkinsova řídicího panelu:

http://192.168.49.2:44000

Chcete-li získat přístup k Jenkins, musíte nejprve zadat své přihlašovací údaje. Výchozí uživatelské jméno pro nové instalace je admin .

Chcete-li získat heslo:

1. Najděte název modulu ve výstupu kubectl get all příkaz výše.

2. Jakmile najdete název podu, použijte jej pro přístup k protokolům podu.

kubectl logs jenkins-56c9d59dc-pv8kc --namespace jenkins

3. Najděte heslo na konci protokolu ve formátu dlouhého alfanumerického řetězce.

Úspěšně jste nainstalovali Jenkins do svého clusteru Kubernetes a můžete jej použít k vytvoření nových a efektivních vývojových kanálů.


Linux
  1. Jak nainstalovat Jenkins na Linux

  2. Jak nainstalovat Jenkins na Ubuntu 16.04

  3. Jak nainstalovat Jenkins na Ubuntu 20.04

  1. Jak nainstalovat Jenkins na CentOS 8

  2. Jak nainstalovat Kubernetes na Ubuntu 18.04

  3. Jak nainstalovat Jenkins na Ubuntu 18.04

  1. Jak nainstalovat Jenkins na Ubuntu 20.04

  2. Jak nainstalovat Jenkins na CentOS 7

  3. Jak nainstalovat Jenkins na CentOS 8