持续集成持续交付

持续集成 持续交付

https://www.jenkins.io/

https://www.jenkins.io/zh/doc/

DevOps

# 创建docker的文件影射卷
docker volume create jenkins

# 创建实例
docker run -d --name jenkins \
  -p 8080:8080 -p 50000:50000 \
  -v jenkins_30:/var/jenkins_home \
  jenkins/jenkins:lts

# 获得初始管理密码
docker exec jenkins_hogwarts cat /var/jenkins_home/secrets/initialAdminPassword

示例项目

https://github.com/jenkins-docs

https://github.com/jenkins-docs/simple-python-pyinstaller-app

https://github.com/jenkins-docs/simple-java-maven-app

轻量级别的K8S

https://minikube.sigs.k8s.io/docs/

https://docs.k3s.io/zh/

K8S

k8s集群链接

连接配置

  • 添加证书
  • 选择PEM encoded certificate and key
  • 添加 Certificates ,client-certificate指向的文件内容
  • 添加私钥,client-key指向的内容

client-certificate可以从client-certificate-data中用base64解码。

minikube config


apiVersion: v1
clusters:
  - cluster:
      certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJWC9uMUVIK0dkUmt3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TlRBek1qVXhNVEl5TlRkYUZ3MHpOVEF6TWpNeE1USXlOVGRhTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUUR4U0VHMk8ya2FmMURCcWVCaG9DQUh5a3J0cFEyUFpmdzJ2OUY3Ni95WVAzeEpEMUpDWFlpSUZUWkoKTjMzNkNWQzZ4dHJORE5CSytOOFpmQVlxYVAwM0pZTFFwZVBoK29oNXQwNUJYMzBaRXJiMjdZMWJlZGZ6VGFCVgpyZjEycmd6ZW1VRFZreVdNdzdGWDVSbFk4V0s0UzZrT2tTZEQ1Y2hwUWNzWjZYNzR0S2VxSjFQQjRUTHZ6cGFEClpWTnVEN3dJb1hkbzN2WUJaRU41Mmp5V3BtQUtEMCtyYmxKOTBqTTYydE1aNWdQTys4NHkwSW9JbTRNWkMzcnMKTnp4QVQ1bDFqZUJIWGJjdS9tbVBuRURVQnBjWm9qUDNVMWtycHh2SGFTMVN4TjhRa0hhL3JiaGdxbjI3TktnZQpQdHlIYjJrLzJ5VnJmQVVhZXYwamNnVXVrbzJ6QWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJUaGhvcTBZaTVYQXNIbDRlVEZOZ2dLTERSMDJEQVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ2VGTEJ3V0ptWApBNHVFTFNnSWxBeEZNc0xaR3JQZWtmRThNQURhU0hZRkRlWEk0QTdpUFhyK3F3c2FIditOSzNPWFVJd0M0enZHCk9OcjkxbHVHRTVneW9lUll0ZHJCbHZXNlYxU05zdHZYczA5cnZMQ3EveWlTWU8vTlJqS21iV1FIeGI0Q2kwd20KaGNYSGtJOElYQ3ZXcEVGdk1XaTY5dWZ6V2VTVlA2M016aDlNWjZRZUllcXQ1L0d4QUg4Z2JybmNuVEZxaVFKaAp1bWJPdnF3SzlHMlU3OWlqK3RnU3dsTUM0TUV5RUFJQWNiNk95RnpOZnJLdHRQaVp5bmNUU0FXYXN6UytFa3NBClBwVkJKaEcxelJJeWdFZGpCRm9XdzRneHhVamtiVDJaYTQ2b3h3eGs3blFFcHRraXlWblJjbmllc3VLMUM1VjUKMENMaHYvQUpWWlpuCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
      server: https://kubernetes.docker.internal:6443
    name: docker-desktop
  - cluster:
      certificate-authority: /Users/seveniruby/.minikube/ca.crt
      extensions:
        - extension:
            last-update: Sat, 05 Jul 2025 22:57:54 CST
            provider: minikube.sigs.k8s.io
            version: v1.36.0
          name: cluster_info
      server: https://127.0.0.1:50258
    name: minikube
contexts:
  - context:
      cluster: docker-desktop
      user: docker-desktop
    name: docker-desktop
  - context:
      cluster: minikube
      extensions:
        - extension:
            last-update: Sat, 05 Jul 2025 22:57:54 CST
            provider: minikube.sigs.k8s.io
            version: v1.36.0
          name: context_info
      namespace: default
      user: minikube
    name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
  - name: docker-desktop
    user:
      client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURRakNDQWlxZ0F3SUJBZ0lJRWh2NU8rUFVsSWd3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TlRBek1qVXhNVEl5TlRkYUZ3MHlOakF6TWpVeE1USXlOVGRhTURZeApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sc3dHUVlEVlFRREV4SmtiMk5yWlhJdFptOXlMV1JsCmMydDBiM0F3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQzhFbVpJeGZOakhkbnIKTkhacTc0V3BNTjh6SDgvT0ppeGlTWjJmNCs3cDhOZFpkbDZ2ZnQ5QUZXeVlLVTZ3T0dQNXMvZGljSHNvaWYwRwpZVGNmVnVNdDhFV25PQ3d0anE1d2p5V2l5WWxyRENFVWxpRmg0K3pMeEE1WDg0eFdqNUczZkJZUkNPK3BPL1Q0CmJrdGVpdWYydEJjRXVEN1B5Vnk4WHYwbGprZjNkY3VzUmdMUDliQWNwYUxra2MyV01HcXFIVVpqeVJKNkk3TFQKUlpRaGhEcHVzMjVwam5tRTB5MXlyREZ2OHpWNW1TaVpZcE12T0N5RldMci8xK2t0eEZsaU5yMzlpcTZoOXZOZQpHYUtuRlJ2QlEyOGQrUVFLTGVKNkt3TDFpNXJ5cjBwZmZYSE1QeE1CdzNQT1dNUit2TGQxR1RiRE1ueEhtcnlaCjd1aDZhUW8xQWdNQkFBR2pkVEJ6TUE0R0ExVWREd0VCL3dRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUYKQlFjREFqQU1CZ05WSFJNQkFmOEVBakFBTUI4R0ExVWRJd1FZTUJhQUZPR0dpclJpTGxjQ3dlWGg1TVUyQ0FvcwpOSFRZTUIwR0ExVWRFUVFXTUJTQ0VtUnZZMnRsY2kxbWIzSXRaR1Z6YTNSdmNEQU5CZ2txaGtpRzl3MEJBUXNGCkFBT0NBUUVBd05VTXg3K1JMTzBPVFkvUTBDSEgyVzBPYjBDSkRHcVdpZXlPUlRhRVlWa1o3aVo1NmppVUtQQUsKK1ZYS0dnMTRqY1hOV0psNnFFQ3pkNWNwbGhiaXFjK1F3Q0ZwRzB2R3FZWjBnbGlOblRYWHk1TXkwUlV3V2VaWApUbnFpWkw5ZnZEU1VtcnBYczRkcjJxK3YxKzMzZ2crZ2M0dTZ6d1dXZ2pWbHBBdkZFNmtPSnVMYlV4ZUVFTElYCjV4NmJoRFA4aFJCcDZZMnI2QjYzTVg3Q0k4MDhJZDlkZ2NIbVMyaDgxY21pbFNxTXU1Q3VUN2lrOUxVamZENXIKSUlzd0luT3k1UERlR3lRdm1RL3M5U056UjA5a2NNS1RzWDZoYWI2QzJhYlJOZ1E1Z3EyUHN0bEY4VDZtc0JQRgpqUDJ3VTVlNnBuVkcrTTlnaVkvWnkyamRFQjA2Z0E9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
      client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBdkJKbVNNWHpZeDNaNnpSMmF1K0ZxVERmTXgvUHppWXNZa21kbitQdTZmRFhXWFplCnIzN2ZRQlZzbUNsT3NEaGorYlAzWW5CN0tJbjlCbUUzSDFiakxmQkZwemdzTFk2dWNJOGxvc21KYXd3aEZKWWgKWWVQc3k4UU9WL09NVm8rUnQzd1dFUWp2cVR2MCtHNUxYb3JuOXJRWEJMZyt6OGxjdkY3OUpZNUg5M1hMckVZQwp6L1d3SEtXaTVKSE5sakJxcWgxR1k4a1NlaU95MDBXVUlZUTZick51YVk1NWhOTXRjcXd4Yi9NMWVaa29tV0tUCkx6Z3NoVmk2LzlmcExjUlpZamE5L1lxdW9mYnpYaG1pcHhVYndVTnZIZmtFQ2kzaWVpc0M5WXVhOHE5S1gzMXgKekQ4VEFjTnp6bGpFZnJ5M2RSazJ3eko4UjVxOG1lN29lbWtLTlFJREFRQUJBb0lCQVFDdkhqYk5aanhWT3pOeApWWjA1dnlObXdkSGlpYWwyRzRkU1VaZUtqTE1tYzVJaGhCMXdMYU4weVQ0ZmhMNzNTTnFXWkdOaDdyaE9yQVhFCnpmcUVuT1BXSDViTHVIc3lSRnZiQlA4WFQ2ODcxTVJzcGNvWm15QWZMOFBuVXlpR1pSSmFsaGo1N2FjeW5saGcKaGxwNWdyK3dzRW1LcElBZi9DLzBXa0krbVBnYnlxSDNKd1ZGU1VZaWtZTEt4N25QdWZ1eVVRWGEvSUlsRHdVUgpIR1AvTXFpVGhZMUZGQnJINGltampCVzl3cXMzYmVxcXZEZ0hBYzBhVFYrd3l1bHNQUXBLYUtxN0pOYWlMY1ZwCnplSEw0S0VCRitzS3B3aTBXN1c2cVdtWktHTUJ0U0J4dm9pd21pVVBRVEFTV3c4bDd1ODBjNFRqNWU1RGlxM2EKVTRrdFVEdjFBb0dCQVBCQzFRSFc0aFI4K2NHV3ZXTmc5WVU3bXl5WG1Jc3V3Qmt1dFZqa2R3UGZzaU1xNWdzWQpyUVRrWjZvbXFmSUIwVWpKK0R4c2w2eUlKTVRwQjJ1NTErMkVSTHc4S1h6YU1Oc3laL2YySXNlZHFub0FlQ3pkCnZORXViSUxoS0dwSjR4aVhHbHA3WWdQS2ZUUGZxMXduNU1FbEdQNHoyYUNXaVY2NDJOc3d6ZzBUQW9HQkFNaGsKVzJKc3ZRNWtEQ0N1MXhXdXJ6VjVRdk5iaGZ1aHVGdTFuVjdBaDFzRm9ubnI0dUgvcEZxN0Z2ZlJQWlNHcGRTTwpYYlJDdGFCUDY3VmJmN2hhR2JvRlFoZHJmWHpHM0p5SGMvdXMySjM5eit2d0pqbFl1M0p2M1J0aG5hZzBJMzJRCmRqWHdtQm5sSXdGSG81SnlKUzFrb0JWc2hSSHY0Y1JhbU1NUE1keVhBb0dBRlV2SE42ZUZXSTJQVWNKN3ZRQk8KSXVZYXBnUTE2RGhYbktQUVBUWGErc1BzTlVQTEtqYWd0MnRMYVFDT1ZiNGxmODh2S3FQeGVjQ0RpZFNoN01HSApTeTFMTG1naXdVZFJ4MHdiZlJZYkZSaDdrTjdUeUI1TGF6c3pNUkttRTIzRExGM1FYeTdLakUxNWRZeWcwc1ZTCmVIQkNXOTNhcjJwSWVOWG5tdDRqbFhNQ2dZQStpNHcyU1NnczRLOGtXRTNMZDYwNTdISW9FSzNkM3hqeWp0bmkKWkFjYk1zUUdkOGhscjJ1MTRlVUdUaW1CUFJGdktVdzM0Z1pjVmZXRXNsMUh4ZDkzdndKazJ1amMxQml4UmxtOQorTEhYaGd1cVlWY2MyUVFRY0xlN1B4bDlFV0R1WlBOd1hIcXN3bWJObEhXS1ZOUWp1ZDk1TUZqTVEybmM1a1g5Cnc3VlZXd0tCZ0dpbjdRSUFiNWFMSXNPVWVTdlVKdHoybmFZUjVHQVQxY1dyQk52Z3h3MEZSS3F6S1E4L3dWT20KZFNQcms3MWJWbUFvTEN1NUw4Y0VUU3BRak0yYjJsNzA1Vnk4WUdQSUFWZDk5dVF3dzBtZlhHYUVhSnpFT05VKwpPRzk2Z2NhNXdHNHhBZFp3Y09NN2tpS05CZFFYRSs3SmdtQXlPM3NrZ1pzbXE5Z1h4V3AvCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
  - name: minikube
    user:
      client-certificate: /Users/seveniruby/.minikube/profiles/minikube/client.crt
      client-key: /Users/seveniruby/.minikube/profiles/minikube/client.key

证书相关的字段区别

字段名 含义 内容格式 用法说明
client-certificate-data 以Base64编码的客户端证书内容(CRT) 证书文件经过Base64编码后的字符串 直接内嵌在 kubeconfig 文件中,方便携带
client-certificate 指向客户端证书文件的路径 文件系统中的证书文件路径(比如 /path/to/client.crt kubeconfig 通过路径读取证书文件