59 lines
1.4 KiB
YAML
59 lines
1.4 KiB
YAML
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-web
|
|
spec:
|
|
replicas: 10
|
|
selector:
|
|
matchLabels:
|
|
app: nginx-web
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: nginx-web
|
|
annotations:
|
|
# Require dedicated ENI per pod
|
|
vpc.cni.amazonaws.com/network-mode: "IPV4"
|
|
vpc.cni.amazonaws.com/eniMode: "per-pod" # One ENI per pod
|
|
vpc.cni.amazonaws.com/eniPrefixMode: "GLOBAL" # Prefix mode for efficiency
|
|
spec:
|
|
initContainers:
|
|
- name: unique-index
|
|
image: busybox:1.35
|
|
command: ['sh', '-c']
|
|
args:
|
|
- |
|
|
echo "<h1>Web Server $(POD_NAME)</h1><p>Deployed at $(date)</p>" > /usr/share/nginx/html/index.html
|
|
env:
|
|
- name: POD_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.name
|
|
volumeMounts:
|
|
- name: nginx-html
|
|
mountPath: /usr/share/nginx/html
|
|
containers:
|
|
- name: nginx
|
|
image: nginx:1.27-alpine
|
|
ports:
|
|
- containerPort: 80
|
|
volumeMounts:
|
|
- name: nginx-html
|
|
mountPath: /usr/share/nginx/html
|
|
readOnly: true
|
|
volumes:
|
|
- name: nginx-html
|
|
emptyDir: {}
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: nginx-service
|
|
spec:
|
|
selector:
|
|
app: nginx-web
|
|
ports:
|
|
- port: 80
|
|
targetPort: 80
|
|
type: ClusterIP
|