Пример двух контейнеров в одном поде, где первый контейнер с приложением, а второй — Nginx, который проксирует на контейнер с приложением. Так же контейнеры используют общую директорию.
manifest.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 ; } } |