概述
Nginx Ingress Controller 是使用 Kubernetes Ingress 资源对象构建的,用ConfigMap 来存储 Nginx 配置的一种 Ingress Controller 实现。
安装 ingress-nginx 有多种方式,本文使用 helm 3.12 方式进行安装。
其它安装方式可以参考文档:https://kubernetes.github.io/ingress-nginx/deploy/
本文 K8S 集群采用 kubeasz 工具搭建的二进制单 master 集群
Helm 介绍
Helm 是一个用于对需要在 K8S 上部署的复杂应用进行定义、安装和更新。 Helm 以 char 的方式对应用软件进行描述,可以方便地创建、版本化、共享和发布复杂的应用软件。
helm的主要概念
Helm 的应用包,采用tgz格式。类似于 Yum 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件,也称为应用 Chart。
Helm 的应用仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 应用包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询,Helm 可以同时管理多个不同的 Repository。
Helm 社区官方提供了 stable 和 incubator 仓库,但 Helm 社区没有打算独占仓库,而是允许其他人和组织也可以搭建仓库。仓库可以是公共仓库,也可以是私有仓库。
在 Kubernetes 集群上运行的 Chart 的一个实例。在同一个集群上,一个 Chart 可以安装很多次。每次安装都会创建一个新的 Release。例如一个 MySQL Chart,如果想在服务器上运行两个 MySQL 数据库,就可以把这个 Chart 安装两次。每次安装都会生成一个新的 Release。
helm 安装
Helm安装官方文档:https://helm.sh/docs/intro/install/
Chart包的目录结构
chart 是 Helm 的应用打包格式。chart 由一些列文件组成。这些文件描述了 Kubernetes 部署应用时所需要的资源。上面通过helm 命令创建一个 chart 包,目录结构说明如下:
helm-test
: chart 包的名称
charts
目录: 保存依赖文件的目录,如果依赖其它的chart,则会保存在这里
Chart.yaml
文件:用于描述 chart 信息的yaml文件,如版本信息等
values.yaml
文件:chart 支持在安装的时候根据参数进行定制化配置,而 values.yaml 则提供了这些配置参数的默认值,可以在安装前根据需要修改 values.yaml 的参数进行定制化部署
templates
目录:各类 Kubernetes 资源的配置模版都放置在这里。Helm 会将 values.yaml 中的参数值注入到模版中生成标准的 YAML 配置文件。
Helm 安装 Ingress-nginx
添加 ingress-nginx 官方 helm 仓库
下载 ingress-nginx 的 chart 包
修改 values.yaml 文件
下载的chart 包,需要修改一下资源清单配置文件,符合需求,修改 values.yaml 文件如下:
修改 ingress-nginx-controller 的镜像仓库地址,默认是 k8s.gcr.io
修改 hostNetwork 的值为 true
nodeSelector 添加标签 ingress: "true"
,用于部署 ingrss-controller 到指定节点
kind 类型为 DaemonSet
kube-webhook-certgen 的镜像地址修改为 docker仓库 dyrnq/kube-webhook-certgen:v1.4.0
执行安装
资源清单文件修改完成后,执行 helm 安装
安装完成后,检查相关资源
测试 ingress-nginx
创建后端的nginx 的 pod 和 Service
部署完成检查资源
创建 ingress 规则,ingress-nginx.yaml
创建 ingress
配置host解析,循环访问测试