Skip to content

Commit

Permalink
GITBOOK-183: No subject
Browse files Browse the repository at this point in the history
  • Loading branch information
mouuii authored and gitbook-bot committed Nov 23, 2024
1 parent 274cbff commit c09d1a2
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 41 deletions.
3 changes: 1 addition & 2 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
* [4.16 k8s GC](k8s-yuan-ma-ren-cai-fu-hua-xun-lian-ying/controller-manager/4.16-k8s-gc.md)
* [第五章: apiserver 源码解析](k8s-yuan-ma-ren-cai-fu-hua-xun-lian-ying/di-wu-zhang-apimachinery/README.md)
* [5.1 核心数据结构分析](k8s-yuan-ma-ren-cai-fu-hua-xun-lian-ying/di-wu-zhang-apimachinery/5.1-k8s-he-xin-shu-ju-jie-gou-fen-xi.md)
* [5.2 apimachinery 初识](k8s-yuan-ma-ren-cai-fu-hua-xun-lian-ying/di-wu-zhang-apimachinery/5.2-shen-me-shi-apimachinery.md)
* [5.2 apimachinery 初识](k8s-yuan-ma-ren-cai-fu-hua-xun-lian-ying/di-wu-zhang-apimachinery/5.2-shen-me-shi-apimachinery.md)
* [5.3 api-conventions(翻译)](k8s-yuan-ma-ren-cai-fu-hua-xun-lian-ying/di-wu-zhang-apimachinery/5.2-api-conventions.md)
* [5.6 服务端和客户端 apply](k8s-yuan-ma-ren-cai-fu-hua-xun-lian-ying/di-wu-zhang-apimachinery/5.6-fu-wu-duan-he-ke-hu-duan-apply.md)
* [5.7 pod 生命周期和 conditions 浅析](k8s-yuan-ma-ren-cai-fu-hua-xun-lian-ying/di-wu-zhang-apimachinery/5.7-pod-sheng-ming-zhou-qi-he-conditions-qian-xi.md)
Expand All @@ -69,7 +69,6 @@
## 开发者要懂的 k8s

* [1 在 k8s 上部署应用](kai-fa-zhe-yao-dong-de-k8s/1-zai-k8s-shang-bu-shu-ying-yong.md)
* [Page](kai-fa-zhe-yao-dong-de-k8s/page.md)

## k8s源码每日新闻

Expand Down
76 changes: 39 additions & 37 deletions helm-jiao-cheng/03.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# 如何创建 Helm chart
# 03-制作chart

## 如何创建 Helm chart

使用 Helm CLI 生成 charts 目录。输入以下命令创建新 chart:

Expand All @@ -14,66 +16,66 @@ helm create phoenixnap

Helm chart 目录包含以下内容:

- ***charts*** - 存储相关 charts 的目录
- ***templates*** - 配置文件的目录
- ***Chart.yaml*** - 包含 charts 元数据的文件
- ***values.yaml*** - 包含默认参数值的文件
* _**charts**_ - 存储相关 charts 的目录
* _**templates**_ - 配置文件的目录
* _**Chart.yaml**_ - 包含 charts 元数据的文件
* _**values.yaml**_ - 包含默认参数值的文件

# 如何配置 Helm Chart
## 如何配置 Helm Chart

配置 Helm Chart 涉及自定义参数,例如**镜像拉取策略****名称覆盖****服务帐户****服务类型**请按照以下步骤了解如何在*values.yaml*文件中编辑这些参数
配置 Helm Chart 涉及自定义参数,例如**镜像拉取策略****名称覆盖****服务帐户****服务类型**请按照以下步骤了解如何在_values.yaml_文件中编辑这些参数

## 配置镜像拉取策略
### 配置镜像拉取策略

镜像拉取策略决定如何从注册表中拉取容器镜像。默认策略值为**`IfNotPresent`** ,这意味着 Kubernetes 仅当系统上尚不存在映像时才拉取该映像,下面我们尝试将策略改变为 Always:
镜像拉取策略决定如何从注册表中拉取容器镜像。默认策略值为\*\*`IfNotPresent`\*\* ,这意味着 Kubernetes 仅当系统上尚不存在映像时才拉取该映像,下面我们尝试将策略改变为 Always:

1. 打开*value.yaml*文件
2. 修改 image.pullPolicy 为 Always
1. 开_value.yaml_文
2. 修改 image.pullPolicy 为 Always

![image](https://github.com/user-attachments/assets/cad336eb-39ed-4a60-8cf4-ee986f91f513)

![image](https://github.com/user-attachments/assets/a40229ab-01e9-4774-97eb-a0ea32a88787)

## chart 名称覆盖
### chart 名称覆盖

要覆盖*value.yaml*文件中的chart名称,请将值添加到 *nameOverride **fullnameOverride* 字段。以下示例添加 *phoenix-app* 作为 *nameOverride* 值,并将*phoenix-chart*n 添加为 *fullnameOverride*
要覆盖_value.yaml_文件中的chart名称,请将值添加到 _nameOverride 和 fullnameOverride 字段。以下示例添加 phoenix-app 作为 nameOverride 值,并将phoenix-chart_n 添加为 _fullnameOverride_

![image](https://github.com/user-attachments/assets/b4622cdc-0d0c-49b9-97e3-becbbe749e83)

## 指定 service account名称
### 指定 service account名称

Helm chart 的 service account 名称是在运行集群时生成的。但是,最好手动设置它并确保应用程序直接与chart 中的受控用户关联。

![image](https://github.com/user-attachments/assets/69917499-7551-4591-b7c9-e7b9a5412fab)

## 更改网络服务类型
### 更改网络服务类型

根据集群的不同,部署可能需要不同的网络服务类型。例如,使用[Minikube](https://phoenixnap.com/kb/install-minikube-on-ubuntu)进行测试时,推荐的网络服务类型为*NodePort*
根据集群的不同,部署可能需要不同的网络服务类型。例如,使用[Minikube](https://phoenixnap.com/kb/install-minikube-on-ubuntu)进行测试时,推荐的网络服务类型为_NodePort_

要更改网络服务类型,请找到*服务*部分并更改*类型*字段中的值。下面的示例显示了设置为新服务类型的*NodePort*
要更改网络服务类型,请找到_服务_部分并更改_类型_字段中的值。下面的示例显示了设置为新服务类型的_NodePort_

![image](https://github.com/user-attachments/assets/8e8a441a-e67a-43bd-b54c-6d57aa503d67)

# 如何在 Kubernetes 上部署新的 Helm Chart
## 如何在 Kubernetes 上部署新的 Helm Chart

配置*values.yaml*文件后,使用[Helm命令](https://phoenixnap.com/kb/helm-commands-cheat-sheet)部署应用程序。继续执行以下步骤来完成此操作。
置_values.yaml_文件后,使用[Helm命令](https://phoenixnap.com/kb/helm-commands-cheat-sheet)部署应用程序。继续执行以下步骤来完成此操作。

## 第 1 步:安装 Helm Chart
### 第 1 步:安装 Helm Chart

```shell
helm install phoenix-chart phoenixnap/ --values phoenixnap/values.yaml
```

![image](https://github.com/user-attachments/assets/bdee469a-43ed-4671-9df2-e8e2b80a56d3)

### 步骤2:导出节点端口和IP地址
#### 步骤2:导出节点端口和IP地址

```shell
export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services phoenix-chart)
export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
```

### 步骤3:查看已部署的应用程序
#### 步骤3:查看已部署的应用程序

```shell
echo http://$NODE_IP:$NODE_PORT
Expand All @@ -85,9 +87,9 @@ echo http://$NODE_IP:$NODE_PORT

![image](https://github.com/user-attachments/assets/87e45dfc-e4e1-474d-826f-6a72a5665b4d)

# 从头开始创建(选读)
## 从头开始创建(选读)

## templates
### templates

你也可以不仅仅只是修改,你可以重新创建这个样例

Expand Down Expand Up @@ -139,13 +141,13 @@ spec:
首先,您需要弄清楚哪些值可以改变或者您想要模板化哪些值。我正在选择**name** 、 **replicas 、容器名称、image、** **imagePullPolicy**和**configMap Name** ,我在 YAML 文件中以粗体突出显示了这些名称。
- name:`{{ .Release.Name }}-nginx` :我们每次都需要更改部署名称,因为 Helm 不允许我们安装同名的版本。因此,我们将使用版本名称模板化部署名称,并随之插入**-nginx** 。现在,如果我们使用名称**frontend**创建一个版本,则部署名称将为**frontend-nginx** 。这样,我们就能保证名称的唯一性。
- container name :`{{ .Chart.Name }}` :对于容器名称,我们将使用 Chart 对象并使用**Chart.yaml**中的chart名称作为容器名称。
- replicas :` {{ .Values.replicaCount }}`我们将从**values.yaml**文件中访问副本值。
- image: **`"{{ .Values.image.repository }}:{{ .Values.image.tag }}"` 在这里,我们在一行中使用多个模板指令,并从 Values 文件中访问图像键下的存储库和标签信息。**
- configmap name: `{{ .Release.Name }}-index-html-configmap.` 这里我们将发布名称添加到配置映射中。
* name:`{{ .Release.Name }}-nginx` :我们每次都需要更改部署名称,因为 Helm 不允许我们安装同名的版本。因此,我们将使用版本名称模板化部署名称,并随之插入\*\*-nginx\*\* 。现在,如果我们使用名称**frontend**创建一个版本,则部署名称将为**frontend-nginx** 。这样,我们就能保证名称的唯一性。
* container name :`{{ .Chart.Name }}` :对于容器名称,我们将使用 Chart 对象并使用**Chart.yaml**中的chart名称作为容器名称。
* replicas : `{{ .Values.replicaCount }}`我们将从**values.yaml**文件中访问副本值。
* image: **`"{{ .Values.image.repository }}:{{ .Values.image.tag }}"` 在这里,我们在一行中使用多个模板指令,并从 Values 文件中访问图像键下的存储库和标签信息。**
* configmap name: `{{ .Release.Name }}-index-html-configmap.` 这里我们将发布名称添加到配置映射中。

这是应用模板后的最终**`deployment.yaml`**文件。模板化部分以粗体突出显示。将部署文件内容替换为以下内容。
这是应用模板后的最终\*\*`deployment.yaml`\*\*文件。模板化部分以粗体突出显示。将部署文件内容替换为以下内容。

```yaml
apiVersion: apps/v1
Expand Down Expand Up @@ -196,9 +198,9 @@ spec:
targetPort: {{ .Values.service.targetPort }}
```

在**协议模板指令**中,您可以看到一个竖线`( | )` 。它用于定义协议的默认值为TCP。这意味着,如果我们不在**`values.yaml`**文件中定义协议值或者它为空,它将采用TCP作为协议的默认值。
在**协议模板指令**中,您可以看到一个竖线`( | )` 。它用于定义协议的默认值为TCP。这意味着,如果我们不在\*\*`values.yaml`\*\*文件中定义协议值或者它为空,它将采用TCP作为协议的默认值。

创建**`configmap.yaml`**并向其中添加以下内容。在这里,我们将默认的 Nginx **index.html**页面替换为自定义 HTML 页面。此外,我们添加了一个模板指令来替换 HTML 中的环境名称。
创建\*\*`configmap.yaml`\*\*并向其中添加以下内容。在这里,我们将默认的 Nginx **index.html**页面替换为自定义 HTML 页面。此外,我们添加了一个模板指令来替换 HTML 中的环境名称。

```yaml
apiVersion: v1
Expand All @@ -215,9 +217,9 @@ data:
</html
```

## values
### values

`values.yaml`文件包含我们在模板中使用的模板指令中需要替换的所有值。现在,将默认的**`values.yaml`**内容替换为以下内容。
`values.yaml`文件包含我们在模板中使用的模板指令中需要替换的所有值。现在,将默认的\*\*`values.yaml`\*\*内容替换为以下内容。

```yaml
replicaCount: 2
Expand Down Expand Up @@ -250,15 +252,15 @@ nginx-chart
└── values.yaml
```

## 验证 Helm chart
### 验证 Helm chart

现在为了确保我们的chart有效并且所有缩进都正常,我们可以运行以下命令。确保您位于chart目录内。

```shell
helm lint .
```

如果您从**`nginx-chart`**目录外部执行它,请提供**`nginx-chart`**的完整路径
如果您从\*\*`nginx-chart`**目录外部执行它,请提供**`nginx-chart`\*\*的完整路径

```shell
helm lint /path/to/nginx-chart
Expand All @@ -285,4 +287,4 @@ helm template .
helm install --dry-run my-release nginx-chart
```

xxxxxxxxxx helm plugin install <path/url1>     # Install pluginshelm plugin list                    # View a list of all installed pluginshelm plugin update <plugin>         # Update pluginshelm plugin uninstall <plugin>      # Uninstall a pluginbash
xxxxxxxxxx helm plugin install \<path/url1> # Install pluginshelm plugin list # View a list of all installed pluginshelm plugin update # Update pluginshelm plugin uninstall # Uninstall a pluginbash
2 changes: 0 additions & 2 deletions kai-fa-zhe-yao-dong-de-k8s/page.md

This file was deleted.

0 comments on commit c09d1a2

Please sign in to comment.