Kubernetes(K8s) Ingress(Nginx)的安装配置和使用
- 本篇操作需要使用Helm,若集群没有安装Helm可参考《Kubernetes 安装配置 Helm 2.x》
安装 Nginx-Ingress
在Master节点执行安装命令
helm install stable/nginx-ingress --name nginx-ingress --set rbac.create=true --namespace=kube-system
修改部署配置
kubectl edit deploy -n kube-system nginx-ingress-controller
开启80、443端口映射
在spec - template - spec段下增加:hostNetwork: true # 如果你是在Dashboard里修改,请注意语法。下同。
其他可选配置
在spec - template - spec - containers - args段下增加:--configmap=kube-system/nginx-ingress-controller-config
Ingress类
--ingress-class=nginx
配置默认SSL证书路径
--default-ssl-certificate=kube-system/ssl-crt
创建配置文件
在上面配置了configmap配置文件路径,此处创建的配置文件才会生效。
此步可以将以下代码保存为文件nginx-config.yaml,执行kubectl apply -f nginx-config.yaml
;或可直接复制到Dashboard中执行。
---
kind: ConfigMap
apiVersion: v1
metadata:
name: nginx-ingress-controller-config
namespace: kube-system
labels:
app: nginx-ingress
component: controller
heritage: Tiller
release: nginx-ingress
data:
enable-vts-status: 'false'
proxy-stream-timeout: '3600'
upstream-keepalive-timeout: '3600'
更多配置参数可以参考:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/
使用Nginx-Ingress
这里举例,为Dashboard添加Ingress配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dashboard-ingress
namespace: kube-system
annotations:
nginx.ingress.kubernetes.io/backend-protocol: 'https'
spec:
tls:
- hosts:
- dashboard.k8s.dev
secretName: ssl-crt
rules:
- host: dashboard.k8s.dev
http:
paths:
- path: /
backend:
serviceName: kubernetes-dashboard
servicePort: 443
- 域名你可以随意设定,域名需要解析到运行了nginx-ingress-controller容器组的节点主机IP。
- secretName用来指定SSL证书名称,证书需要跟Ingress配置在同一个namespace下。
- serviceName需要指定已创建的服务名称,servicePort是与之对应的端口。
- annotations用来配置当前配置在nginx中的一些参数。例如
nginx.ingress.kubernetes.io/backend-protocol
是给定后端程序的连接协议。更多参数可以参考:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/
扫描二维码,在手机上阅读!
最后由Hazx修改于2021-10-20 12:23