--- # tasks file for gitlab - name: Create stream namespace k8s: state: present definition: apiVersion: v1 kind: Namespace metadata: name: stream - name: Create PVC for PostgreSQL k8s: state: present definition: apiVersion: v1 kind: PersistentVolumeClaim metadata: name: postgres namespace: stream spec: accessModes: - ReadWriteOnce resources: requests: storage: 64Gi - name: Create Deployment for PostgreSQL k8s: state: present definition: apiVersion: v1 kind: Deployment metadata: name: postgres namespace: stream labels: app: postgres spec: replicas: 1 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers: - name: postgres image: postgres volumeMounts: - name: data mountPath: /var/lib/postgresql/data ports: - containerPort: 5432 env: - name: PGDATA value: /var/lib/postgresql/data/pgdata - name: POSTGRES_DB value: owncast - name: POSTGRES_USER value: owncast - name: POSTGRES_PASSWORD value: "{{ owncast_postgres_password }}" volumes: - name: data persistentVolumeClaim: claimName: postgres - name: Create Service for PostgreSQL k8s: state: present definition: apiVersion: v1 kind: Service metadata: name: postgres namespace: stream spec: selector: app: postgres ports: - port: 5432 name: postgres type: ClusterIP - name: Create PVC for OwnCast k8s: state: present definition: apiVersion: v1 kind: PersistentVolumeClaim metadata: name: owncast namespace: stream spec: accessModes: - ReadWriteOnce resources: requests: storage: 128Gi - name: Create Deployment for OwnCast k8s: state: present definition: apiVersion: v1 kind: Deployment metadata: name: owncast namespace: stream labels: app: owncast spec: replicas: 1 selector: matchLabels: app: owncast template: metadata: labels: app: owncast spec: containers: - name: owncast image: owncast/owncast volumeMounts: - name: data mountPath: /app/data ports: - containerPort: 8080 - containerPort: 1935 env: volumes: - name: data persistentVolumeClaim: claimName: owncast - name: Create Service for OwnCast k8s: state: present definition: apiVersion: v1 kind: Service metadata: name: owncast namespace: stream spec: selector: app: owncast ports: - port: 1935 name: rtmp - port: 80 targetPort: 8080 name: http type: LoadBalancer - name: Create Ingress k8s: state: present definition: apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: cert-manager.io/cluster-issuer: ca-issuer name: owncast namespace: stream spec: ingressClassName: nginx rules: - host: stream.eom.dev http: paths: - pathType: Prefix path: / backend: service: name: stream port: number: 80 tls: - hosts: - stream.eom.dev secretName: owncast