k8s与CICD--借助scp插件实现非容器项目的部署

简介: 前言 最近连续996加班,一直没有时间完成drone系列文章。drone-wechat插件实现了一半,由于企业微信token申请比较麻烦,所以也没有进展。今天抽出时间,研究了一下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插件实现非容器项目的部署

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
9月前
|
存储 Kubernetes 开发工具
使用ArgoCD管理Kubernetes部署指南
ArgoCD 是一款基于 Kubernetes 的声明式 GitOps 持续交付工具,通过自动同步 Git 存储库中的配置与 Kubernetes 集群状态,确保一致性与可靠性。它支持实时同步、声明式设置、自动修复和丰富的用户界面,极大简化了复杂应用的部署管理。结合 Helm Charts,ArgoCD 提供模块化、可重用的部署流程,显著减少人工开销和配置错误。对于云原生企业,ArgoCD 能优化部署策略,提升效率与安全性,是实现自动化与一致性的理想选择。
604 0
|
4月前
|
Ubuntu 网络安全 PHP
如何使用vscode的Docker插件管理ubuntu 拉取服务器的镜像以及创建容器
本测试镜像旨在记录使用vscode的Docker插件拉取病创建Dockerfile,以及拉取镜像。
|
8月前
|
存储 Kubernetes 异构计算
Qwen3 大模型在阿里云容器服务上的极简部署教程
通义千问 Qwen3 是 Qwen 系列最新推出的首个混合推理模型,其在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。
|
9月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
896 33
|
9月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
524 19
|
9月前
|
存储 测试技术 对象存储
使用容器服务ACK快速部署QwQ-32B模型并实现推理智能路由
阿里云最新发布的QwQ-32B模型,通过强化学习大幅度提升了模型推理能力。QwQ-32B模型拥有320亿参数,其性能可以与DeepSeek-R1 671B媲美。
|
4月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
840 108

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多