本文介绍使用Helm在VKE中部署nginx-ingress。
前言
本文档介绍如何使用Helm在VKE群集中安装nginx-ingrss控制器并通过ingress代理tomcat服务。
关于实验
- 预计部署时间:30分钟
- 级别:初级
- 相关产品:VKE
- 受众: 通用
实验说明
如果还没有火山引擎账号,点击此链接注册账号
如果还没有VKE集群,参考此链接快速创建一个VKE
第一步、环境说明
- kubernetes版本:v1.20.6
- helm版本:v3.7.1
- nginx ingress chart版本:0.11.3
第二步 、部署Helm
如未安装helm命令,请参考helm官网
通过helm version确定是否安装成功

第三步、部署nginx ingress
- 增加ingress helm仓库
使用helm repo add nginx-stable https://helm.nginx.com/stable添加

- 更新仓库
使用helm repo update更新

- 查看nginx ingress版本信息
使用helm search repo nginx-stable/nginx-ingress -l查看

- 安装ingress
使用helm install nginx-ingress nginx-stable/nginx-ingress -n default安装,这里安装的是最近版本,如需安装指定版本添加参数--version即可

第四步、验证是否部署成功
- 查看helm chart状态
使用helm list -n default查看

- 查看nginx-ingress pod状态
使用kubectl get pod -n default|grep ingress查看

- 查看nginx-ingress deployment 状态
使用kubectl get deployment -n default|grep ingress查看

- 查看nginx-ingress service状态
使用kubectl get service -n default|grep ingress查看

第五步、部署tomcat验证nginx-ingress
- deployment yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-tomcat
spec:
selector:
matchLabels:
app: test-tomcat
replicas: 1
template:
metadata:
labels:
app: test-tomcat
spec:
containers:
- name: my-tomcat
image: tomcat
ports:
- containerPort: 8080
- 部署tomcat deployment
使用命令kubectl apply -f tomcat-deployment.yaml

- 查看tomcat deployment状态
使用kubectl get deployment -n default | grep tomcat命令查看

- 查看tomcat pod状态
使用kubectl get pod -n default | grep tomcat命令查看

- 编写测试页面
创建ROOT目录
kubectl exec -it -n default -- bash -c 'mkdir webapps/ROOT'

创建index.html文件,并添加内容
kubectl exec -it -n default -- bash -c 'echo "Hello Tomcat" > webapps/ROOT/index.html'

查看测试页面是否创建成功
kubectl exec -it -n default -- bash -c 'cat webapps/ROOT/index.html'

- service yaml文件
apiVersion: v1
kind: Service
metadata:
name: svc-tomcat
spec:
type: ClusterIP
ports:
- name: svc-port-tomcat
port: 80
targetPort: 8080
selector:
app: test-tomcat
- 部署service
使用命令kubectl apply -f tomcat-service.yaml部署

- 查看service状态
使用kubectl get service -n default | grep tomcat命令查看

- ingress yaml文件
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-tomcat
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: xxx.xxx.com
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: svc-tomcat
port:
number: 80
- 部署ingress
使用kubectl apply -f tomcat-ingress.yaml命令部署

- 查看ingress
使用命令kubectl get ingress -n default

- 验证
访问域名,ingress中配置的域名
说明:如无DNS解析,修改本地hosts文件,添加解析记录
