Nginx Ingress和Nginx
- 2025-04-23 22:34:09
- 丁国栋
- 原创 163
If you can't beat them, join them. 打不过就加入。
一般来说,一个安装了Kubernetes+Nginx Ingress的主机会使用80、443端口,因此如果还想在这台服务器上使用Nginx反向代理其他服务就不能像以前那样了。
但我们可以使用Nginx Ingress来代替Nginx实现,要想使用Nginx Ingress必须要有Service。
因此有下面两种常见的方式来实现:
- Ingress + Service。在没有Endpoint时,Service支持的类型有ExternalName
- Ingress + Service + Endpoint。在有Endpoint 时,Service类型可以是ClusterIP。
Ingress + Service
---
apiVersion: v1
kind: Service
metadata:
name: gitfox-service
namespace: default
spec:
externalName: gitfox.thedf.cc
ports:
- port: 443
protocol: TCP
targetPort: 443
sessionAffinity: None
type: ExternalName
status:
loadBalancer: {}
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($request_uri ~* "/(spaces/zentao|zentao|git/zentao)(/|$)") {
return 404;
}
name: g.thedf.cc
namespace: default
spec:
ingressClassName: nginx
rules:
- host: g.thedf.cc
http:
paths:
- backend:
service:
name: gitfox-service
port:
number: 443
path: /
pathType: Prefix
tls:
- hosts:
- g.thedf.cc
secretName: tls-thedf-cc
status:
loadBalancer: {}
Ingress + Service + Endpoint
---
apiVersion: v1
kind: Endpoints
metadata:
labels:
app: example-app
name: example-app
namespace: default
subsets:
- addresses:
- ip: 1.0.1.1
ports:
- name: http
port: 40000
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: example-app
name: example-app
namespace: default
spec:
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: http
port: 40000
protocol: TCP
targetPort: 40000
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"
nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
name: example-app
namespace: default
spec:
ingressClassName: nginx
rules:
- host: v.thedf.cc
http:
paths:
- backend:
service:
name: example-app
port:
number: 40000
path: /
pathType: Prefix
tls:
- hosts:
- v.thedf.cc
secretName: tls-thedf-cc
status:
loadBalancer: {}
---
--
发表评论