imfreedom/k8s-cluster

24ce94c1d474
Parents ac12dd6e85d0
Children
Replace the trac app with a static webcrawl of the application
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/50-developer.pidgin.im/kustomization.yaml Mon Feb 05 02:48:51 2024 -0600
@@ -0,0 +1,7 @@
+---
+namespace: roost
+commonLabels:
+ app: developer-pidgin-im
+resources:
+ - manifest.yaml
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/50-developer.pidgin.im/manifest.yaml Mon Feb 05 02:48:51 2024 -0600
@@ -0,0 +1,204 @@
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: Middleware
+metadata:
+ name: d-pidgin-im-redirect
+spec:
+ redirectRegex:
+ regex: ^https?:\/\/[^\/]+(.*)$
+ replacement: https://developer.pidgin.im${1}
+ permanent: true
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: Middleware
+metadata:
+ name: trac-ticket-to-youtrack
+spec:
+ redirectRegex:
+ regex: ^https?:\/\/[^\/]+/ticket/(\d+).*$
+ replacement: https://issues.imfreedom.org/issue/PIDGIN-${1}
+ permanent: true
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: Middleware
+metadata:
+ name: trac-report-to-youtrack
+spec:
+ redirectRegex:
+ regex: ^https?:\/\/[^\/]+/report(/.*)?$
+ replacement: https://issues.imfreedom.org/issues/PIDGIN?u=1
+ permanent: true
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: Middleware
+metadata:
+ name: trac-query-to-youtrack
+spec:
+ redirectRegex:
+ regex: ^https?:\/\/[^\/]+/query(.*)?$
+ replacement: https://issues.imfreedom.org/issues/
+ permanent: true
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: Middleware
+metadata:
+ name: trac-timeline-to-youtrack
+spec:
+ redirectRegex:
+ regex: ^https?:\/\/[^\/]+/timeline(.*)?$
+ replacement: https://issues.imfreedom.org/issues/
+ permanent: true
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: Middleware
+metadata:
+ name: trac-bonjour-windows
+spec:
+ redirectRegex:
+ regex: ^https?:\/\/[^\/]+/BonjourWindows(.*)?$
+ replacement: /wiki/Protocol Specific Questions#CanIuseWindowsPidginforBonjour
+ permanent: false
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+ name: developer-pidgin-im-http
+spec:
+ entryPoints:
+ - http
+ routes:
+ - match: Host(`developer.pidgin.im`)
+ kind: Rule
+ services:
+ - name: developer-pidgin-im
+ port: 8080
+ middlewares:
+ - name: https-redirect
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+ name: developer-pidgin-im
+spec:
+ entryPoints:
+ - https
+ routes:
+ - match: Host(`developer.pidgin.im`)
+ kind: Rule
+ services:
+ - name: developer-pidgin-im
+ port: 8080
+ middlewares:
+ - name: common-headers
+ - name: hsts-headers
+ - name: trac-ticket-to-youtrack
+ - name: trac-report-to-youtrack
+ - name: trac-query-to-youtrack
+ - name: trac-timeline-to-youtrack
+ - name: trac-bonjour-windows
+ tls:
+ secretName: developer-pidgin-im-tls
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+ name: d-pidgin-im-http
+spec:
+ entryPoints:
+ - http
+ routes:
+ - match: Host(`d.pidgin.im`)
+ kind: Rule
+ services:
+ - name: developer-pidgin-im
+ port: 8080
+ middlewares:
+ - name: d-pidgin-im-redirect
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+ name: d-pidgin-im
+spec:
+ entryPoints:
+ - https
+ routes:
+ - match: Host(`d.pidgin.im`)
+ kind: Rule
+ services:
+ - name: developer-pidgin-im
+ port: 8080
+ middlewares:
+ - name: common-headers
+ - name: hsts-headers
+ - name: d-pidgin-im-redirect
+ tls:
+ secretName: developer-pidgin-im-tls
+---
+apiVersion: cert-manager.io/v1
+kind: Certificate
+metadata:
+ name: developer-pidgin-im
+spec:
+ secretName: developer-pidgin-im-tls
+ issuerRef:
+ name: letsencrypt
+ commonName: developer.pidgin.im
+ dnsNames:
+ - developer.pidgin.im
+ - d.pidgin.im
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: developer-pidgin-im
+spec:
+ ports:
+ - port: 8080
+ protocol: TCP
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: developer-pidgin-im
+ labels:
+ keel.sh/policy: force
+spec:
+ replicas: 2
+ revisionHistoryLimit: 0
+ selector:
+ matchLabels:
+ app: developer-pidgin-im
+ template:
+ metadata:
+ labels:
+ app: developer-pidgin-im
+ spec:
+ affinity:
+ podAntiAffinity:
+ preferredDuringSchedulingIgnoredDuringExecution:
+ - podAffinityTerm:
+ labelSelector:
+ matchExpressions:
+ - key: app
+ operator: In
+ values:
+ - developer-pidgin-im
+ topologyKey: failure-domain.beta.kubernetes.io/region
+ weight: 100
+ containers:
+ - name: nginx
+ image: docker.io/pidgin/developer.pidgin.im:latest
+ imagePullPolicy: Always
+ env:
+ resources:
+ limits:
+ cpu: 100m
+ memory: 96Mi
+ requests:
+ cpu: 50m
+ memory: 64Mi
+ ports:
+ - containerPort: 8080
+---
+
--- a/50-developer.pidgin.im/postgres/kustomization.yaml Fri Feb 02 01:04:36 2024 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
----
-namespace: roost
-commonLabels:
- app: trac
- role: db
-resources:
- - manifest.yaml
-secretGenerator:
- - name: trac-postgres
- envs:
- - secrets/env
- options:
- disableNameSuffixHash: true
--- a/50-developer.pidgin.im/postgres/manifest.yaml Fri Feb 02 01:04:36 2024 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-# developer.pidgin.im is a containerized version of the old trac site from the
-# nicobar host.
----
-apiVersion: v1
-kind: Service
-metadata:
- name: trac-postgres
-spec:
- ports:
- - port: 5432
- protocol: TCP
- selector:
- app: trac
- role: db
----
-apiVersion: networking.k8s.io/v1
-kind: NetworkPolicy
-metadata:
- name: trac-postgres
-spec:
- podSelector:
- matchLabels:
- app: trac
- role: db
- ingress:
- - from:
- - podSelector:
- matchExpressions:
- - key: app
- operator: In
- values:
- - trac
- - key: role
- operator: In
- values:
- - app
- ports:
- - port: 5432
- protocol: TCP
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: trac-postgres
-spec:
- replicas: 1
- revisionHistoryLimit: 0
- selector:
- matchLabels:
- app: trac
- role: db
- strategy:
- type: Recreate
- template:
- spec:
- containers:
- - name: postgres
- image: postgres:11
- imagePullPolicy: Always
- env:
- - name: POSTGRES_USER
- valueFrom:
- secretKeyRef:
- name: trac-postgres
- key: username
- - name: POSTGRES_PASSWORD
- valueFrom:
- secretKeyRef:
- name: trac-postgres
- key: password
- - name: POSTGRES_DB
- valueFrom:
- secretKeyRef:
- name: trac-postgres
- key: db
- resources:
- limits:
- cpu: 250m
- memory: 256Mi
- requests:
- cpu: 125m
- memory: 128Mi
- ports:
- - containerPort: 5432
- volumeMounts:
- - mountPath: /var/lib/postgresql/data
- name: trac-postgres
- readOnly: false
- subPath: postgresql
- volumes:
- - name: trac-postgres
- persistentVolumeClaim:
- claimName: trac-db
----
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
- name: trac-db
-spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 3Gi
----
-apiVersion: gemini.fairwinds.com/v1beta1
-kind: SnapshotGroup
-metadata:
- name: trac-db
-spec:
- persistentVolumeClaim:
- claimName: trac-db
- schedule:
- - every: day
- keep: 0
----
--- a/50-developer.pidgin.im/trac/kustomization.yaml Fri Feb 02 01:04:36 2024 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
----
-namespace: roost
-commonLabels:
- app: trac
- role: app
-configMapGenerator:
- - name: trac-apache2-sites-enabled
- files:
- - sites-enabled/developer.pidgin.im.conf
- options:
- disableNameSuffixHash: true
-resources:
- - manifest.yaml
-secretGenerator:
- - name: trac-env
- envs:
- - secrets/env
- options:
- disableNameSuffixHash: true
- - name: trac-conf
- files:
- - secrets/trac.ini
- - secrets/trac.htdigest
- options:
- disableNameSuffixHash: true
--- a/50-developer.pidgin.im/trac/manifest.yaml Fri Feb 02 01:04:36 2024 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,277 +0,0 @@
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: Middleware
-metadata:
- name: d-pidgin-im-redirect
-spec:
- redirectRegex:
- regex: ^https?:\/\/[^\/]+(.*)$
- replacement: https://developer.pidgin.im${1}
- permanent: true
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: Middleware
-metadata:
- name: trac-ticket-to-youtrack
-spec:
- redirectRegex:
- regex: ^https?:\/\/[^\/]+/ticket/(\d+).*$
- replacement: https://issues.imfreedom.org/issue/PIDGIN-${1}
- permanent: true
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: Middleware
-metadata:
- name: trac-report-to-youtrack
-spec:
- redirectRegex:
- regex: ^https?:\/\/[^\/]+/report(/.*)?$
- replacement: https://issues.imfreedom.org/issues/PIDGIN?u=1
- permanent: true
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: Middleware
-metadata:
- name: trac-query-to-youtrack
-spec:
- redirectRegex:
- regex: ^https?:\/\/[^\/]+/query(.*)?$
- replacement: https://issues.imfreedom.org/issues/
- permanent: true
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: Middleware
-metadata:
- name: trac-timeline-to-youtrack
-spec:
- redirectRegex:
- regex: ^https?:\/\/[^\/]+/timeline(.*)?$
- replacement: https://issues.imfreedom.org/issues/
- permanent: true
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: IngressRoute
-metadata:
- name: developer-pidgin-im-http
-spec:
- entryPoints:
- - http
- routes:
- - match: Host(`developer.pidgin.im`)
- kind: Rule
- services:
- - name: trac-app
- port: 80
- middlewares:
- - name: https-redirect
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: IngressRoute
-metadata:
- name: developer-pidgin-im
-spec:
- entryPoints:
- - https
- routes:
- - match: Host(`developer.pidgin.im`)
- kind: Rule
- services:
- - name: trac-app
- port: 80
- middlewares:
- - name: common-headers
- - name: hsts-headers
- - name: trac-ticket-to-youtrack
- - name: trac-report-to-youtrack
- - name: trac-query-to-youtrack
- - name: trac-timeline-to-youtrack
- tls:
- secretName: developer-pidgin-im-tls
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: IngressRoute
-metadata:
- name: d-pidgin-im-http
-spec:
- entryPoints:
- - http
- routes:
- - match: Host(`d.pidgin.im`)
- kind: Rule
- services:
- - name: trac-app
- port: 80
- middlewares:
- - name: d-pidgin-im-redirect
----
-apiVersion: traefik.containo.us/v1alpha1
-kind: IngressRoute
-metadata:
- name: d-pidgin-im
-spec:
- entryPoints:
- - https
- routes:
- - match: Host(`d.pidgin.im`)
- kind: Rule
- services:
- - name: trac-app
- port: 80
- middlewares:
- - name: common-headers
- - name: hsts-headers
- - name: d-pidgin-im-redirect
- tls:
- secretName: developer-pidgin-im-tls
----
-apiVersion: cert-manager.io/v1
-kind: Certificate
-metadata:
- name: developer-pidgin-im
-spec:
- secretName: developer-pidgin-im-tls
- issuerRef:
- name: letsencrypt
- commonName: developer.pidgin.im
- dnsNames:
- - developer.pidgin.im
- - d.pidgin.im
----
-apiVersion: v1
-kind: Service
-metadata:
- name: trac-app
-spec:
- ports:
- - port: 80
- protocol: TCP
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: trac-app
-spec:
- replicas: 1
- revisionHistoryLimit: 0
- selector:
- matchLabels:
- app: trac
- role: app
- strategy:
- type: Recreate
- template:
- metadata:
- labels:
- app: trac
- role: app
- spec:
- initContainers:
- - name: bootstrap
- image: docker.io/rwgrim/trac-bootstrap:latest
- imagePullPolicy: Always
- env:
- - name: DESTINATION
- valueFrom:
- secretKeyRef:
- name: trac-env
- key: destination
- - name: GID
- valueFrom:
- secretKeyRef:
- name: trac-env
- key: gid
- - name: S3_ACCESS_KEY
- valueFrom:
- secretKeyRef:
- name: trac-env
- key: s3_access_key
- - name: S3_KEY
- valueFrom:
- secretKeyRef:
- name: trac-env
- key: s3_key
- - name: S3_SECRET_KEY
- valueFrom:
- secretKeyRef:
- name: trac-env
- key: s3_secret_key
- - name: S3_URL
- valueFrom:
- secretKeyRef:
- name: trac-env
- key: s3_url
- - name: TAR_ARGS
- value: -J
- - name: UID
- valueFrom:
- secretKeyRef:
- name: trac-env
- key: uid
- volumeMounts:
- - mountPath: /srv
- name: trac-trac
- readOnly: false
- subPath: trac
- containers:
- - name: trac
- image: docker.io/rwgrim/apache2-trac:latest
- imagePullPolicy: Always
- env:
- resources:
- limits:
- cpu: 500m
- memory: 384Mi
- requests:
- cpu: 250m
- memory: 192Mi
- ports:
- - containerPort: 5432
- volumeMounts:
- - mountPath: /srv
- name: trac-trac
- readOnly: false
- subPath: trac
- - mountPath: /srv/trac/conf
- name: trac-conf
- readOnly: true
- - mountPath: /srv/trac/log
- name: trac-log
- readOnly: false
- - mountPath: /etc/apache2/sites-enabled/
- name: trac-apache2-sites-enabled
- readOnly: true
- volumes:
- - name: trac-trac
- persistentVolumeClaim:
- claimName: trac-trac
- - name: trac-conf
- secret:
- secretName: trac-conf
- - name: trac-apache2-sites-enabled
- configMap:
- name: trac-apache2-sites-enabled
- - name: trac-log
- emptyDir: {}
----
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
- name: trac-trac
-spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 2Gi
----
-apiVersion: gemini.fairwinds.com/v1beta1
-kind: SnapshotGroup
-metadata:
- name: trac-trac
-spec:
- persistentVolumeClaim:
- claimName: trac-app
- schedule:
- - every: day
- keep: 0
----
--- a/50-developer.pidgin.im/trac/sites-enabled/developer.pidgin.im.conf Fri Feb 02 01:04:36 2024 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-<Directory "/srv/trac/deploy/cgi-bin/trac.wsgi">
- WSGIApplicationGroup %{GLOBAL}
- Require all granted
-</Directory>
-
-<Directory "/srv/trac/deploy/cgi-bin/viewmtn_to_hg.wsgi">
- WSGIApplicationGroup %{GLOBAL}
- Require all granted
-</Directory>
-
-<Directory "/srv/trac/deploy/">
- Options -Indexes -MultiViews
- Require all granted
-</Directory>
-
-<Directory "/srv/trac/files/attachments/">
- Options -Indexes -MultiViews
- Require all granted
-</Directory>
-
-<Directory "/srv/htdocs_extension/">
- Options -Indexes -MultiViews
- Require all granted
-</Directory>
-
-<VirtualHost *:80>
- # ServerName developer.pidgin.im
-
- # Header edit Set-Cookie "^(.*)" $1;Secure;HttpOnly
- # Header set X-Frame-Options DENY
- # Header always set Strict-Transport-Security "max-age=31536000"
-
- XSendFile on
- XSendFilePath /srv/trac/files/attachments/
- #XSendFilePath /srv/downloads/
-
- DocumentRoot /srv/trac/deploy/htdocs
- WSGIScriptAlias /viewmtn /srv/trac/deploy/cgi-bin/viewmtn_to_hg.wsgi
- WSGIScriptAlias / /srv/trac/deploy/cgi-bin/trac.wsgi
- Alias /chrome/ /srv/trac/deploy/htdocs/
- Alias /static/ /srv/trac/deploy/htdocs/site/
- Alias /robots.txt /srv/trac/deploy/htdocs/site/robots.txt
- Alias /favicon.ico /srv/trac/deploy/htdocs/site/pidgin.ico
- Alias /l10n/ /srv/trac/deploy/htdocs/l10n/
- Alias /extension/ /srv/htdocs_extension/
- #Alias /raw-attachment/ /srv/trac/files/attachments/
- Alias /shared/ /srv/htdocs/shared
-
- # try to rate limit people on /query, /register, and /search
- #SecRuleEngine On
- #<LocationMatch "^/(query|register|search)">
- # SecAction initcol:ip=${REMOTE_ADDR},pass,nolog
- # SecAction "phase:5,deprecatevar:ip.heavypaths=1/1,pass,nolog"
- # SecRule IP:HEAVYPATHS "@gt 20" "phase:2,pause:300,deny,status:509,setenv:RATELIMITED,skip:1,nolog"
- # SecAction "phase:2,pass,setvar:ip.heavypaths=+1,nolog"
- #</LocationMatch>
-
- RedirectPermanent /simpleticket /newticket
- RedirectPermanent /BonjourWindows "/wiki/Protocol Specific Questions#CanIuseWindowsPidginforBonjour"
-
- RedirectMatch permanent /doxygen/2.0.0/html/(.*) https://docs.pidgin.im/pidgin/2.x.y/$1
- RedirectMatch permanent /doxygen/2.2.0/html/(.*) https://docs.pidgin.im/pidgin/2.x.y/$1
- RedirectMatch permanent /doxygen/2.5.0/html/(.*) https://docs.pidgin.im/pidgin/2.x.y/$1
- RedirectMatch permanent /doxygen/2.5.2/html/(.*) https://docs.pidgin.im/pidgin/2.x.y/$1
- RedirectMatch permanent /doxygen/2.7.11/html/(.*) https://docs.pidgin.im/pidgin/2.x.y/$1
- RedirectMatch permanent /doxygen/2.10.5/html/(.*) https://docs.pidgin.im/pidgin/2.x.y/$1
- RedirectMatch permanent /doxygen/2.13.0/html/(.*) https://docs.pidgin.im/pidgin/2.x.y/$1
- RedirectMatch permanent /doxygen/dev2.x.y/html/(.*) https://docs.pidgin.im/pidgin/2.x.y/$1
-</VirtualHost>
-