Tekton Pipeline,是一个k8s native的pipeline, 任务跑在pod中,通过自定义CRD去管理任务与工作流等等,我看完tekton之后感觉是功能很强大,但是有点过度设计了,没有drone的简约大方灵活之感
最近,群里有小伙伴在倒腾一个叫 Drone 的项目,说它比 Jenkins 更轻量级。
Drone by Harness™ 是一个基于Docker容器技术的可扩展的持续集成引擎,用于自动化测试、构建、发布。每个构建都在一个临时的Docker容器中执行,使开发人员能够完全控制其构建环境并保证隔离。开发者只需在项目中包含 .drone.yml文件,将代码推送到 git 仓库,Drone就能够自动化的进行编译、测试、发布。可以与Docker完美集成。
CI与CD其实对drone来说无本质区别,都是pipeline中的一个步骤而已,再抽象成镜像即插件,每个步骤做啥drone已经不关心了,是你自己决定的,所以使用drone时一定要理解其原理才能活用而且非常简单。
提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记
创建一家成功的软件公司需要什么?交付有价值的软件并快速交付的能力。我们如何保证这种高速服务?持续交付 (CD) 流程,由完善的持续集成 (CI) 机制支持,以提供完美交付,尤其是当平台组件的数量和依赖性增加时。
之前搭建过 Gitlab,但是就只是搭建而已,并未实际使用,因为我大部分的代码还是存放在 Github 上。
创建一家成功的软件公司需要什么?交付有价值的软件并快速交付的能力。我们如何保证这种高速服务?持续交付 (CD) 流程,由完善的持续集成 (CI) 机制支持,以提供完美交付,尤其是当平台组件的数量和依赖性增加时。 这张图片完美地总结了良性 CI/CD 循环,任何 DevOps 都应该将其贴在办公桌上: 在本文中,我们将关注循环的左侧,即产品从代码到测试的过程。 使用源代码时,git 是唯一的选择。事实上,在 BOOM,我们使用来管理代码生命周期(但 git 选项还包括 Gitea 或 Bitbucket)。
Docker CE 19.03 和 EE 3.0 都已经发布,19.03 主要内容包括无需 root 权限、支持 GPU 的增强功能和 CLI 插件更新等等,19.03 现在是允许非 root 用户运行守护程序,启用 Rootless 模式可以防止攻击者夺取主机的 root 权限,即使 Docker 存在漏洞或设置错误。
CI / CD( 持续集成 / 持续部署 )方案是DevOps中不可或缺的流程之一,最近也了解了部分的相关的解决方案,最终选择了Drone + Gogs基于docker容器环境来构建CI / CD,本文将分享下如何构建此平台以及如何快速地使用到项目开发中。
Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证,它是从Gogs发展而来的,因为Gogs由单一管理者做决定,因此诞生了Gitea,它采用社区管理模式,增加了诸多新特性,而且由社区众多的维护者来决定它的发展方向,因此拥有更强的生命力和发展潜力。
在默认情况下,drone 会按照步骤执行,但是有时会遇到前后端在同一个 repo 的情况,这时使用并行构建就可以省去很多的构建时间。
Kubernetes的高可用主要指的是控制平面的高可用,即指多套Master节点组件和Etcd组件,工作节点通过负载均衡连接到各Master。HA有通常有如下两种架构:
持续集成和构建的工具有很多,除了著名的 Jenkins,Travis,CircleCI,还有最近比较热门的 Github Action 和 Gitlab CI/CD。但是这些工具面对私人项目不是要收费就是占用大量服务器资源,作为个人开发者的私人项目如果想要使用并不友好。那么开源免费的 Drone CI 是个不错选择,它不但非常轻量,而且十分强大。并可以结合私有代码仓库自动编译、构建服务,几行脚本即可实现自动化部署。本文讲述 Drone CI 的具体实践,结合Gitea,怎么在 VPS 里从零开始搭建一个基于 Gitea + Drone CI 的持续集成系统。
Drone is a self-service Continuous Integration platform for busy development teams.
Drone是一个流行的持续集成和交付平台。它集成了许多流行的版本控制存储库服务,如GitHub,GitLab和Bitbucket,以监视代码更改并在提交时自动构建和测试更改。
kaniko 执行器镜像负责从 Dockerfile 构建镜像并将其推送到注册表,其流程大致如下:
Drone 官方示例 – Example Go project 用 Docker 部署 Go 服务器 Golang 官方示例 – outyet 一个生产环境的例子 用 rsync 复制文件的方式进行部署的例子
确保容器中服务与应用安全是容器化演进的关键点。容器安全涉及到应用开发与维护的整个生命周期,本文主要从镜像构建的视角来看docker容器的一些安全问题及应对措施。
在上述安装 kubeadm 的过程中,kubeadm 和 kubelet、kubectl、kubernetes-cni 这几个二进制文件都会被自动安装好。
kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,通过将集群的各个组件进行容器化安装管理,通过kubeadm的方式安装集群比二进制的方式安装要方便不少。
Drone是一款基于容器技术的持续集成工具,使用简单的YAML配置文件即可完成复杂的自动化构建、测试、部署任务,在Github上已经有22K+Star。
描述: 通常在集群安装完成后,我们需要对其设置持久卷、网络存储等插件, 除此之外我们还需安装metrics-server以便于获取Node与Pod相关资源消耗等信息,否则你在执行kubectl top命令时会提示error: Metrics API not available, 所以本小节将针对Metrics-server的安装进行讲解。
由于虚拟机没有访问国外网站,一些k8s的镜像拉取不到,固使用一些其他源代替,顺次执行以下命令在各个节点上(注意不要一次全部执行,要一条一条来,确保镜像全部拉取成功)
用过 SVN 的小伙伴们,都应该知道hooks(钩子)这个功能,的确日常企业内部测试环境经常会用过这个“特殊”的功能,通过这个功能来 实现自动更新发布代码的功能。
作为开发人员使用Git进行版本管理是必不可少的一部分,但似乎从去年开始,最大的代码仓库GitHub在大陆经常无法访问,又或者经常超时。但是国内哪些Git仓库站点如Gitee、coding等似乎对个人用户不太友好,至少我是用不习惯Gitee的。于是我有自建Git仓库的想法,但目前看来网上最流行的自建git无非就是GitLab,而GitLab对服务器的性能要求极高。作为个人开发者,一般情况下大多数人的选择是1c2g的服务器,很显然这个配置无法带动GitLab。 我发现了一款优秀的Git托管程序Gitea,它是基于Gogs衍生而来的,且使用Golang作为开发语言。在安装非常便捷,同时功能也够个人开发者使用,还能结合Drone实现CICD。
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具 ,这个工具能通过两条指令完成一个kubernetes集群的部署,比纯手工安装方便。
bilibili视屏地址: 6.复习-重新安装k8s集群_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动,关闭系统的Swap方法如下:
* drone-runner启动参数很多,下面解释下: + DRONE_RPC_PROTO: 用于连接 Drone 服务器的协议 + DRONE_RPC_HOST: 提供 Drone 服务器的主机名 + DRONE_RPC_SECRET: 用于向 Drone 服务器进行身份验证的共享密钥 + DRONE_RUNNER_CAPACITY: 限制运行器可以执行的并发管道的数量 + DRONE_RUNNER_NAME: 设置runner的名字
按照前篇文章所提,本篇将聊聊如何搭建使用 Gitea 和 Drone。因为内容过多,这个内容我计划拆为多篇来讲述,本篇先聊聊如何搭建使用。
版权声明:欢迎交流,菲宇运维!
一、基于 Drone + Gogs 构建私有 CI/CD 平台 | Docker 篇
如果想要了解 K8s 的一些特性,并且将其应运的很好,那就需要动手部署一个 K8s 集群。下面讲解下在腾讯云上 K8s 集群部署流程。
学习Kubernetes的关键一步就是要学会搭建一套k8s集群。在今天的文章中作者将最近新总结的搭建技巧,无偿分享给大家!废话不多说,直接上干货!
上一篇文章,我们介绍和对比了 Docker Swarm 和 Kubernetes:
本系列文章,我们将在Ubuntu Server 18.04上搭建k8s环境进行入门学习。为了使用原生的Ubuntu Server 18.04,我们将使用multipass来创建多台Ubuntu Server 18.04虚拟环境。也就是说,如果你想完整参考本系列博客学习,你电脑上应当安装并能正常运行multipass,如果你想了解multipass基本操作,可以参考我写的另一篇博客:【使用Multipass管理Ubuntu虚拟机】。本文演示k8s集群搭建步骤,并不涉及k8s基础知识,你可能对文章的一些专业词语感到默生,但没有关系,我们在后面会循序渐进地介绍k8s知识。
在上一篇文章《Kubernetes和Docker的关系是什么?》和大家分享了关于Kubernetes的基本系统架构以及关于容器编排相关的概念,并总体阐述Kubernetes与Docker之间的基本关系。而要学习Kubernetes容器编排技术,首先要解决的就是学习环境问题,而由于Kubernetes本身具有一定的复杂性,且需要较大的系统资源环境,所以对于刚入门的读者来说如何快速部署一套Kubernetes学习环境就成了一件棘手的事情。
学习云原生,k8s 是一个基础,为了做一些实验,单机部署是最方便的,下面将介绍在 CentOS 中单机安装 k8s ,并将一个 .NET 6 的程序发布到 k8s 中。
下载 cri-containerd 1.1.0,并解压,其中包含 /usr、/etc 以及 opt 三个目录,这里我们只是用前两个目录的内容,目录结构如下,直接复制即可:
1、安装mysql自行安装 2、安装Gogs自行安装 3、安装drone/drone
Kubernetes 简称为K8S,是用于自动部署,扩展和管理容器化应用程序的开源系统。Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
很久之前、部署方案选择了基于 Docker 的容器化落地方案,极简描述与总结于 gogs_drone_docker。但是随着微服务抽象定义的服务越来越多、团队规模越来越壮大时,单机部署的自动化持续部署平台在并行处理任务可能会出现大量排队、扩容机制不灵活,同时为了统一、对齐部署姿势,因此将 Docker 转 Kubernetes 。
创建一个 Gitee OAuth 应用程序。Consumer Key 和 Consumer Secret 用于授权访问 Gitee 资源。
kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,其中kubespray比较适合较大规模的集群部署,*步骤,为可选操作,该文章主要介绍,以下内容:
任务比如 k8s 概念中的 job,一般指的是短期的会结束的一个离线任务,而人物流就是将一组任务组织起来的流程。比如下面的这个流程。
[TOC] 0x00 前言简述 Q:我们常说的CI/CD是什么? CI 为 Continuous Integration 的缩写持续集成,可以理解为代码变动提交后,自动执行代码编译、代码打包、代码测试
在前一篇文章中详细介绍了Kubernetes容器集群管理环境 - 完整部署(中篇),这里继续记录下Kubernetes集群插件等部署过程:
领取专属 10元无门槛券
手把手带您无忧上云