安装Ingress NGINX¶
安装NGINX ingress controller的方法有如下几种:
备注
本文实践在 kind集群本地Registry 的 kind(本地docker模拟k8s集群) 上完成
准备工作(集群部署helm)¶
备注
kind(本地docker模拟k8s集群) 环境在 macOS安装Docker ( Docker Desktop on Mac
),所以helm安装采用 Homebrew 。其他Linux版本请参考 helm 实践
macOS 安装本地
helm
客户端:
brew install helm
备注
从 helm v3 开始,仅需要安装 helm 客户端(无需Tiller服务器端)
部署NGINX ingress controller¶
使用
helm
部署安装NGINX ingress controller
:
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
安装显示:
Release "ingress-nginx" does not exist. Installing it now.
NAME: ingress-nginx
LAST DEPLOYED: Mon Jan 30 16:47:57 2023
NAMESPACE: ingress-nginx
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The ingress-nginx controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace ingress-nginx get services -o wide -w ingress-nginx-controller'
An example Ingress that makes use of the controller:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example
namespace: foo
spec:
ingressClassName: nginx
rules:
- host: www.example.com
http:
paths:
- pathType: Prefix
backend:
service:
name: exampleService
port:
number: 80
path: /
# This section is only required if TLS is to be enabled for the Ingress
tls:
- hosts:
- www.example.com
secretName: example-tls
If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided:
apiVersion: v1
kind: Secret
metadata:
name: example-tls
namespace: foo
data:
tls.crt: <base64 encoded cert>
tls.key: <base64 encoded key>
type: kubernetes.io/tls
执行检查安装进度:
kubectl --namespace ingress-nginx get services -o wide -w ingress-nginx-controller
提示信息:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
ingress-nginx-controller LoadBalancer 10.96.174.5 <pending> 80:31132/TCP,443:32477/TCP 38s app.kubernetes.io/component=controller,app.kubernetes.io/instance=ingress-nginx,app.kubernetes.io/name=ingress-nginx
这里看到 EXTERNAL-IP pending
状态是因为没有安装 Kubernetes MetalLB 负载均衡 ,请参考 裸金属(bare-metal) NGINX Ingress