k8s部署nginx访问Tomcat
要在Kubernetes上部署一个Nginx服务器,该服务器代理访问到后端的Tomcat服务,你可以使用以下步骤和示例配置来实现:
- 创建一个Nginx Deployment。
- 创建一个Service来暴露Nginx到集群内部。
- 创建一个Ingress或者Service来暴露Nginx到集群外部。
- 配置Nginx以代理传入的流量到后端的Tomcat服务。
以下是一个简单的示例配置:
nginx-deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx/conf.d
- name: nginx-logs
mountPath: /var/log/nginx
volumes:
- name: nginx-config
configMap:
name: nginx-config
- name: nginx-logs
emptyDir: {}
nginx-service.yaml:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
tomcat-deployment.yaml (假设已经有一个Tomcat的Deployment):
(省略)
tomcat-service.yaml:
(省略)
nginx-config-map.yaml:
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
data:
default.conf: |
upstream tomcat_server {
server tomcat-service:8080;
}
server {
listen 80;
location / {
proxy_pass http://tomcat_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
部署Nginx:
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
kubectl apply -f nginx-config-map.yaml
确保你已经有一个运行的Tomcat服务,你可以通过修改nginx-config-map.yaml中的upstream
部分来指向正确的Tomcat服务。
如果你需要通过Ingress来暴露服务,你可以创建一个Ingress资源,并指向Nginx Service。
ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: nginx-service
port:
number: 80
部署Ingress:
kubectl apply -f ingress.yaml
确保你的Kubernetes集群已经有一个Ingress Controller,如nginx-ingress或traefik。
这样,你就可以通过Ingress Controller的IP地址或域名访问Ngin
评论已关闭