diff --git a/app-of-apps/framadate.yaml b/app-of-apps/polly.yaml similarity index 84% rename from app-of-apps/framadate.yaml rename to app-of-apps/polly.yaml index db0d62e..171b6b3 100644 --- a/app-of-apps/framadate.yaml +++ b/app-of-apps/polly.yaml @@ -1,16 +1,16 @@ apiVersion: argoproj.io/v1alpha1 kind: Application metadata: - name: framadate + name: polly namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: destination: - namespace: framadate + namespace: polly server: https://kubernetes.default.svc project: default source: - path: framadate + path: polly repoURL: http://gitea.gitea.svc.k8s.undercloud.local:3000/Undercloud/k8s-apps.git targetRevision: HEAD \ No newline at end of file diff --git a/framadate/framadate.yaml b/framadate/framadate.yaml deleted file mode 100644 index b4a0877..0000000 --- a/framadate/framadate.yaml +++ /dev/null @@ -1,178 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: framadate ---- -apiVersion: v1 -kind: Secret -metadata: - name: framadate-secrets - namespace: framadate -type: Opaque -stringData: - ADMIN_PASSWORD: "change-this-password" - DB_PASSWORD: "change-this-db-password" - MYSQL_ROOT_PASSWORD: "change-this-root-password" ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: mysql-data - namespace: framadate -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 8Gi - storageClassName: cephfs-hyper ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: mysql - namespace: framadate -spec: - replicas: 1 - selector: - matchLabels: - app: mysql - template: - metadata: - labels: - app: mysql - spec: - containers: - - name: mysql - image: mysql - imagePullPolicy: IfNotPresent - env: - - name: MYSQL_DATABASE - value: framadate - - name: MYSQL_USER - value: framadate - - name: MYSQL_PASSWORD - valueFrom: - secretKeyRef: - name: framadate-secrets - key: DB_PASSWORD - - name: MYSQL_ROOT_PASSWORD - valueFrom: - secretKeyRef: - name: framadate-secrets - key: MYSQL_ROOT_PASSWORD - ports: - - containerPort: 3306 - name: mysql - volumeMounts: - - name: mysql-data - mountPath: /var/lib/mysql - readinessProbe: - tcpSocket: - port: 3306 - initialDelaySeconds: 10 - periodSeconds: 5 - livenessProbe: - tcpSocket: - port: 3306 - initialDelaySeconds: 30 - periodSeconds: 10 - volumes: - - name: mysql-data - persistentVolumeClaim: - claimName: mysql-data ---- -apiVersion: v1 -kind: Service -metadata: - name: mysql - namespace: framadate -spec: - selector: - app: mysql - ports: - - name: mysql - port: 3306 - targetPort: 3306 - type: ClusterIP ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: framadate - namespace: framadate -spec: - replicas: 1 - selector: - matchLabels: - app: framadate - template: - metadata: - labels: - app: framadate - spec: - containers: - - name: framadate - image: lefilament/framadate:latest - imagePullPolicy: IfNotPresent - env: - - name: ADMIN_USER - value: "admin" - - name: ADMIN_PASSWORD - valueFrom: - secretKeyRef: - name: framadate-secrets - key: ADMIN_PASSWORD - - name: APP_URL - value: "https://framadate.apps.undercloud.dev" - - name: MYSQL_DB - value: "framadate" - - name: MYSQL_USER - value: "framadate" - - name: MYSQL_PASSWORD - valueFrom: - secretKeyRef: - name: framadate-secrets - key: DB_PASSWORD - ports: - - containerPort: 80 - name: http ---- -apiVersion: v1 -kind: Service -metadata: - name: framadate - namespace: framadate -spec: - selector: - app: framadate - ports: - - name: http - port: 80 - targetPort: 80 - type: ClusterIP ---- -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: framadate - namespace: framadate - annotations: - kubernetes.io/ingress.class: nginx - cert-manager.io/cluster-issuer: letsencrypt -spec: - tls: - - hosts: - - framadate.apps.undercloud.dev - secretName: framadate-tls - rules: - - host: framadate.apps.undercloud.dev - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: framadate - port: - number: 80 \ No newline at end of file diff --git a/polly/polly.yaml b/polly/polly.yaml new file mode 100644 index 0000000..05df0b3 --- /dev/null +++ b/polly/polly.yaml @@ -0,0 +1,234 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: polly +--- +apiVersion: v1 +kind: Secret +metadata: + name: polly-secrets + namespace: polly +type: Opaque +stringData: + # change these + database-url: "postgresql://polly:change-this-db-password@postgres:5432/polly" + session-secret: "change-this-to-a-random-secret-with-at-least-32-characters" + admin-password: "change-this-admin-password" +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: postgres-data + namespace: polly +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi + # Use a block storage class here if you have one. + # If your cluster has a sane default RBD/block class, you can leave this out. + # storageClassName: ceph-block +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: polly-uploads + namespace: polly +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 4Gi + # Use block storage here too for a simple single-replica setup. + # storageClassName: ceph-block +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: postgres + namespace: polly +spec: + replicas: 1 + selector: + matchLabels: + app: postgres + template: + metadata: + labels: + app: postgres + spec: + containers: + - name: postgres + image: postgres:16-alpine + imagePullPolicy: IfNotPresent + env: + - name: POSTGRES_DB + value: polly + - name: POSTGRES_USER + value: polly + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: polly-secrets + key: database-url + optional: true + command: + - /bin/sh + - -ec + - | + export POSTGRES_PASSWORD="$(printf '%s' "$DATABASE_URL" | sed -n 's#.*://[^:]*:\([^@]*\)@.*#\1#p')" + exec docker-entrypoint.sh postgres + envFrom: + - secretRef: + name: polly-secrets + ports: + - name: postgres + containerPort: 5432 + volumeMounts: + - name: postgres-data + mountPath: /var/lib/postgresql/data + readinessProbe: + exec: + command: + - /bin/sh + - -ec + - pg_isready -U polly -d polly + initialDelaySeconds: 10 + periodSeconds: 5 + livenessProbe: + exec: + command: + - /bin/sh + - -ec + - pg_isready -U polly -d polly + initialDelaySeconds: 30 + periodSeconds: 10 + volumes: + - name: postgres-data + persistentVolumeClaim: + claimName: postgres-data +--- +apiVersion: v1 +kind: Service +metadata: + name: postgres + namespace: polly +spec: + selector: + app: postgres + ports: + - name: postgres + port: 5432 + targetPort: 5432 + type: ClusterIP +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: polly + namespace: polly +spec: + replicas: 1 + selector: + matchLabels: + app: polly + template: + metadata: + labels: + app: polly + spec: + containers: + - name: polly + image: manfredsteger/polly:latest + imagePullPolicy: IfNotPresent + env: + - name: DATABASE_URL + valueFrom: + secretKeyRef: + name: polly-secrets + key: database-url + - name: SESSION_SECRET + valueFrom: + secretKeyRef: + name: polly-secrets + key: session-secret + - name: APP_URL + value: "https://polly.apps.undercloud.dev" + - name: VITE_APP_URL + value: "https://polly.apps.undercloud.dev" + - name: BASE_URL + value: "https://polly.apps.undercloud.dev" + - name: ADMIN_USERNAME + value: "admin" + - name: ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: polly-secrets + key: admin-password + - name: ADMIN_EMAIL + value: "admin@undercloud.dev" + - name: SEED_DEMO_DATA + value: "false" + ports: + - name: http + containerPort: 5000 + volumeMounts: + - name: uploads + mountPath: /app/uploads + readinessProbe: + httpGet: + path: /api/v1/health + port: 5000 + initialDelaySeconds: 20 + periodSeconds: 10 + livenessProbe: + httpGet: + path: /api/v1/health + port: 5000 + initialDelaySeconds: 40 + periodSeconds: 20 + volumes: + - name: uploads + persistentVolumeClaim: + claimName: polly-uploads +--- +apiVersion: v1 +kind: Service +metadata: + name: polly + namespace: polly +spec: + selector: + app: polly + ports: + - name: http + port: 80 + targetPort: 5000 + type: ClusterIP +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: polly + namespace: polly + annotations: + kubernetes.io/ingress.class: nginx + cert-manager.io/cluster-issuer: letsencrypt +spec: + tls: + - hosts: + - polly.apps.undercloud.dev + secretName: polly-tls + rules: + - host: polly.apps.undercloud.dev + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: polly + port: + number: 80 \ No newline at end of file