
Пример двух контейнеров в одном поде, где первый контейнер с приложением, а второй — Nginx, который проксирует на контейнер с приложением. Так же контейнеры используют общую директорию.
manifest.yml
apiVersion: v1
kind: ConfigMap
metadata:
name: example-config
namespace: staging
labels:
app: example-app
data:
POSTGRES_USER: "pg_user"
POSTGRES_DB: "pg_db"
POSTGRES_PASSWORD: "password"
POSTGRES_HOST: "postgres-db-main"
POSTGRES_PORT: "5432"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-app
namespace: staging
labels:
app: example-app
spec:
replicas: 1
selector:
matchLabels:
app: example-app
strategy:
type: RollingUpdate
progressDeadlineSeconds: 300
template:
metadata:
labels:
app: example-app
spec:
volumes:
- name: shared-data
emptyDir: {}
containers:
- image: XXXXXXXXXXXX.dkr.ecr.eu-west-1.amazonaws.com/litslink:example-application
name: example
volumeMounts:
- name: shared-data
mountPath: /usr/src/app
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: example-config
- image: XXXXXXXXXXXX.dkr.ecr.eu-west-1.amazonaws.com/base-image:example-nginx
name: example-nginx
volumeMounts:
- name: shared-data
mountPath: /usr/share/nginx/html
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 80
nodeSelector:
nodegroup: staging
---
apiVersion: v1
kind: Service
metadata:
name: example-svc
namespace: staging
spec:
ports:
- port: 80
selector:
app: example-app
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ing
namespace: staging
annotations:
kubernetes.io/ingress.class: ingress-staging
certmanager.k8s.io/cluster-issuer: letsencrypt-prod
certmanager.k8s.io/acme-challenge-type: dns01
certmanager.k8s.io/acme-dns01-provider: dns
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- example.artem.services
secretName: example.artem.services-secret-tls
rules:
- host: example.artem.services
http:
paths:
- path: /
backend:
serviceName: example-svc
servicePort: 80
Nginx — app.conf
server {
listen 80;
listen [::]:80;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
location ^~ /storage/ {
root /usr/src/app;
}
}