上节课我们将 Gitlab CI Runner 安装到了 Kubernetes 集群中,接下来看看如何结合 Kubernetes 和 Gitlab CI 进行持续集成和持续部署。
阳明的博客
大家好,我叫阳明,前小米高级开发工程师,现在回到家乡成都,独立开发者一枚,一个有着产品思维的工程师,现在也在努力将自己的产品思维体系化,全栈工程师,现阶段专注 Kubernetes 和 AIGC,创建了「k8s技术圈」社区、「优点知识」知识付费网站以及「快课星球」AI全栈开发学习网站。我可以提供企业容器化方面的知识培训和咨询工作,感兴趣的可以通过微信 gitops 和我联系。
在 Kubernetes 上安装 Gitlab CI Runner
上节课我们使用 Helm 快速的将 Gitlab 安装到了我们的 Kubernetes 集群中,这节课来和大家介绍如何使用 Gitlab CI 来做持续集成,首先先给大家介绍一些关于 Gitlab CI 的一些基本概念,以及如何在 Kubernetes 上安装 Gitlab CI Runner。
在 Kubernetes 上安装 Gitlab
Gitlab
官方提供了 Helm 的方式在 Kubernetes 集群中来快速安装,但是在使用的过程中发现 Helm 提供的 Chart 包中有很多其他额外的配置,所以我们这里使用自定义的方式来安装,也就是自己来定义一些资源清单文件。
Gitlab
主要涉及到 3 个应用:Redis、Postgresql、Gitlab 核心程序,实际上我们只要将这 3 个应用分别启动起来,然后加上对应的配置就可以很方便的安装 Gitlab 了,我们这里选择使用的镜像不是官方的,而是 Gitlab 容器化中使用非常多的一个第三方镜像:sameersbn/gitlab
,基本上和官方保持同步更新,地址:http://www.damagehead.com/docker-gitlab/
在 Kubernetes 在快速安装 Harbor
前面我们和大家简单分析了Harbor 的实现原理和部分源代码,这节课给大家介绍下如何快速安装并使用 Harbor。
Harbor 源码浅析
Harbor 是一个CNCF
基金会托管的开源的可信的云原生docker registry
项目,可以用于存储、签名、扫描镜像内容,Harbor 通过添加一些常用的功能如安全性、身份权限管理等来扩展 docker registry 项目,此外还支持在 registry 之间复制镜像,还提供更加高级的安全功能,如用户管理、访问控制和活动审计等,在新版本中还添加了Helm
仓库托管的支持。
深入理解 Python 元类
这是一篇在Stack overflow上很热的帖子。提问者自称已经掌握了有关 Python OOP 编程中的各种概念,但始终觉得元类(metaclass)难以理解。他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程。于是 e-satis 同学给出了神一般的回复,该回复获得了 985 点的赞同点数,更有人评论说这段回复应该加入到 Python 的官方文档中去。
在 Django 中如何添加没有微秒的 DateTimeField 属性
今天在项目中遇到一个Django
的大坑,一个很简单的分页问题,造成了数据重复。最后排查发现是DateTimeField
属性引起的。
下面描述下问题,下面是我需要用到的一个 Task Model 基本定义:
Kubernetes 部署策略详解
在Kubernetes
中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务,选择一个正确的发布策略就非常重要了。
选择正确的部署策略是要依赖于我们的业务需求的,下面我们列出了一些可能会使用到的策略:
-
重建(recreate):停止旧版本部署新版本
-
滚动更新(rolling-update):一个接一个地以滚动更新方式发布新版本
-
蓝绿(blue/green):新版本与旧版本一起存在,然后切换流量
-
金丝雀(canary):将新版本面向一部分用户发布,然后继续全量发布
-
A/B 测(a/b testing):以精确的方式(HTTP 头、cookie、权重等)向部分用户发布新版本。
A/B测
实际上是一种基于数据统计做出业务决策的技术。在 Kubernetes 中并不原生支持,需要额外的一些高级组件来完成改设置(比如 Istio、Linkerd、Traefik、或者自定义 Nginx/Haproxy 等)。