From c09d1a26acc034e3140a8414920140c905e71fcd Mon Sep 17 00:00:00 2001 From: chaoyueshijian Date: Sat, 23 Nov 2024 02:36:18 +0000 Subject: [PATCH] GITBOOK-183: No subject --- SUMMARY.md | 3 +- helm-jiao-cheng/03.md | 76 +++++++++++++++--------------- kai-fa-zhe-yao-dong-de-k8s/page.md | 2 - 3 files changed, 40 insertions(+), 41 deletions(-) delete mode 100644 kai-fa-zhe-yao-dong-de-k8s/page.md diff --git a/SUMMARY.md b/SUMMARY.md index 2bc99a7..f12dca2 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -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) @@ -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源码每日新闻 diff --git a/helm-jiao-cheng/03.md b/helm-jiao-cheng/03.md index c4937c2..27be7c4 100644 --- a/helm-jiao-cheng/03.md +++ b/helm-jiao-cheng/03.md @@ -1,4 +1,6 @@ -# 如何创建 Helm chart +# 03-制作chart + +## 如何创建 Helm chart 使用 Helm CLI 生成 charts 目录。输入以下命令创建新 chart: @@ -14,51 +16,51 @@ 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 @@ -66,14 +68,14 @@ 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 @@ -85,9 +87,9 @@ echo http://$NODE_IP:$NODE_PORT ![image](https://github.com/user-attachments/assets/87e45dfc-e4e1-474d-826f-6a72a5665b4d) -# 从头开始创建(选读) +## 从头开始创建(选读) -## templates +### templates 你也可以不仅仅只是修改,你可以重新创建这个样例 @@ -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 @@ -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 @@ -215,9 +217,9 @@ data:     # Install pluginshelm plugin list                    # View a list of all installed pluginshelm plugin update         # Update pluginshelm plugin uninstall      # Uninstall a pluginbash \ No newline at end of file +xxxxxxxxxx helm plugin install \ # Install pluginshelm plugin list # View a list of all installed pluginshelm plugin update # Update pluginshelm plugin uninstall # Uninstall a pluginbash diff --git a/kai-fa-zhe-yao-dong-de-k8s/page.md b/kai-fa-zhe-yao-dong-de-k8s/page.md deleted file mode 100644 index 5c4b4d5..0000000 --- a/kai-fa-zhe-yao-dong-de-k8s/page.md +++ /dev/null @@ -1,2 +0,0 @@ -# Page -