云原生下的 DevOps 平台 1. 什么是云原生 云原生是一个快速发展的领域。2013 年, Pivotal 提出云原生的概念,并不断对其进行解读。下面是 Pivotal 对云原生架构的特征描述: 2015年,12-Factor、面向微服务、抗脆弱 2017年,可观测性、模块化、可替代性、可处理性 2019年,DevOps、持续交付、微服务、容器 很多人接触云原生,可能是从 CNCF 开始的。CNCF 项目、全景图是云原生绕不 云计算 2023-01-04 三掌柜
CentOS 7 下安装并配置 Homebrew 在 CentOS 下安装包时,通常需要寻找各种源,使用 Homebrew 就没这样的烦恼。本文使用的是 CentOS 7.6,不同的系统版本可能会有差异。 1. 创建非 root 用户 Homebrew 不允许以 root 身份运行,因此需要创建一个新的用户。 新建用户 1 adduser shaowenchen 设置密码 1 passwd shaowenchen 给新用户添加 sudo 权限 编 云计算 2023-01-04 竹子爱熊猫
CentOS 7 下安装并配置 Zsh 1. 安装 zsh 1 sudo yum install -y zsh 2. 安装 oh-my-zsh 1 sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 建议将 Zsh 设置为默认的 Shell。 3. 安装插件 3.1 安装 autojump 1 sudo yum inst 云计算 2023-01-04 剑圣无痕
ToB 创业公司的开源之路 KubeSphere 1. 以开源为核心的商业模式 开源的魅力之一在于其包容性。它能接受怀揣各种意图的人,无论是执着技术的的工程师,还是心怀鬼胎的商人,亦或是热心公益的志愿者,甚至茶余饭后的看客,都能在这里碰撞、交融,形成一股力量。围绕开源做商业,应该被允许和接受。开源和商业是互相成就的关系。最新的开源报告显示,在 GitHub 上,开发者工作日比周末明显活跃。这说明全职的开源开发者正在增加,开源正在给开发者带来收入。 云计算 2023-01-04 三掌柜
如何在 CentOS 8 下编译 istio 项目 本文主要描述在 CentOS 8.2 下,如何使用本地工具编译 https://github.com/istio/istio 项目。另外一种方法是通过 BUILD_WITH_CONTAINER 参数控制,使用容器编译,仅依赖于 make 和 docker。 1. 安装并升级 Ruby >= 2.6 安装 Ruby 1 yum install -y ruby 查看 Ruby 版本 1 2 3 云计算 2023-01-04 Escape
在 Kubernetes 中面向虚拟机节点分发文件、执行脚本 1. 本文主要讨论什么 勿在浮沙筑高台。业务量的增长、业务形态的进化都需要坚实强劲的 IT 系统支撑。业务内容对市场是透明的,但是 IT 系统不是一朝一夕能建设完善的。未来公司之间的竞争主要也会来自于 IT 系统之间的竞争,能不能快速响应业务需求是决胜的关键。IT 系统也在不断进化。建设高效、智能的 IT 系统成本是很高的。刚开始只需要够用,接着是好用,最后成为核心竞争力。变化并不可怕,可怕的是沉 云计算 2023-01-04 张二河
在 Dell OptiPlex 7080MT 上安装 macOS 操作系统 大概是十年前,我在笔记本上安装过 macOS。当时最头疼的是只有特定的硬件才能安装成功,而且还缺各种驱动程序。后来自己买了 Mac 笔记本,很长时间没有关注如何在通用机器上安装 macOS 。最近拿到了一台 Dell 台式机,配置还不错,又尝试了一下。本文主要是记录这一过程。 1. Dell OptiPlex 7080MT 物理机配置 下面是机器的配置:CPU Intel(R) Core(TM) 云计算 2023-01-04 大树
一些常见的计算机面试题 计算机基础 堆和栈 什么时候用堆?什么时候用栈?栈有什么作用?Golang 的变量在栈还是堆?堆、栈有没有上限?有的话和什么有关? 数据结构 Slice 空间是怎样分配的?双倍扩容,原来数据复制过去。Golang 的 map 是什么结构 Golang 的 map 是什么结构,遍历是否有序, 什么是 Hash 表? Hash 表的查询效率? 解决碰撞有什么方法? 线程 线程是否越多越好吗? 线程切换 云计算 2023-01-04 大白菜程序猿
Tekton 如何接入物理机进行构建 1. 为什么需要物理构建机 在文章《如何接入远程 macOS 物理机进行 Jenkins 流水线构建》中,我描述了在 Jenkins 中添加物理构建机的方法。这并不是我拍脑袋想的需求,而是当时真的有 ToB 的商业客户在咨询方案。对于多端开发商来说,构建 Android、IOS、macOS、Arm 、Windows、X86 应用是常见的需求。好的方面是 GitHub Actions 提供了 mac 云计算 2023-01-04 穿过生命散发芬芳
如何搭建一个私有的镜像仓库 mirror Docker 的 Mirror 仅能加速 docker.io 的镜像,而不能加速私有仓库的镜像。 1. 为什么需要一个私有的镜像仓库 mirror 公网限速 dockerhub 拉取限制频率 减少拉取镜像时间 2. 创建一个 Registry 镜像加速服务 生成一个配置文件 version: 0.1 log: fields: service: registry storage: cache: bl 云计算 2023-01-04 竹子爱熊猫
Docker 20.10.6 拉取某些镜像报错 unlinkat 使用的是 CentOS 7,内核版本 3.10.0-327 。 1. 查看当前 Docker 的版本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 docker version Client: Docker Engine - Community Version: 20.10.6 AP 云计算 2023-01-04 法医
Jenkins 与 Tekton 的对比 下面是一个 Jenkins 与 Tekton 对比的列表: 功能JenkinsTekton 编程语言 Java Golang 开发插件语言 Java Shell、Yaml 流水线描述语言 Groovy、Shell Yaml、Shell 插件生态 很多插件,LDAP、GitLab 不足 插件数量 1500+ 100+ 插件之间的兼容性 可能会有冲突,不能随便升级 完全兼容 二次开发 封装 Api 组 云计算 2023-01-04 捡田螺的小男孩
国内访问 GitHub 的若干方法 由于众所周知的原因,在国内的网络环境下,访问 Github 时,网络会阻断或者很慢。本文提供了若干访问方法。 1. 使用 Github Mirror 下载 直接在 GitHub 仓库前面拼接 Proxy 地址,不同的 Mirror 拼接方式可能有所不同。下面以拉取 https://github.com/shaowenchen/scripts 仓库为例。 https://mirror.ghproxy 云计算 2023-01-04 捡田螺的小男孩
珍惜你遇到的蓝鲸 1. 我的平台建设经历 毕业之后,我加入了腾讯蓝鲸,主要参与 SaaS 的开发。待了近三年之后,回武汉老家,加入青云,负责 DevOps 的研发。待了近两年之后,加入新的公司,参与业务支撑平台建设,思考业务侧对 Kubernetes 的落地实践。我写过很多关于平台的文档,领域输出才是 PaaS 的核心竞争力 、大公司和小公司的 ToB 思路 、云原生下的 DevOps 平台 、ToB 创业公司的开 云计算 2023-01-04 向阳逐梦
Kubernetes 之网络隔离(内附十多种使用场景) 1. Kubernetes 中的网络隔离 Kuberntes 自 1.3 引入了 Network Policy(网络策略) ,通过 ipBlock、podSelector、namespaceSelector 定义实体,控制其 From(Ingress)、To(Egress)的流量行为。但 Kubernetes 只是定义了网络策略,具体实现依赖网络插件。目前,Calico、Cilium、Weave 云计算 2023-01-04 LOVEHL^ˇ^
一个通用流水线设计 1. 解耦引擎释放流水线能力 在设计系统时,我们常面临两难。是内敛复杂度,对外提供单一易用的功能;还是释放复杂度,将灵活归还用户。这非常考验产品能力。设计 CICD 系统时,我们可以直接将 Jenkinsfile、PipelineRun 等概念直接抛给用户,让用户自己学习相关领域的知识,再来使用产品。当然,也可以继续抽象,在人与系统之间建立模型,实现意识与指令的转换。我们想要更加易用的产品,因此选 云计算 2023-01-04 泡泡
Jenkins 在 Kubernetes 上的最佳实践 1. 配置较大的 -Xms -Xmx 参数 Jenkins 是由 Java 编写的编排引擎, 在 Full GC 时会 Stop The World(STW)。在大规模构建时, STW 可能会导致 Jenkins 无法处理新的请求。为了避免频繁的 STW, 同时增大并发量, 建议设置较大的堆, -Xms3g -Xmx6g -XX:MaxRAM=6g。具体数值可以根据监控值来设置, Java Ful 云计算 2023-01-04 宇宙之一粟
如何定制自己的 Jenkins 镜像 1. 如何部署 Jenkins 为了方面进行下面的测试,先介绍两种部署 Jenkins 的方式,这里使用的是 shaowenchen/jenkins:2.277.4 镜像。在生产环境中,需要替换为官方 jenkins/jenkins 镜像或自己定制的镜像。 1.1 docker-compose 运行 docker-compose.yaml 文件 version: '3' services: jen 云计算 2023-01-04 捡田螺的小男孩
/var/lib/docker 能不能挂载远端存储 不能 1. 问题背景 基于 Kubernetes 构建可靠、稳定的运维系统时,虚拟机 (VM) 的销毁和新建是一种常态。VM 提供的是计算和内存资源,而使用外部存储,通过 StorageClass 提供给集群中的 PVC 消费。在这样的背景下,如何快速初始化 VM 成为新的挑战。常见的思路是制作 Node 节点的 VM 镜像,提前将依赖下载、安装到 VM。添加 Node 节点时,利用预制的镜像,快 云计算 2023-01-04 法医
在 Kubernetes 中如何给 NodePort 配置 NetworkPolicy 1. 需求背景 如上图,业务方需要隔离 namespae 的服务,禁止 bar 空间的负载访问,而允许用户从 Load Balancer (LB) 通过 NodePort 访问服务。可以很容易地写出一个网络策略: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 apiVersion: networking.k8s.io/v1 kind: Net 云计算 2023-01-04 向阳逐梦