k8s与CICD--借助scp插件实现非容器项目的部署
前言
最近连续996加班,一直没有时间完成drone系列文章。drone-wechat插件实现了 一半,由于企业微信token申请比较麻烦,所以也没有进展。今天抽出时间,研究了一下scp插件,主要目的是实现非容器项目的部署。其实就是借助scp插件,将构建好的go项目可执行文件和配置文件发布到指定主机上。本项目依旧基于baa-cicd项目。
.drone.yml
直接上.drone.yml 文件
workspace: base: /go path: src/gogs.xxx.com/baa-cicd pipeline: build: image: golang:latest commands: - go build -o baa-cicd # publish: # image: plugins/docker # registry: registry.xxx.com # repo: registry.xxx.com/test/baa-cicd # tags: latest # secrets: [ docker_username, docker_password ] # insecure: true scp: image: appleboy/drone-scp host: 10.xx.xx.170 username: root key_path: deploy_rsa rm: true target: - /rc/local source: - baa-cicd ssh: image: appleboy/drone-ssh host:10.xx.xx.170 username: root key_path: deploy_rsa script: - supervisorctl -c /rc/conf/supervisord.conf reload notify: image: plugins/slack webhook: https://hooks.slack.com/services/xxx/xxx/xxx channel: dev template: > {{#success build.status}} build {{build.number}} succeeded. Good job. {{else}} build {{build.number}} failed. Fix me please. {{/success}}
- scp 插件基于ssh实现。所以关键是ssh的相关设置比较重要。比如允许root用户ssh登录,以及密码和rsa秘钥几种登录方式的配置。我们这边基本上都是openssh,所以可以先了解一下openssh的设置。这边我主要允许root登录,编辑 /etc/ssh/sshd_config,注意:PermitRootLogin yes。
- 关于rsa秘钥登录,这边就不做更多介绍了。
- 此处deploy_rsa是放置了ssh登录秘钥的文件。
- 当然光是拷贝了文件,并不能完成部署。所以此处引用了另外一个插件ssh,简单假设项目是用supervisior管理进程,那么ssh执行supervisorctl -c /rc/conf/supervisord.conf reload命令。完成新项目的部署。
- 其实此处再引入一个插件并不是特别合适,感觉有点麻烦,其实个人感觉scp引入一个script参数,比较好,执行一些拷贝完成以后的操作指令。
scp 插件介绍
配置简介:
scp插件通过ssh拷贝文件到目标主机,下面是如何在drone中使用的sample
pipeline: scp: image: appleboy/drone-scp host: example.com target: /home/deploy/web source: release.tar.gz
自定义用户名和密码以及端口的配置示例:
pipeline: scp: image: appleboy/drone-scp host: example.com + username: appleboy + password: 12345678 + port: 4430 target: /home/deploy/web source: release.tar.gz
项目需要从多个文件拷贝到目的主机多个文件的配置示例:
pipeline: scp: image: appleboy/drone-scp host: example.com target: + - /home/deploy/web1 + - /home/deploy/web2 source: + - release_1.tar.gz + - release_2.tar.gz
此处注意的就是一一对应关系。我理解的场景是,在项目中配置文件和可执行文件处于不同的文件夹下,或多个配置文件。
一般项目部署为了高可用,会将项目部署在多台主机上,所以下面是一个多目标主机的配置示例:
pipeline: scp: image: appleboy/drone-scp - host: example.com + host: + - example1.com + - example2.com target: /home/deploy/web source: release.tar.gz
当然文件比较多的时候,如果一一写出就过于麻烦了,该scp支持模式匹配:
pipeline: scp: image: appleboy/drone-scp host: - example1.com - example2.com target: /home/deploy/web source: - - release/backend.tar.gz - - release/images.tar.gz + - release/*.tar.gz
当然依旧可以定义触发条件:
pipeline: scp: image: appleboy/drone-scp host: example.com target: /home/deploy/web source: release.tar.gz + when: + status: success + event: tag
参数简介:
host 目的主机的域名或是ip port 目标主机的ssh端口 username 目的主机ssh用户名 password 目的主机ssh密码 key 访问主机的秘钥 target 目的主机目的文件路径 source 想要拷贝的文件列表 rm 在拷贝之前删除原文件的开关 timeout 建立tcp连接的最大超时时间
插件源码
该插件作者貌似是一个台湾同胞。贡献了其他很多的drone插件,比如k8s 和telegram。这里源码地址,大致可以看看,主要是了解drone插件的编写思路。等不忙的时候,继续完成我的drone-wechat。
本文转自中文社区-k8s与CICD--借助scp插件实现非容器项目的部署
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
k8s与数据分析--利用redash做自助数据分析
前言 在之前文章中,一直讲prometheus的metrics以及apm的指标的重要性,多侧重于收据的收集和存储。如果不对这些数据进行数据分析,那么就没有收集的意义了。通过数据分析和挖掘,让数据产生价值。一直以来我认为devops必须是一 个闭环,即apm,日志,监控着三大系统的数据,必须经过分析对dev和ops有价值。 数据可视化是大数据的『最后一公里』,做好可视化是对于数据分析是重要的。 今天,主要介绍redash这款数据分析的利器。 redash简介 redash是一款开源的BI工具,提供了基于web的数据库查询和数据可视化功能。 支持 SQL, NoSQL, Big Data and API data等20几种常见的数据源: 基本上满足了大多数的场景。相比 superset,除了上手简单,支持influxdb等时序数据库。这点对于监控数据分析很有优势。 sql友好的SQL editor,更加高效的编写复杂的sql 随时写,随时查,实时看到查询的效果 支持丰富的可视化展示形式 Boxplot Chart - Line, Bar, Area, Pie, Scatter Cohort...
- 下一篇
谈谈k8s1.12新特性--Mount propagation(挂载命名空间的传播)
Mount propagation 挂载传播允许将Container挂载的卷共享到同一Pod中的其他Container,甚至可以共 享到同一节点上的其他Pod。 一个卷的挂载传播由Container.volumeMounts中的mountPropagation字段控制。它的值是: None 此卷挂载不会接收到任何后续挂载到该卷或是挂载到该卷的子目录下的挂载。以类似的方式,在主机上不会显示Container创建的装载。这是默认模式。 此模式等同于Linux内核文档中所述的 private 传播。 HostToContainer 此卷挂载将会接收到任何后续挂载到该卷或是挂载到该卷的子目录下的挂载。 换句话说,如果主机在卷挂载中挂载任何内容,则Container将看到它挂载在那里。 类似地,如果任何具有 Bidirectional 挂载传播设置的Pod挂载到同一个卷中,那么具有HostToContainer挂载传播的Container将会看到它。 此模式等同于Linux内核文档中描述的rslave挂载传播。 Bidirectional 此卷挂载的行为与HostToContainer挂载相同。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作