Helm示例


文档摘要

Helm 示例 此示例将使用裸机上的 ingress 并采用 Nginx Ingress 控制器和 metalLB。 在我的 文件夹中,我有 目录以及 和 YAML 文件: 在 Chart.yaml 文件内: 这是用于描述每个部署的元数据。 现在进入 templates 目录: deployment.yaml 文件包含一个简单的 nginx 部署: 而 service.yaml 文件: 以及 ingress.yaml 文件: 我们正在 ingress 上暴露端口 443。 接下来是 : 因此,借助 Helm 和仅需一个命令行工具 ,我们可以非常轻松且快速地部署我们的应用程序。

Helm 示例

此示例将使用裸机上的 ingress 并采用 Nginx Ingress 控制器和 metalLB。

在我的 helm-demo 文件夹中,我有 templates 目录以及 Chartvalues YAML 文件:

k8s-master@master:~/helm-demo$ ls Chart.yaml templates values.yaml

在 Chart.yaml 文件内:

name: my-first-demo version: 1.0.0 description: easy helm demo maintainers: - name: Siwar

这是用于描述每个部署的元数据。

现在进入 templates 目录:

k8s-master@master:~/helm-demo/templates$ ls deployment.yaml ingress.yaml service.yaml

deployment.yaml 文件包含一个简单的 nginx 部署:

apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx-deployment spec: selector: matchLabels: app: nginx replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80

而 service.yaml 文件:

apiVersion: v1 kind: Service metadata: name: my-nginx-service spec: selector: app: nginx ports: - name: main protocol: TCP port: 80

以及 ingress.yaml 文件:

apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-nginx-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / http.port: "443" spec: ingressClassName: nginx rules: - http: paths: - path: /testpath pathType: Prefix backend: service: name: my-nginx-service port: number: 80

我们正在 ingress 上暴露端口 443。

接下来是 helm install

k8s-master@master:~$ helm install --generate-name helm-demo/ NAME: helm-demo-1660310990 LAST DEPLOYED: Fri Aug 12 06:29:50 2022 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None

因此,借助 Helm 和仅需一个命令行工具 helm install,我们可以非常轻松且快速地部署我们的应用程序。

k8s-master@master:~$ kubectl get all NAME READY STATUS RESTARTS AGE pod/my-nginx-deployment-9456bbbf9-c74rs 0/1 ContainerCreating 0 11s pod/my-nginx-deployment-9456bbbf9-k4cdb 0/1 ContainerCreating 0 11s pod/my-nginx-deployment-9456bbbf9-mm7dm 0/1 ContainerCreating 0 11s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 22m service/my-nginx-service ClusterIP 10.100.146.193 <none> 80/TCP 11s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/my-nginx-deployment 0/3 3 0 11s NAME DESIRED CURRENT READY AGE replicaset.apps/my-nginx-deployment-9456bbbf9 3 3 0 11s

我们可以通过 ingress IP 192.168.1.240 and specifying the path /testpath:

The usual way to do this with kubectl is by executing the kubectl apply 命令行工具来检查我们的应用程序是否在浏览器中运行。

Helm 的另一个重要功能是占位符!
因此,如果我们查看另一个 deployment.yaml 文件:

apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx-deployment spec: selector: matchLabels: app: nginx replicas: {{.Values.scale}} template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80

{{.Values.scale}}placeholder makes it possible to modify the configuration without having to edit the actual manifest file every time.

So whatever the value of scale is in values.yaml file is going to be the value of the configuration file.

The values.yaml 文件:

k8s-master@master:~/helming-once-more$ cat values.yaml scale: 3

现在让我们再次安装我们的应用程序:

k8s-master@master:~$ helm install another-demo helming-once-more/ NAME: another-demo LAST DEPLOYED: Fri Aug 12 11:48:53 2022 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None

只是为了检查我们的 Pod 是否已启动并运行:

k8s-master@master:~$ kubectl get pods NAME READY STATUS RESTARTS AGE my-nginx-deployment-9456bbbf9-mx45n 1/1 Running 0 3m9s my-nginx-deployment-9456bbbf9-rqkmw 1/1 Running 0 3m9s my-nginx-deployment-9456bbbf9-tl4wj 1/1 Running 0 3m9s

因此,由于在 values.yaml 文件中的 scale 值,我们现在有 3 个 Pod。

出于某种原因,我们需要扩展我们的 Pod 数量:

k8s-master@master:~$ helm upgrade --set scale=5 another-demo ./helming-once-more/ Release "another-demo" has been upgraded. Happy Helming! NAME: another-demo LAST DEPLOYED: Fri Aug 12 11:55:14 2022 NAMESPACE: default STATUS: deployed REVISION: 2 TEST SUITE: None
k8s-master@master:~$ kubectl get pod NAME READY STATUS RESTARTS AGE my-nginx-deployment-9456bbbf9-7ddlm 1/1 Running 0 95s my-nginx-deployment-9456bbbf9-mx45n 1/1 Running 0 8m9s my-nginx-deployment-9456bbbf9-rqkmw 1/1 Running 0 8m9s my-nginx-deployment-9456bbbf9-tl4wj 1/1 Running 0 8m9s my-nginx-deployment-9456bbbf9-tpsqv 1/1 Running 0 96s

最后,我们将删除我们的应用程序:

k8s-master@master:~$ helm list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION another-demo default 2 2022-08-12 11:55:14.913503686 -0700 PDT deployed another-demo-1.0.0 k8s-master@master:~$ helm uninstall another-demo release "another-demo" uninstalled

声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。


作者与出处
原作者: Tikam02
来源:Tikam02
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: Tikam02 转发
评论区 (0)
U