diff --git a/manifests/_apps/mastodon-digest.yaml b/manifests/_apps/mastodon-digest.yaml new file mode 100644 index 0000000..615f92e --- /dev/null +++ b/manifests/_apps/mastodon-digest.yaml @@ -0,0 +1,28 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: mastodon-digest + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: cluster.fun + destination: + namespace: mastodon-digest + name: cluster-fun (scaleway) + source: + path: manifests/mastodon-digest + repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git" + targetRevision: HEAD + syncPolicy: + automated: {} + syncOptions: + - CreateNamespace=true + ignoreDifferences: + - kind: Secret + jsonPointers: + - /data + - group: apps + kind: Deployment + jqPathExpressions: + - .spec.template.spec.containers[]?.image diff --git a/manifests/mastodon-digest/mastodon_digest.yaml b/manifests/mastodon-digest/mastodon_digest.yaml new file mode 100644 index 0000000..7d56796 --- /dev/null +++ b/manifests/mastodon-digest/mastodon_digest.yaml @@ -0,0 +1,229 @@ +apiVersion: v1 +kind: Secret +metadata: + name: docker-config + namespace: mastodon-digest + annotations: + kube-1password: i6ngbk5zf4k52xgwdwnfup5bby + kube-1password/vault: Kubernetes + kube-1password/secret-text-key: .dockerconfigjson +type: kubernetes.io/dockerconfigjson +data: + .dockerconfigjson: e30= +--- +apiVersion: v1 +kind: Secret +metadata: + name: mastodon-digest-auth + namespace: mastodon-digest + annotations: + kube-1password: mr6spkkx7n3memkbute6ojaarm + kube-1password/vault: Kubernetes +type: Opaque +--- +apiVersion: v1 +kind: Secret +metadata: + name: mastodon-digest + namespace: mastodon-digest + annotations: + kube-1password: bfklz3yi3dn4e7xtsbttcvhata + kube-1password/vault: Kubernetes + kube-1password/secret-text-parse: "true" +type: Opaque +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: config + namespace: mastodon-digest + labels: + app: mastodon-digest +data: + config.json: | + [ + { + "timeline": "home", + "hours": 12, + "scorer": "ExtendedSimpleWeighted", + "threshold": "lax", + "output": "/usr/share/nginx/html/home/" + }, + { + "timeline": "federated", + "hours": 12, + "scorer": "ExtendedSimpleWeighted", + "threshold": "lax", + "output": "/usr/share/nginx/html/federated/" + } + ] +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: index + namespace: mastodon-digest + labels: + app: mastodon-digest +data: + index.html: | + + + + + + Mastodon Digest + + + +
+

Mastodon Digest

+ +
+ + +--- +apiVersion: v1 +kind: Service +metadata: + name: mastodon-digest + namespace: mastodon-digest +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: auth + name: web + selector: + app: mastodon-digest +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mastodon-digest + namespace: mastodon-digest +spec: + replicas: 1 + selector: + matchLabels: + app: mastodon-digest + template: + metadata: + labels: + app: mastodon-digest + spec: + imagePullSecrets: + - name: docker-config + containers: + - args: + - --cookie-secure=false + - --provider=oidc + - --provider-display-name=Auth0 + - --upstream=http://localhost:80 + - --http-address=$(HOST_IP):8000 + - --redirect-url=https://mastodon-digest.cluster.fun/oauth2/callback + - --email-domain=marcusnoble.co.uk + - --pass-basic-auth=false + - --pass-access-token=false + - --oidc-issuer-url=https://marcusnoble.eu.auth0.com/ + - --cookie-secret=KDGD6rrK6cBmryyZ4wcJ9xAUNW9AQNFT + env: + - name: HOST_IP + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: status.podIP + - name: OAUTH2_PROXY_CLIENT_ID + valueFrom: + secretKeyRef: + key: username + name: mastodon-digest-auth + - name: OAUTH2_PROXY_CLIENT_SECRET + valueFrom: + secretKeyRef: + key: password + name: mastodon-digest-auth + image: quay.io/oauth2-proxy/oauth2-proxy:v7.2.1 + name: oauth-proxy + ports: + - containerPort: 8000 + protocol: TCP + name: auth + resources: + limits: + memory: 50Mi + requests: + memory: 50Mi + + - name: web + image: nginx:stable + imagePullPolicy: IfNotPresent + ports: + - containerPort: 80 + name: web + volumeMounts: + - name: html + mountPath: /usr/share/nginx/html + - name: index + mountPath: /usr/share/nginx/html/index.html + subPath: index.html + + - name: digest + image: rg.fr-par.scw.cloud/averagemarcus-private/mastodon-digest:latest + imagePullPolicy: Always + env: + - name: CONFIG_FILE + value: /config.json + envFrom: + - secretRef: + name: mastodon-digest + volumeMounts: + - name: config + mountPath: /config.json + subPath: config.json + - name: html + mountPath: /usr/share/nginx/html + volumes: + - name: html + emptyDir: {} + - name: config + configMap: + name: config + - name: index + configMap: + name: index +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: mastodon-digest + namespace: mastodon-digest + annotations: + cert-manager.io/cluster-issuer: letsencrypt + nginx.ingress.kubernetes.io/force-ssl-redirect: "true" +spec: + ingressClassName: nginx + tls: + - hosts: + - mastodon-digest.cluster.fun + secretName: mastodon-digest-ingress + rules: + - host: mastodon-digest.cluster.fun + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: mastodon-digest + port: + number: 80