--- apiVersion: v1 kind: Namespace metadata: name: mastodon --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mastodon-web-pvc namespace: mastodon labels: app: mastodon spec: storageClassName: ceph-block accessModes: - ReadWriteOnce resources: requests: storage: 5Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mastodon-sidekiq-pvc namespace: mastodon labels: app: mastodon spec: storageClassName: ceph-block accessModes: - ReadWriteOnce resources: requests: storage: 5Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: mastodon namespace: mastodon spec: selector: matchLabels: app: mastodon replicas: 1 template: metadata: labels: app: mastodon spec: containers: - name: web image: tootsuite/mastodon:v4.0.2 command: ["bash", "-c", "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000"] ports: - containerPort: 3000 name: http-web-svc envFrom: - secretRef: name: mastodon-secret volumeMounts: - mountPath: "/mastodon/public/system" name: system livenessProbe: httpGet: path: /health port: 3000 failureThreshold: 10 initialDelaySeconds: 30 periodSeconds: 30 timeoutSeconds: 10 - name: streaming image: tootsuite/mastodon:v4.0.2 command: ["node", "./streaming"] ports: - containerPort: 4000 name: http-stream-svc envFrom: - secretRef: name: mastodon-secret livenessProbe: httpGet: path: /api/v1/streaming/health port: 4000 failureThreshold: 10 initialDelaySeconds: 30 periodSeconds: 30 timeoutSeconds: 10 - name: sidekiq image: tootsuite/mastodon:v4.0.2 command: ["bundle", "exec", "sidekiq"] envFrom: - secretRef: name: mastodon-secret volumeMounts: - mountPath: "/mastodon/public/system" name: system volumes: - name: system persistentVolumeClaim: claimName: mastodon-web-pvc --- apiVersion: v1 kind: Service metadata: name: mastodon-service namespace: mastodon spec: selector: app: mastodon type: ClusterIP ports: - name: mast-web-port protocol: TCP port: 3000 targetPort: http-web-svc - name: mast-stream-port protocol: TCP port: 4000 targetPort: http-stream-svc --- apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: mastodon namespace: mastodon spec: entryPoints: - websecure routes: - kind: Rule match: Host(`mastodon.jibby.org`) services: - kind: Service name: mastodon-service port: 3000 - kind: Rule match: Host(`streaming.mastodon.jibby.org`) services: - kind: Service name: mastodon-service port: 4000