多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## 准备部署的yml文件 ```yml apiVersion: apps/v1 kind: Deployment metadata: namespace: test name: pipeline labels: app: pipeline spec: replicas: 2 selector: matchLabels: app: pipeline template: metadata: labels: app: pipeline spec: containers: - name: pipeline image: 192.168.11.102:80/repo/pipeline:v4.0.0 imagePullPolicy: Always ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: namespace: test labels: app: pipeline name: pipeline spec: selector: app: pipeline ports: - port: 8081 targetPort: 8080 type: NodePort --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: test name: pipeline spec: ingressClassName: ingress rules: - host: mashibing.pipeline.com http: paths: - path: / pathType: Prefix backend: service: name: pipeline port: number: 8081 ``` ### Harbor私服配置 在尝试用kubernetes的yml文件启动pipeline服务时,会出现Kubernetes无法拉取镜像的问题,这里需要在kubernetes所在的Linux中配置Harbor服务信息,并且保证Kubernetes可以拉取Harbor上的镜像 - 设置Master和Worker的私服地址信息 | 设置Harbor私服地址 | | :------------------------------------------: | | ![](https://img.kancloud.cn/7b/5e/7b5e889b43568771faae215702a04e9c_1696x426.png) | - 在Kuboard上设置私服密文信息 | 设置密文并测试 | | :------------------------------------------: | | ![](https://img.kancloud.cn/58/eb/58eb317ec208a97817472acc442f67ff_1918x923.png) | 按照复制指令的位置测试认证,效果如下 | 测试效果 | | :------------------------------------------: | | ![](https://img.kancloud.cn/c6/3a/c63afc47dedd5c30bcba1cd24d961563_1202x233.png) | ### 测试使用效果 执行kubectl命令,基于yml启动服务,并且基于部署后服务的提示信息以及Ingress的设置,直接访问 | | | -------------------------------------------- | | ![](https://img.kancloud.cn/9c/e9/9ce91a28d5e3644b5a17184a7a5b96f0_1038x152.png) | | ![](https://img.kancloud.cn/a5/77/a57772403d9ac7fcd409e22367593562_632x136.png) | ### Jenkins远程调用 - 将pipeline.yml配置到Gitlab中 | 配置yml文件 | | :------------------------------------------: | | ![](https://img.kancloud.cn/81/4d/814d924ada2845d261f595c635730c4a_1255x948.png) | - 配置Jenkins的目标服务器,可以将yml文件传输到K8s的Master上 | 设置目标服务器 | | :------------------------------------------: | | ![](https://img.kancloud.cn/b6/1d/b61db6e5c02708fcf32de08598ceee1f_1901x563.png) | - 修改Jenkinsfile,重新设置流水线任务脚本,并测试效果 | 传递yml文件脚本 | | :------------------------------------------: | | ![](https://img.kancloud.cn/a5/bc/a5bc9cd872cb424e60fcad1f36ab0e56_1187x379.png)| |![](https://img.kancloud.cn/a0/52/a052a39d71eb3a93ceae0a5d0dd7821d_1826x673.png) | - 设置Jenkins无密码登录k8s-master 将Jenkins中公钥信息复制到k8s-master的~/.ssh/authorized_keysz中,保证远程连接无密码 | 远程执行命令无需密码 | | :------------------------------------------: | | ![](https://img.kancloud.cn/82/9c/829c4392de4d5595cd00f6ff7bdc46ca_808x76.png) | - 设置执行kubectl的脚本到Jenkinsfile | 设置Jenkinsfile | | :------------------------------------------: | | ![](https://img.kancloud.cn/1f/48/1f48f8ad67c4b230edf218e369d73bc3_1118x243.png)| - 执行查看效果 | 执行流水线 | | :------------------------------------------: | | ![](https://img.kancloud.cn/80/25/80258bf631b270aa2f5f70ba270cfcff_1828x679.png) | 可以查看到yml文件是由变化的, 这样k8s就会重新加载 - 查看效果 | 效果 | | :------------------------------------------: | | ![](https://img.kancloud.cn/ac/42/ac428a388407768e99b2999204df4595_535x93.png)| Ps:这种方式更适应与CD操作,将项目将基于某个版本部署到指定的目标服务器