需求一 A 容器负责授权管理,当用户更改了授权时,需要重启 B 容器生效。 解决方案 通过 sidecar 启动一个 http server,并提供两个接口,接口一用于 K8S 的存活探针;接口二用于接收重启信号,供容器 A 调用。当收到重启信号时,修改接口一返回值,使其返回 500 http code,从而让 K8S 重启 Pod 内容器。 方案…
背景 最近遇到一个 docker compose 部署的产品(旧版本)想部署到 k8s 中,而该产品应用的多个容器都在 docker compose 中设置了 ip 地址,镜像里的应用配置也是配置的这些预设 ip,容器之间通过预设 IP 进行通信。 但是该产品的云化已经在最新版本中完成,并做了大量修改。现在希望对那个旧版本以最小成本部署到 k8s 中就行,也就是不想动产品应…
最近字节的朋友要在公司分享 Copilot,但是他们公司当前是禁止使用 Copilot 的,所以找到了我。正好总结下半年来的使用感受。 减少重复的、逻辑少的工作。 例如经常写依赖注入 wire 的 New 方法,没有包含太多逻辑,仅仅是依赖注入,初始化对象。针对这类代码,Copilot 一般都能正确生成。 参照本地项目里已有逻辑(不限于当前项目,不限 IDE),生成…
搭建博客的服务器还有半年就要过期了。以前都是到期了再去买一个,后来发现,即使是用新用户,优惠也比不上双十一。想起有年双十一,同事买了个腾讯云的 1h2g 三年才 200 多,简直比杀了我还难受! 这次学聪明了,服务器到期前的双十一就开始做打算。是续费,还是重新买一个,要不要选择其他云厂商,或者想想有没有其他选择。 当前拥有的服务器资源 一台国内阿里云服务器…
前言 邮件已成为日常工作中必备的工具,常常作为正式交流的一种方式,那发送一封邮件是如何到达目标邮箱的呢? 相关协议 邮件系统中各组件之间交互使用的协议。 SMTP Simple Mail Transfer Protocol,即简单邮件传输协议,用来发送邮件。 POP3 Post Office Protocol,邮局协议第 3 版,用于支持使用客户端远程…
背景 运营同学经常需要将运营系统上的 url 拷贝到 virustotal 去查询安全性,这个重复操作想优化下,提高效率。通过调研,发现 virustotal 是支持 api 查询的,就想在运营系统的前端集成这个查询功能,因此产生了跨域问题。 解决方案 Apisix 的 cros 插件 这个插件是通过给后端接口响应头里增加支持跨域的响应头以支持跨域请求,不符合我们的场景…
背景 我们的应用发布都是以镜像为基础,git 打 tag 触发 cicd,发布对应 version 的镜像。现在有个应用需要部署到客户内网中,如果以导出镜像的形式,再给客户部署,是比较繁琐的。并且无法做一些额外的工作,例如安装前的环境检测,卸载时删除镜像,以及更新等。当然这些都可以通过脚本实现,但不够优雅。而同事之前做过以 linux 安装包的形式发布容器应用,这…
背景 还是之前的需求,上一篇文章:Operator 示例:通过 Operator+CRD 实现部署自动化是基于官方的 sample-controller 来修改,实现我们的逻辑。这次使用 kubebuilder 来生成代码。 主要步骤 使用 kubebuilder 生成项目代码 定义 CRD 的 struct 重新生成 CRD 资源 实现 Reconcile 逻辑 部署 CR…
前言 在上一篇通过 Operator 自动暴露集群内部服务中,遗留了一个问题:开发人员 or 业务上游是需要关注 k8s 内建资源,例如 deployment 如何定义,这和 K8S 自动化的目标背道而驰。 本篇文章将采用 CRD(CustomResourceDefinition)来屏蔽底层 K8S 资源,让开发人员只需要按照我们制定的规则来定义 CR 即可。至于创建 deplo…
需求背景 运维团队希望管控部署在 k8s 集群里对外暴露的服务,开发团队无需关心服务如何暴露给用户。 红色部分 开发团队创建应用的 manifests, 开发团队可以为 Service: 资源添加 annotation 为 ingress/http:true 来决定终端用户是否可以访问到该服务,默认不能访问到。至于具体如何让用户可以访问到服务,开发团队不需要关心。 绿…