Helm/Jenkins

From Chorke Wiki
Jump to navigation Jump to search

Helm » Repo » Manage

helm repo add jenkins https://charts.jenkins.io
helm repo update && helm repo list

Helm » K8s » Config

Helm » K8s » Config

export KUBECONFIG=${HOME}/.kube/eks-kubeconfig.yaml
export KUBECONFIG=${HOME}/.kube/gke-kubeconfig.yaml
export KUBECONFIG=${HOME}/.kube/lke-kubeconfig.yaml
export KUBECONFIG=${HOME}/.kube/shahed-aa-kubeconfig.yaml
export KUBECONFIG=${HOME}/.kube/shahed-ab-kubeconfig.yaml
export KUBECONFIG=${HOME}/.kube/shahed-ac-kubeconfig.yaml
export KUBECONFIG=${HOME}/.kube/shahed-ae-kubeconfig.yaml
kubectl config get-contexts
kubectl config view

Helm » K8s » Storage

Helm » K8s » Storage

cat <<'EXE'| sudo bash
mkdir -p           /var/minikube/pvc/jenkins/data-jenkins-0/home/plugins
chown -R 1000:1000 /var/minikube/pvc/jenkins/data-jenkins-0/
chmod -R   750     /var/minikube/pvc/jenkins/
EXE
cat <<'YML'| kubectl apply -f -
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-data-jenkins-0
spec:
  capacity:
    storage: 50Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: hostpath
  hostPath:
    path: /var/hostpath_pv/jenkins/data-jenkins-0
    type: DirectoryOrCreate
YML



Helm » Install

Helm » Install

helm show values jenkins/jenkins --version=5.8.67|less
helm show values jenkins/jenkins --version=5.8.68|less
kubectl create ns   jenkins
kubectl get ns|grep jenkins
cat <<ENV | kubectl -n jenkins create secret generic jenkins --from-env-file=/dev/stdin
admin-username=admin
admin-password=sadaqah!
ENV

JENKINS_INIT_SCRIPTS=$(mktemp -d)
cat <<'EXE'| tee ${JENKINS_INIT_SCRIPTS}/01-print-users.groovy >/dev/null
import jenkins.model.Jenkins
import hudson.security.HudsonPrivateSecurityRealm

def realm = Jenkins.instance.getSecurityRealm()

if (realm instanceof HudsonPrivateSecurityRealm) {
    println ">> Listing users in HudsonPrivateSecurityRealm:"
    realm.getAllUsers().each {
        println "- ${it.id}"
    }
} else if (realm.class.simpleName == 'SecurityRealm$None') {
    println ">> Security is not enabled. No user database is available."
} else {
    println ">> Security realm is: ${realm.getClass().getName()}, user listing may not be supported."
}
EXE

cat <<'EXE'| tee ${JENKINS_INIT_SCRIPTS}/02-print-plugins.groovy >/dev/null
import jenkins.model.Jenkins
import hudson.PluginWrapper

println ">> Installed plugins:"
Jenkins.instance.pluginManager.plugins.each {
    println "- ${it.getShortName()} (${it.getVersion()})"
}
EXE

kubectl -n jenkins create configmap jenkins-init --from-file=${JENKINS_INIT_SCRIPTS}
rm -rf ${JENKINS_INIT_SCRIPTS}
cat <<'YML'| kubectl apply -n jenkins -f -
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data-jenkins-0
  namespace: jenkins
  labels:
    app.kubernetes.io/name: jenkins
    app.kubernetes.io/version: 1.0.0
    app.kubernetes.io/instance: jenkins
    app.kubernetes.io/managed-by: kubectl
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi
  storageClassName: hostpath
  volumeName: jenkins-data-jenkins-0
YML

Find More 👉 Storage » Mount


Find More 👉 Storage » Class » Hostpath


Find More 👉 Storage » Persistent Volume


cat <<YML | helm -n jenkins install    jenkins jenkins/jenkins --version=5.8.68 -f -
---
controller:
  componentName: jenkins-controller
  image:
    tag: 2.504.3
    tagLabel: jdk21
    pullPolicy: IfNotPresent
  disableRememberMe: false
  numExecutors: 5
  jenkinsUrl: https://jenkins.shahed.biz
  jenkinsAdminEmail: tool.tech@shahed.biz
  resources:
    limits:
      cpu: 2000m
      memory: 4Gi
    requests:
      cpu: 50m
      memory: 256Mi
  initContainerResources:
    limits:
      cpu: 2000m
      memory: 4Gi
    requests:
      cpu: 50m
      memory: 256Mi
  agentListenerPort: 50000
  agentListenerEnabled: true
  agentListenerLoadBalancerSourceRanges:
    - 10.19.83.0/24
    - 10.20.40.0/24
    - 10.20.41.0/24
    - 192.168.49.0/24
  agentListenerServiceType: LoadBalancer
  agentListenerLoadBalancerIP: 192.168.49.104
  loadBalancerSourceRanges:
    - 10.19.83.0/24
    - 10.20.40.0/24
    - 10.20.41.0/24
    - 192.168.49.0/24
  loadBalancerIP: 192.168.49.104
  installPlugins: false
  ingress:
    enabled: true
    ingressClassName: nginx
    hostName: jenkins.shahed.biz

persistence:
  size: 50Gi
  enabled: true
  subPath: home
  storageClass: hostpath
  accessMode: ReadWriteOnce
  existingClaim: data-jenkins-0
YML

Helm » K8s » Verify

Helm » K8s » Verify

xdg-open https://www.cdn77.com/tls-test/result?domain=jenkins.shahed.biz
xdg-open https://jenkins.shahed.biz
kubectl -n jenkins logs -f  svc/jenkins -c config-reload-init
kubectl -n jenkins logs -f  svc/jenkins -c config-reload
kubectl -n jenkins logs -f  svc/jenkins -c jenkins
kubectl -n jenkins logs -f  svc/jenkins -c init
---
Page: https://jenkins.shahed.biz
user: tool.tech@shahed.biz
pass: sadaqah!

Helm » K8s » Scaling

Helm » K8s » Scaling

cat <<YML | \
kubectl -n jenkins patch sts/jenkins --patch-file=/dev/stdin
---
spec:
  replicas: 0
YML

cat <<YML | \
kubectl -n jenkins patch sts/jenkins --patch-file=/dev/stdin
---
spec:
  replicas: 1
YML

Helm » Uninstall

Helm » Uninstall

helm uninstall        jenkins -n jenkins
kubectl delete pvc    --all   -n jenkins
kubectl delete pv     jenkins-data-jenkins-0
kubectl delete deploy --all   -n jenkins
kubectl delete all    --all   -n jenkins
kubectl delete namespace         jenkins

Jenkins » Plugin

Jenkins » Plugin » Manager

sudo apt-get install -y openjdk-21-jdk
mkdir -p ~/.config/jenkins/
cd       ~/.config/jenkins/

cat <<'EXE'| bash
JENKINS_PLUGIN_CLI=./jenkins-plugin-manager-2.13.2.jar;\
if [[ ! -f  ${JENKINS_PLUGIN_CLI} ]];then wget -cq https://github.com/jenkinsci/\
plugin-installation-manager-tool/releases/download/2.13.2/jenkins-plugin-manager-2.13.2.jar -P .;fi
EXE
cat <<'JPI'| tee ./plugins.txt >/dev/null
git:latest
kubernetes:latest
octopusdeploy:latest
workflow-aggregator:latest
configuration-as-code:latest
JPI
alias jenkins-plugin-cli="$(cat << EOF
mkdir -p ./plugins/;/usr/lib/jvm/java-21-openjdk-amd64/bin/java \
 -jar jenkins-plugin-manager-2.13.2.jar -d ./plugins \
 -f ./plugins.txt --jenkins-version=2.504.3 --verbose
EOF
)"
jenkins-plugin-cli

Playground

Playground

helm -n jenkins install    jenkins jenkins/jenkins --version=5.8.67
helm -n jenkins upgrade -i jenkins jenkins/jenkins --version=5.8.68
helm    show    values             jenkins/jenkins --version=5.8.68|less

kubectl -n jenkins get secret jenkins -o json|jq -r '.data."jenkins-admin-password"'|base64 -d;echo
kubectl -n jenkins get secret jenkins -o json|jq -r '.data."jenkins-admin-user"'    |base64 -d;echo

kubectl -n jenkins exec -it svc/jenkins -c config-reload -- id
kubectl -n jenkins exec -it svc/jenkins -c jenkins -- id

kubectl -n jenkins logs -f  svc/jenkins -c config-reload-init
kubectl -n jenkins logs -f  svc/jenkins -c config-reload
kubectl -n jenkins logs -f  svc/jenkins -c jenkins
kubectl -n jenkins logs -f  svc/jenkins -c init
kubectl -n jenkins delete all --all
kubectl -n jenkins delete ing --all
kubectl -n jenkins delete sts --all
kubectl    delete  pv jenkins-data-jenkins-0
kubectl -n jenkins delete svc --all
kubectl -n jenkins delete pvc --all
kubectl -n jenkins rollout history sts jenkins
kubectl -n jenkins rollout restart sts jenkins
kubectl -n jenkins rollout status  sts jenkins
kubectl -n jenkins logs -f  svc/jenkins -c config-reload
kubectl -n jenkins logs -f  svc/jenkins -c jenkins
kubectl -n jenkins logs -f  svc/jenkins -c init

References

References