Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
isno committed Dec 19, 2024
1 parent ab91329 commit cf091d4
Show file tree
Hide file tree
Showing 6 changed files with 79 additions and 4 deletions.
63 changes: 62 additions & 1 deletion GitOps/Helm.md
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 创建的所有资源。
11 changes: 11 additions & 0 deletions GitOps/Kustomize.md
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 文件,开发人员就能基于基准派生的方式,对应用不同模式(开发、测试),不同的项目(客制)定制出不同的资源整合包。
4 changes: 4 additions & 0 deletions GitOps/Operator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Operator

Operator 和 Helm Chart 并没有太多共同之处。都服务于在 Kubernetes 中安装和配置应用程序这个相同的基本目标。
Kubernetes Helm charts 和 operators 有一点共同之处,那就是这两个术语,对新手而言难以理解的术语。
3 changes: 1 addition & 2 deletions GitOps/Tekton.md
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 构建一个完整的持续集成系统,该系统包括程序测试、镜像构建和镜像推送。
2 changes: 1 addition & 1 deletion assets/global-load-balancer.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/helm.webp
Binary file not shown.

0 comments on commit cf091d4

Please sign in to comment.