Configuración simple de la instalación de jenkins y el complemento de kubernetes

Configuración simple de la instalación de jenkins y el complemento de kubernetes

instalación de jenkins

docker + docker-compose 安装 略
docker-compose.yaml

version: '3'
services:
  jenkins:
    image: 'jenkins/jenkins:2.255'
    container_name: jenkins
    restart: always
    user: root
    ports:
      - '80:8080'
      - '50000:50000'
    environment:
      TZ: Asia/Shanghai
    volumes:
      - '/data/jenkins/jenkins_home:/var/jenkins_home'

puesta en marcha

docker-compose up -d

Acelere la instalación de complementos

1. Reemplazar la dirección de origen

cp /data/jenkins/jenkins_home/hudson.model.UpdateCenter.xml /data/jenkins/jenkins_home/hudson.model.UpdateCenter.xml.bak
sed -i 's#updates.jenkins.io#mirrors.aliyun.com/jenkins/updates#g' /data/jenkins/jenkins_home/hudson.model.UpdateCenter.xml

2. Reinicie jenkins

docker restart jenkins

3. Abra Jenkins en el navegador para

cat /data/jenkins/jenkins_home/secrets/initialAdminPassword

Inserte la descripción de la imagen aquí
4. Reemplace la fuente de descarga. Vaya
Inserte la descripción de la imagen aquí
a esta interfaz y realice las siguientes operaciones:

cp /data/jenkins/jenkins_home/updates/default.json /data/jenkins/jenkins_home/updates/default.json.bak
sed -i 's#https://updates.jenkins.io/download#https://mirrors.aliyun.com/jenkins#g' /data/jenkins/jenkins_home/updates/default.json
sed -i 's#http://www.google.com#https://www.baidu.com#g' /data/jenkins/jenkins_home/updates/default.json

Luego haga clic en instalar y haga clic en el complemento recomendado

Instalación de complemento

Búsqueda de instalación directa
Inserte la descripción de la imagen aquí

adquisición de información k8s

Obtenga la información requerida del archivo de configuración k8s.
1. Dirección de Kubernetes

server:对应的就是地址

2. Clave de certificado de servicio de Kubernetes

certificate-authority-data: 对应的值就是key证书
须要base64解码

Primero escriba el valor en el archivo tmp, ejecute la siguiente instrucción para decodificar

cat tmp | base64 -d
# 结果
-----BEGIN CERTIFICATE-----
MIICyDCCAbCgAwIBAgIBADANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwprdWJl
cm5ldGVzMB4XDTE5MDgxOTE2MDk1MloXDTI5MDgxNjE2MDk1MlowFTETMBEGA1UE
AxMKa3ViZXJuZXRlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMSb
D4rrCWvtMYsVqZ62I9mGodCIvJiVo6p+ajpVIoXXoDib8uVvdPGDSd2N1RMPWF+h
bRiuZNSZ27OLcd1RbcdJOKTyFYuzdeTYzrNXSfDavO9UafAPAwAKZLFb1616Sx64
jQ/nWVq6IB3UPfVuH3U0N0i7wrmQFcKc5HztLeLCDXIvqQmgB/ExFPi7EsJTumwW
2mQka2xvTpXbidYW/qVmWFr22a19Qp9VznHUIgbkB6Rx2Jp03g8GlOyn09CeIi8l
lStvT9+TseBuSDDgjCBwuSdutuuPu3RoxzyiVkzfLUH2Sy0eCuUS8mSHPrOHBkbG
7MLT9DLoRNZ+fMdU3b0CAwEAAaMjMCEwDgYDV222QH/BAQDAgKkMA8GA1UdEwEB
/wQFMAMBAf8wDQY22oZIhvcNAQELBQADggEBABnbW1fSOlMo+5asH32L39u69c0n
yDo4RpQ+6pJgWmWZKwVV+qxs0F8XyzryDr6iQRYAETDYaKM78qfN2IZNyxca2PrQ
ku0SgADeAhoVMPeA0Snn8RcnQjLjaMQraTul7irW8hLU1w5KTVceFbG6JA3PbVDq
uTGWwBwOh98i3Wod+bog3TBJFg2SHYN1PusHRagsXIrkPr+4DDMqWQQsYpuuesep
7eI2F1OT9U8dDx55qM7KD/AcF2NSCPZ6ITdGH/PAePkom3vG2JQrrBwXF2in4VW0
4PP/AloQkc67il0fqXxcB2PhnxRzLunpuFrPp1NcYX606zu6KZ9FMVy5ZjY=
-----END CERTIFICATE-----

3. Las credenciales
se ejecutan aquí en un espacio de nombres jenkins separado.

# 创建命名空间
kubectl create namespaces jenkins
# 创建sa-jenkins用户
kubectl create serviceaccount  jenkins -n jenkins
# 绑定admin角色到sa-jenkins用户
kubectl create clusterrolebinding -n jenkins jenkins-cluster-admin --clusterrole='cluster-admin' --serviceaccount=jenkins:jenkins
# 查询token
kubectl get secrets -n jenkins -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='jenkins')].data.token}" | base64 -d

Configuración

En la gestión, hay una nube al final.
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

La dirección de introducción del complemento tiene ejemplos de configuración detallados: https://plugins.jenkins.io/kubernetes

Verificación simple

Guión simple

podTemplate(label: 'jnlp-slave', cloud: 'kubernetes', containers: [
    containerTemplate(name: 'maven', image: 'maven:3.3.9-jdk-8-alpine', ttyEnabled: true, command: 'cat'),
  ],
volumes: [
    //persistentVolumeClaim(mountPath: '/root/.m2', claimName: 'maven-m2'),
    //persistentVolumeClaim(mountPath: '/home/jenkins/agent/workspace', claimName: 'workspace'),
    ]
)
{
    
    
  node("jnlp-slave"){
    
    
      stage('Build'){
    
    
          //git branch: 'master', url: 'http://root:[email protected]/java/$JOB_NAME.git'
          container('maven') {
    
    
              stage('Build a Maven project') {
    
    
                  //sh 'mvn clean package -U deploy'
                  sh 'echo maven'
              }
          }
      }
      stage('deploy'){
    
    
          sh '''
          env
          sleep 300
          '''
          //sshPublisher(publishers: [sshPublisherDesc(configName: '76', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '/data/script/jenkins.sh $JOB_NAME', execTimeout: 120000000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/data/kubernetes/service/$JOB_NAME', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/$JOB_NAME*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
      }
  }
}

Interpretación de la tubería:

1. podTemplate crea una plantilla de pod. El campo de nube especifica a qué nube de kubernetes conectarse. Kubernetes acaba de crear un k8s y el nombre de la nube es kubernetes.
2. PersistentVolumeClaim define el montaje del directorio y el directorio de caché .m2 construido por maven y el directorio de datos generado por la compilación.
3. La siguiente canalización especifica las operaciones subsiguientes en jnlp-slave (es decir, la plantilla de pod también es el esclavo nodo)

Supongo que te gusta

Origin blog.csdn.net/lswzw/article/details/108536087
Recomendado
Clasificación