运行 Spring 使用 Azure Kubernetes 在端口 80 上启动
Running Spring Boot on Port 80 with Azure Kubernetes
给定 Spring 引导应用程序 docker-compose.yaml:
version: '3'
services:
my-ws:
build: .
image: my-ws
container_name: my-ws
ports:
- "8080:8080"
和 kubernetes 清单:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: my-ws
spec:
replicas: 3
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: my-ws
spec:
containers:
- name: my-ws
image: myacr.azurecr.io/my-ws:v1
ports:
- containerPort: 8080
resources:
requests:
cpu: 250m
limits:
cpu: 500m
---
apiVersion: v1
kind: Service
metadata:
name: my-ws
spec:
loadBalancerIP: <redacted>
type: LoadBalancer
ports:
- port: 8080
selector:
app: my-ws
我们可以在 Azure Kubernetes 服务上成功部署并且应用程序在端口 8080 上响应。我们希望它在端口 80 上响应。我们尝试将 docker-compose.yaml 端口更改为:
ports:
- 80:80
和清单:
- containerPort: 80
...
-port: 80
并重新部署。部署成功,但该应用程序在 8080 或 80 上均不可用。
您需要将服务端口 80 映射到容器端口 8080,这是最简单的解决方案(也是破坏性最小的):
---
apiVersion: v1
kind: Service
metadata:
name: my-ws
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
selector:
app: my-ws
ps。保持其他一切不变
给定 Spring 引导应用程序 docker-compose.yaml:
version: '3'
services:
my-ws:
build: .
image: my-ws
container_name: my-ws
ports:
- "8080:8080"
和 kubernetes 清单:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: my-ws
spec:
replicas: 3
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: my-ws
spec:
containers:
- name: my-ws
image: myacr.azurecr.io/my-ws:v1
ports:
- containerPort: 8080
resources:
requests:
cpu: 250m
limits:
cpu: 500m
---
apiVersion: v1
kind: Service
metadata:
name: my-ws
spec:
loadBalancerIP: <redacted>
type: LoadBalancer
ports:
- port: 8080
selector:
app: my-ws
我们可以在 Azure Kubernetes 服务上成功部署并且应用程序在端口 8080 上响应。我们希望它在端口 80 上响应。我们尝试将 docker-compose.yaml 端口更改为:
ports:
- 80:80
和清单:
- containerPort: 80
...
-port: 80
并重新部署。部署成功,但该应用程序在 8080 或 80 上均不可用。
您需要将服务端口 80 映射到容器端口 8080,这是最简单的解决方案(也是破坏性最小的):
---
apiVersion: v1
kind: Service
metadata:
name: my-ws
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
selector:
app: my-ws
ps。保持其他一切不变