apiVersion: v1 kind: Namespace metadata: name: cycle-dev --- apiVersion: apps/v1 kind: Deployment metadata: name: cycle-backend-deployment namespace: cycle-dev labels: app: cycle-backend spec: replicas: 1 selector: matchLabels: app: cycle-backend template: metadata: labels: app: cycle-backend spec: containers: - name: cycle-backend image: gitea.webart-tech.ru/webart/strava-backend/platformer:ff5f4684d7ddf1377eaa124d3f4f35ba10e201d9 env: - name: FS_DRIVER value: "s3" - name: FS_LOCAL_MOUNT_DIR value: "/files" - name: APP_PUBLIC_URL value: "https://cycle-rider.ru" - name: DB_URI value: "postgresql+asyncpg://gen_user:D%5C8C34*Bv%3E%5CVwD@192.168.0.4:5432/default_db" - name: FS_S3_BUCKET value: "3e261d49-5cb7-438b-b998-60a67dfa4d2f" - name: FS_ACCESS_KEY_ID value: "BI086M8O245328C2CE21" - name: FS_SECRET_ACCESS_KEY value: "bOXOMVBhWzxzjuJPb0gvvE7zZM4YOIELwujXiF69" - name: FS_S3_ENDPOINT value: "https://s3.twcstorage.ru" ports: - containerPort: 8000 volumeMounts: - mountPath: /files name: filedir volumes: - name: filedir persistentVolumeClaim: claimName: persistent-volume readOnly: false --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: persistent-volume namespace: cycle-dev spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- apiVersion: v1 kind: Service metadata: name: cycle-backend-service namespace: cycle-dev spec: ports: - port: 8000 targetPort: 8000 name: tcp selector: app: cycle-backend --- apiVersion: apps/v1 kind: Deployment metadata: name: cycle-frontend-deployment namespace: cycle-dev labels: app: cycle-frontend spec: replicas: 1 selector: matchLabels: app: cycle-frontend template: metadata: labels: app: cycle-frontend spec: containers: - name: cycle-frontend image: gitea.webart-tech.ru/webart/strava-frontend:e59523fd1c7d92e2887b769fc94bde2052f96d34 env: - name: VITE_APP_API_URL value: "http://cycle-backend-service:8000" - name: SSR_BASE_URL value: "https://cycle-rider.ru" ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: cycle-frontend-service namespace: cycle-dev spec: ports: - port: 80 targetPort: 80 name: tcp selector: app: cycle-frontend --- # Middleware: redirect all HTTP to HTTPS apiVersion: traefik.containo.us/v1alpha1 kind: Middleware metadata: name: redirect-to-https namespace: cycle-dev spec: redirectScheme: scheme: https permanent: true --- # HTTP Ingress: redirects to HTTPS apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cycle-ingress-redirect namespace: cycle-dev annotations: kubernetes.io/ingress.class: "traefik" traefik.ingress.kubernetes.io/router.entrypoints: "web" traefik.ingress.kubernetes.io/router.middlewares: "cycle-dev-redirect-to-https@kubernetescrd" spec: ingressClassName: traefik rules: - host: "cycle-rider.ru" http: paths: - path: / pathType: Prefix backend: service: name: cycle-frontend-service port: number: 80 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cycle-ingress namespace: cycle-dev annotations: kubernetes.io/ingress.class: "traefik" traefik.ingress.kubernetes.io/router.entrypoints: "websecure" cert-manager.io/cluster-issuer: letsencrypt-prod spec: ingressClassName: traefik rules: - host: "cycle-rider.ru" http: paths: - path: /docs pathType: Prefix backend: service: name: cycle-backend-service port: number: 8000 - path: /openapi.json pathType: ImplementationSpecific backend: service: name: cycle-backend-service port: number: 8000 - path: /api pathType: Prefix backend: service: name: cycle-backend-service port: number: 8000 - path: / pathType: Prefix backend: service: name: cycle-frontend-service port: number: 80 tls: - hosts: - cycle-rider.ru secretName: cycle-dev-tls