apiVersion: apps/v1 kind: Deployment metadata: name: knck-app labels: app: knck-app spec: replicas: 2 selector: matchLabels: app: knck-app template: metadata: labels: app: knck-app spec: containers: - name: knck-frontend image: knck-frontend:latest imagePullPolicy: Always ports: - containerPort: 80 resources: requests: cpu: "50m" memory: "64Mi" limits: cpu: "100m" memory: "128Mi" readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 5 periodSeconds: 10 livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 15 periodSeconds: 20 - name: knck-backend image: knck-backend:latest imagePullPolicy: Always ports: - containerPort: 3001 env: - name: PORT value: "3001" - name: NODE_ENV value: "production" - name: SMTP_HOST valueFrom: secretKeyRef: name: knck-secrets key: smtp-host - name: SMTP_PORT valueFrom: secretKeyRef: name: knck-secrets key: smtp-port - name: SMTP_USER valueFrom: secretKeyRef: name: knck-secrets key: smtp-user - name: SMTP_PASS valueFrom: secretKeyRef: name: knck-secrets key: smtp-pass - name: SMTP_FROM valueFrom: secretKeyRef: name: knck-secrets key: smtp-from - name: SMTP_TO valueFrom: secretKeyRef: name: knck-secrets key: smtp-to - name: CORS_ORIGIN value: "https://knck.pl" resources: requests: cpu: "100m" memory: "128Mi" limits: cpu: "200m" memory: "256Mi" readinessProbe: httpGet: path: /health port: 3001 initialDelaySeconds: 5 periodSeconds: 10 livenessProbe: httpGet: path: /health port: 3001 initialDelaySeconds: 15 periodSeconds: 20 --- kind: Ingress metadata: name: knck-ingress annotations: traefik.ingress.kubernetes.io/router.entrypoints: websecure traefik.ingress.kubernetes.io/router.tls: "true" traefik.ingress.kubernetes.io/router.middlewares: default-redirect-https@kubernetescrd traefik.ingress.kubernetes.io/service.serversscheme: http traefik.ingress.kubernetes.io/service.passhostheader: "true" traefik.ingress.kubernetes.io/router.priority: "1" cert-manager.io/cluster-issuer: letsencrypt-prod acme.cert-manager.io/http01-edit-in-place: "true" acme.cert-manager.io/http01-ingress-class: traefik spec: tls: - hosts: - knck.pl - api.knck.pl secretName: knck-tls rules: - host: knck.pl http: paths: - path: / pathType: Prefix backend: service: name: knck-app port: number: 80 - host: api.knck.pl http: paths: - path: / pathType: Prefix backend: service: name: knck-app port: number: 3001 --- kind: Service metadata: name: knck-app spec: selector: app: knck-app ports: - name: frontend protocol: TCP port: 80 targetPort: 80 - name: backend protocol: TCP port: 3001 targetPort: 3001 type: ClusterIP