--- apiVersion: v1 kind: ConfigMap metadata: name: ${CI_PROJECT_PATH_SLUG}-config-map data: DB_NAME: "${APP_DB_NAME}" DB_USER: "${APP_DB_USER}" DB_PASSWORD: "${APP_DB_PASSWORD}" DB_HOST: "${APP_DB_HOST}" DB_PREFIX: "ldc_" WP_ENV: "${APP_WP_ENV}" WP_HOME: "https://${REDIRECT}${APP_DOMAIN}" WP_SITEURL: "https://${REDIRECT}${APP_DOMAIN}/wp" AUTH_KEY: "${APP_AUTH_KEY}" SECURE_AUTH_KEY: "${APP_SECURE_AUTH_KEY}" LOGGED_IN_KEY: "${APP_LOGGED_IN_KEY}" NONCE_KEY: "${APP_NONCE_KEY}" AUTH_SALT: "${APP_AUTH_SALT}" SECURE_AUTH_SALT: "${APP_SECURE_AUTH_SALT}" LOGGED_IN_SALT: "${APP_LOGGED_IN_SALT}" NONCE_SALT: "${APP_NONCE_SALT}" DISABLE_WP_CRON: "true" SMTP_HOST: "${APP_SMTP_HOST}" SMTP_PORT: "${APP_SMTP_PORT}" SMTP_AUTH: "${APP_SMTP_AUTH}" SMTP_USER: "${APP_SMTP_USER}" SMTP_PASS: "${APP_SMTP_PASS}" SMTP_SECURE: "${APP_SMTP_SECURE}" MAIL_FROM_NAME: "Société Bretonne de Volaille" MAIL_FROM_ADDRESS: "no-reply@societebretonnedevolaille.fr" CONTACT_MAIL_RECRUTEMENT: "${APP_CONTACT_MAIL_RECRUTEMENT}" CONTACT_MAIL_COMMERCIAL: "${APP_CONTACT_MAIL_COMMERCIAL}" CONTACT_MAIL_PRESSE: "${APP_CONTACT_MAIL_PRESSE}" CONTACT_MAIL_AUTRE: "${APP_CONTACT_MAIL_AUTRE}" CONTACT_MAIL_PAI: "${APP_CONTACT_MAIL_PAI}" CONTACT_MAIL_SAV: "${APP_CONTACT_MAIL_SAV}" MATOMO_SITE_ID: "${APP_MATOMO_SITE_ID}" GOOGLE_RECAPTCHA_PUBLIC: "${APP_GOOGLE_RECAPTCHA_PUBLIC}" GOOGLE_RECAPTCHA_PRIVATE: "${APP_GOOGLE_RECAPTCHA_PRIVATE}" UWIL_ADMIN_SECURE_CIDR_LIST: "${APP_GLOBAL_UWIL_ADMIN_SECURE_CIDR_LIST}" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ${CI_PROJECT_PATH_SLUG}-pvc-storage spec: storageClassName: "csi-cinder-classic" accessModes: - ReadWriteOnce resources: requests: storage: $APP_PVC_SIZE --- apiVersion: apps/v1 kind: Deployment metadata: name: ${CI_PROJECT_PATH_SLUG}-deployment spec: replicas: 1 selector: matchLabels: app: ${CI_PROJECT_PATH_SLUG}-app template: metadata: labels: app: ${CI_PROJECT_PATH_SLUG}-app spec: containers: - name: ${CI_PROJECT_PATH_SLUG}-container image: $IMAGE_TAG envFrom: - configMapRef: name: ${CI_PROJECT_PATH_SLUG}-config-map resources: limits: cpu: "${APP_CI_CPU_LIMIT}" memory: "${APP_CI_MEMORY_LIMIT}" requests: cpu: "${APP_CI_CPU_REQUEST}" memory: "${APP_CI_MEMORY_REQUEST}" volumeMounts: - name: storage mountPath: /app/srcs/public/app/uploads imagePullSecrets: - name: docker-registry-credentials securityContext: runAsUser: 33 runAsGroup: 33 fsGroup: 33 fsGroupChangePolicy: "OnRootMismatch" volumes: - name: storage persistentVolumeClaim: claimName: ${CI_PROJECT_PATH_SLUG}-pvc-storage --- apiVersion: v1 kind: Service metadata: name: ${CI_PROJECT_PATH_SLUG}-service spec: selector: app: ${CI_PROJECT_PATH_SLUG}-app ports: - port: 80 targetPort: 80 --- apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: ${CI_PROJECT_PATH_SLUG}-ingress-route spec: entryPoints: - web - websecure routes: - match: Host(`${APP_DOMAIN}`) || Host(`www.${APP_DOMAIN}`) kind: Rule services: - name: ${CI_PROJECT_PATH_SLUG}-service port: 80 middlewares: - name: redirect-no-www-to-www namespace: common-services tls: secretName: ${CRT_TLS_NAME}