Saki's 研究记录

在Apple M1电脑中通过helm部署nginx

字数统计: 838阅读时长: 3 min
2023/04/11

环境信息

minikube version: v1.26.0
docker desktop: 4.16.2 (95914)
mac OS: 13.1

简介

helmkubernetes的包管理器,在kubernetes下能够非常方便的完成应用的安装、卸载、升级等,是查看、分享和使用软件构建kubernetes的最优方式,被广泛的使用。helm是基于go语言实现。

Helm 的取名非常有意思,Kubernetes 是希腊语 “舵手” 的意思,而 Helm 是舵手操作的 “船舵”,用来控制船的航行方向。

安装 Helm

前提要求

  • kubernetes 1.5 以上版本
  • 执行 helm 命令的主机可以访问到 kubernetes 集群

请参考helm官方文档安装,对于Mac用户可以直接运行brew install helm安装即可。

使用 Helm

helm安装完成之后,我们就可以使用helmkubernetes中安装应用了。对于新手来说,最简单的方法是在artifactHub上搜索要安装的应用,然后按照文档中的安装步骤来操作即可。比如我们想要部署nginx,首先在artifactHub上进行搜索:
artifacthub-io

搜索到的结果:

artifacthub-search
注意左侧的KIND勾选上Helm charts,搜索出来的结果会有很多条,这些都是由不同的组织或个人发布的,可以在列表中看出发布的组织或个人名称,以及该Charts所在的仓库。BitnamiHelm中最常用的仓库之一,它内置了很多常用的kubernetes应用,于是我们选择进入 第一条搜索结果,查看关于 Nginx 应用的安装步骤、使用说明、以及支持的配置参数等信息,我们可以点击 INSTALL 按钮,会弹出一个对话框,并显示该应用的安装步骤:

artifacthub-search

按照它的提示,首先使用 helm repo add 将 Bitnami 仓库添加到我们的电脑:

1
2
$ helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories

然后使用 helm install 安装 Nginx 应用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ helm install my-nginx bitnami/nginx --version 13.2.30
NAME: my-nginx
LAST DEPLOYED: Thu Mar 23 16:24:51 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 13.2.30
APP VERSION: 1.23.3

** Please be patient while the chart is being deployed **
NGINX can be accessed through the following DNS name from within your cluster:

my-nginx.default.svc.cluster.local (port 80)

To access NGINX from outside the cluster, follow the steps below:

1. Get the NGINX URL by running these commands:

NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc --namespace default -w my-nginx'

export SERVICE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].port}" services my-nginx)
export SERVICE_IP=$(kubectl get svc --namespace default my-nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "http://${SERVICE_IP}:${SERVICE_PORT}"

稍等片刻,nginx就安装好了,我们可以使用kubectl来验证:

1
kubectl get pod

输出类似于:

1
2
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-57b598754b-h5hlb 1/1 Running 0 2m43s

因为使用的是minikube,需要输入minikube service my-nginx将在浏览器中自动打开my-nginx应用程序。
成功请求的响应会在浏览器页面展示:

1
minikube service nginx-form

输出类似于:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
minikube service my-nginx
|-----------|----------|-------------|---------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|----------|-------------|---------------------------|
| default | my-nginx | http/80 | http://192.168.49.2:30189 |
|-----------|----------|-------------|---------------------------|
🏃 Starting tunnel for service my-nginx.
|-----------|----------|-------------|------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|----------|-------------|------------------------|
| default | my-nginx | | http://127.0.0.1:56969 |
|-----------|----------|-------------|------------------------|
🎉 正通过默认浏览器打开服务 default/my-nginx...
❗ Because you are using a Docker driver on darwin, the terminal needs to be open to run it.

nginx-form-welcome
浏览器自动打开http://127.0.0.1:59206/, 可以看到nginx已成功启动。

以上。

CATALOG
  1. 1. 环境信息
  2. 2. 简介
  3. 3. 安装 Helm
  4. 4. 使用 Helm