本文介绍: 将 Jenkins 设置为 Spinnaker 中的持续集成 (CI) 系统可让您使用 Jenkins 触发管道、向管道添加 Jenkins 阶段或向管道添加脚本阶段。最佳实践表明,这些工件上传到专用工件存储库,例如 GCR、DockerHub、Artifactory、Maven 等,但有时将工件存储为构建输出的一部分会更容易。使用 Jenkins 基本 URL 和有权访问构建工件的凭证为 Jenkins 创建 HTTP 文件工件帐户,用于通过http方式jenkins 下载构建物。

jenkins job 触发部署

将 Jenkins 设置为 Spinnaker 中的持续集成 (CI) 系统可让您使用 Jenkins 触发管道、向管道添加 Jenkins 阶段或向管道添加脚本阶段
在这里插入图片描述
前置要求:

启用 jenkins触发器

官方文档https://spinnaker.io/docs/setup/other_config/ci/jenkins/

通过halyard修改spinnaker配置启用jenkins

hal config ci jenkins enable

配置Jenkins,需要用到账号密码

hal config ci jenkins master add my-jenkins-master-01 
  --address http://192.168.72.42:8080 
  --username admin 
  --password jenkins

启用csrf

hal config ci jenkins master edit my-jenkins-master-01 --csrf true

更新配置

hal deploy apply

启用 http Artifact

首先,启用 http工件提供程序

hal config artifact http enable

使用 Jenkins 基本 URL 和有权访问构建工件的凭证为 Jenkins 创建 HTTP 文件工件帐户,用于通过http方式从 jenkins 下载构建物。

hal config artifact http account add my-http-artifact-account 
  --username admin 
  --password jenkins

更新配置

hal deploy apply

创建jenkins流水线

示例中的jenkins实例ubuntu上以apt install方式进行部署。

在jenkins中新建任务类型选择流水线
在这里插入图片描述

Jenkins 能够将构建中的文件保存为构建工件。这些对象可以是已编译二进制文件kubernetes 清单或作为构建过程的一部分创建的任何其他工件。

最佳实践表明,这些工件应上传到专用工件存储库,例如 GCR、DockerHub、Artifactory、Maven 等,但有时将工件存储为构建输出的一部分会更容易。

配置jenkins pipeline然后点击保存
在这里插入图片描述

以下是一个完整的存储工件的 Jenkins 管道示例,为了简化流程,直接创建dist目录yaml文件

pipeline{
    agent any
    stages {
      stage('Generate Kubernetes Manifests') {
        steps {
        sh '''
        #npm install
        #npm run import
        #npm run build
        echo "BUILD=${BUILD_NUMBER}" > build.properties
        rm -rf dist && mkdir -p dist
        cat &gt;dist/nginx-demo.yaml<<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-app
  name: nginx-app
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-app
  template:
    metadata:
      labels:
        app: nginx-app
    spec:
      containers:
        - image: docker.io/library/nginx:latest
          name: nginx-app
          ports:
            - containerPort: 80
EOF
        '''
        }
      }
    }
    post {
      always {
        archiveArtifacts artifacts: 'dist/*.yaml', fingerprint: true
        archiveArtifacts artifacts: 'build.properties', fingerprint: true
      }
    }
}

该行echo "BUILD=${BUILD_NUMBER}" &gt; build.propertiesbuild.properties 添加一个内部版本号字段,稍后可使用字段生成用于使用 HTTP 下载工件的 URL。

Jenkins 构建工件,执行作业,将生成以下工件
在这里插入图片描述

配置spinnaker 触发器

官方文档https://spinnaker.io/docs/guides/user/pipeline/triggers/jenkins/

创建PIPELINE

访问spinnaker,新建APPLICATION,点击PIPELINES,创建管道。

修改配置阶段

在新管道的配置阶段添加触发器。从类型菜单选择Jenkins,配置示例如下。

从Master下拉菜单选择 Jenkins master ,然后从Job下拉菜单选择一个作业

在这里插入图片描述
如果需要添加属性文件,build.properties 工件应该像上面这样添加到 Jenkins 触发器中。

新建deploy stage

点击Add stage,Type选择Deploy(Manifest),并配置k8s账号信息

清单配置示例如下,配置完成后保存配置。
在这里插入图片描述

最后部分,要将 Jenkins 构建工件添加为 Spinnaker 工件,请执行以下操作

在jenkins中右键单击上面构建输出显示的构建工件。这将为您提供构建工件的完整 URL – 类似这样

http://192.168.72.42:8080/job/nginx-demo/1/artifact/dist/nginx-demo.yaml

使用以下变量将新的 HTTP 文件工件添加到管道,将内部版本号替换属性中的 BUILD 字段 -${trigger.properties[‘BUILD’]}如下所示

http://192.168.72.42:8080/job/nginx-demo/${trigger.properties['BUILD']}/artifact/dist/nginx-demo.yaml

在这里插入图片描述

测试jenkins job触发部署

连接jenkins,触发新的构建任务

在这里插入图片描述

查看spinnaker是否自动触发管道部署

在这里插入图片描述

连接kubernetes确认部署的pods

root@node40:~# kubectl get pods
NAME                         READY   STATUS    RESTARTS       AGE
nginx-app-8494986646-57ssz   1/1     Running   0              17m

原文地址:https://blog.csdn.net/networken/article/details/134734083

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_24196.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注