在现代微服务架构中,应用的更新和发布是一个高频且关键的操作。如何在不影响用户体验的前提下,安全、平稳地将新版本应用推送到生产环境,是每个开发者和运维团队必须面对的挑战。灰度发布(Gray Release)作为一种渐进式发布策略,能够有效降低发布风险,而 Kubernetes 的 Ingress 注解功能为我们提供了一种简单而强大的实现方式。
服务网格Istio安装及使用
在k8s中配置启用了istio之后,在创建pod之后会自动注入一个Envoy这样的容器,可理解为代理容器,也就是说,创建pod是除了定义的一个主容器,还会在启动istio之后自动注入一个容器,一个pod有两个容器,该代理容器主要是用来做流量的控制和管理,能做到流量的拦截,能控制熔断、超时、重试,按流量的百分比代理等作用。
k8s更新应用版本优雅终止旧pod
所谓优雅终止,就是保证在销毁 Pod 的时候保证对业务无损,比如在业务发版时,让工作负载能够平滑滚动更新。 Pod 在销毁时,会停止容器内的进程,通常在停止的过程中我们需要执行一些善后逻辑,比如等待存量请求处理完以避免连接中断,或通知相关依赖进行清理等,从而实现优雅终止目的。
代码扫描平台SonarQube部署及配置jenkins集成
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量,通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测。
RocketMQ命令行操作
Rocketmq有带图形界面的控制台,这次公司环境迁移,需要把jl环境的topic及消费组加到另一个Rocketmq集群,如果在web控制台一个个点太费时间了,可以通过命令行批量添加。
docker部署certimateSSL证书管理
之前有写过一篇文章使用certbot申请免费ssl证书,最近发现certimate有提供web界面,而且集成了证书申请,证书部署,证书续订,监控告警等功能,都可以通过web界面点几下就可以完成,比较适合小白。
K8S部署seata-server集群
Seata分TC、TM和RM三个角色,TC(Server端)为单独服务端部署,TM和RM(Client端)由业务系统集成。 Seata-server 的高可用依赖于注册中心
、配置中心
和数据库
来实现。
K8S创建Redis集群并迁移数据
公司之前生产环境一直用的是单节点的Redis,生产环境版本是6.2.6,开发需要使用PEXPIRETIME命令,这个命令是7.0版本之后才有的,所以趁着这个机会,升级Redis版本顺便把单节点转成集群。