-
Notifications
You must be signed in to change notification settings - Fork 529
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
79 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,62 @@ | ||
# Helm | ||
# Helm | ||
|
||
相信读者朋友们知道 Linux 下的包管理工具和封装格式, 如 Debian 系的 apt-get 命令和 dpkg 格式、RHEL 系的 yum 命令和 rpm 格式。在 Linux 系统中,有了包管理工具,我们只要知道应用的名称,就可以很方便地从应用仓库中下载、安装、升级、回滚等,而且包管理工具掌握着应用的依赖信息和版本变更情况,具备完整的自管理能力,每个应用依赖哪些前置的第三方库,在安装时都会一并处理好。 | ||
|
||
**如果说 Kubernetes 是云原生操作系统的话,那 Helm 就是这个操作系统之上的应用商店和包管理工具**。Helm 参考了各大 Linux 发行版管理应用的思路,提出了与 Linux 包管理直接对应的 Chart 格式 和 Repoistory 应用仓库的概念。对于使用者而言,使用 Helm 后,不用需要了解 Kubernetes 的 yaml 语法,也不需要编写应用部署文件。只要一行命令,就可以下载并在 kubernetes 上安装需要的应用。 | ||
|
||
|
||
Chart 是一个包含描述 Kubernetes 相关资源的文件集合,例如 WordPress chart 的目录结构是这样子的: | ||
|
||
```bash | ||
WordPress | ||
. | ||
├── Chart.lock | ||
├── Chart.yaml | ||
├── README.md | ||
├── templates | ||
│ ├── NOTES.txt | ||
│ ├── _helpers.tpl | ||
│ ├── config-secret.yaml | ||
│ ├── deployment.yaml | ||
│ ├── hpa.yaml | ||
│ ├── svc.yaml | ||
│ └── ... | ||
├── values.schema.json | ||
└── values.yaml | ||
``` | ||
|
||
其中 Chart.yamlChart 的元数据文件,包含了 Chart 的名称、版本、描述等信息。values.yaml 默认的配置文件,定义了 Chart 中变量的默认值。用户可以通过自定义 values.yaml 或通过命令行参数覆盖这些默认值。templates 目录包含 Kubernetes YAML 配置文件的模板,这些模板通过 Go 的模板引擎进行渲染,生成最终的 Kubernetes 资源定义文件。 | ||
|
||
|
||
如下图所示,开发者和运维人员将复杂的应用程序及其依赖项打包成一个 Chart。用户使用 helm install 命令快速部署应用,无需再手动编写大量的 YAML 配置文件。 | ||
|
||
:::center | ||
![](../assets/helm.webp)<br/> | ||
图 7-1 Tekton Dashboard | ||
::: | ||
|
||
|
||
|
||
Helm 仓库是存储 Helm chart(应用程序的定义和配置包)的地方。默认情况下,Helm 配置了一个稳定的仓库(https://charts.helm.sh/stable),但你也可以添加其他仓库。 | ||
|
||
如下所示,使用 helm repo add 命令添加一个名为bitnami的仓库: | ||
|
||
```bash | ||
$ helm repo add bitnami https://charts.bitnami.com/bitnami | ||
``` | ||
|
||
接着,使用 helm search repo 命令在已添加的仓库中搜索需要的 chart。例如,如果你想部署一个 Wordpress: | ||
|
||
```bash | ||
$ helm search repo wordpress | ||
NAME CHART VERSION APP VERSION DESCRIPTION | ||
bitnami/wordpress 15.3.1 6.2.1 Web publishing platform for building blogs and websites | ||
bitnami/wordpress-multisite 6.3.1 5.7.4 WordPress for Multisite environments | ||
``` | ||
|
||
选择合适的 WordPress chart,使用helm install命令进行安装。 | ||
|
||
```bash | ||
$ helm install my - wordpress - instance bitnami/wordpress | ||
``` | ||
当不再需要 WordPress 应用程序时,使用 helm uninstall my - wordpress - instance 命令卸载。这会删除 Kubernetes 集群中为 WordPress 创建的所有资源。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# Kustomize | ||
|
||
最初 Kubernetes 对如何封装应用 的解决方案是用配置文件来配置文件,这并不是绕口令,可以理解为针对 yaml 模版引擎的变体。 | ||
|
||
Kubernetes 官方认为,应用就是一组具有相同目标的 Kubernetes 资源的集合,如果逐一管理、部署每项资源元数据过于繁琐的话,那就提供一种便捷的方式,把应用中不变的信息和易变的信息分离,应用中所涉及的资源自动生成一个多合一(All-in-One) 的整合包,以此解决部署管理问题。 | ||
|
||
完成这项工作的工具就叫 Kustomize。Kustomize 原本只是一个独立的小工具,从 Kubernetes 1.14 起,被纳入了 kubectl 命令中,成为 Kubernetes 内置的功能。 | ||
|
||
Kustomize 使用 Kustomization 文件来组织与应用相关的所有资源,Kustomization 本身也是一个 yaml 编写的配置文件,里面定义了构成应用的全部资源,以及资源中根据情况被覆盖的变量。 | ||
|
||
Kustomize 的价值在于根据环境来生成不同的部署配置,只要建立多个 Kustomization 文件,开发人员就能基于基准派生的方式,对应用不同模式(开发、测试),不同的项目(客制)定制出不同的资源整合包。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Operator | ||
|
||
Operator 和 Helm Chart 并没有太多共同之处。都服务于在 Kubernetes 中安装和配置应用程序这个相同的基本目标。 | ||
Kubernetes Helm charts 和 operators 有一点共同之处,那就是这两个术语,对新手而言难以理解的术语。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,5 @@ | ||
# 10.4 使用 Tekton 进行持续集成 | ||
|
||
Tekton 是一个开源的 Kubernetes 原生持续集成/持续交付(CI/CD)工具,由 Google 发起。它的核心是通过自定义资源定义(CRD)在 Kubernetes 集群中实现流水线即代码(Pipeline as Code)。这意味着开发人员可以使用代码的方式来定义复杂的构建、测试和部署流水线。例如,一个软件开发团队可以利用 Tekton 来构建从代码拉取、单元测试、构建容器镜像,一直到将镜像部署到 Kubernetes 集群的完整流程。 | ||
|
||
Tekton 是一个开源的 Kubernetes 原生持续集成/持续交付(CI/CD)工具,由 Google 发起。它的核心是通过自定义资源定义(CRD)在 Kubernetes 集群中实现流水线即代码(Pipeline as Code)。这意味着开发人员可以使用代码的方式来定义复杂的构建、测试和部署流水线。例如,一个软件开发团队可以利用 Tekton 来构建从代码拉取、单元测试、构建容器镜像,一直到将镜像部署到 Kubernetes 集群的“一条龙”流程。 | ||
|
||
接下来,我们先了解 Tekton 中与构建流水线相关的概念以及流水线执行的原理。之后,再基于 Tekton 构建一个完整的持续集成系统,该系统包括程序测试、镜像构建和镜像推送。 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.