cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

commit aa36a00e985557d5abced1a4efba67ff968eaa5a
parent a49dfd058eba9d38c6121dbe484b0023ffb80a0b
Author: MTRNord <mtrnord1@gmail.com>
Date:   Wed, 19 Mar 2025 14:14:03 +0100

Migrate mastodon to HTTPRoute

Diffstat:
Mapps/base/envoy-gateway/release.yaml | 12++++++++++++
Mapps/base/mastodon/release.yaml | 100+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
2 files changed, 82 insertions(+), 30 deletions(-)

diff --git a/apps/base/envoy-gateway/release.yaml b/apps/base/envoy-gateway/release.yaml @@ -394,6 +394,18 @@ spec: certificateRefs: - kind: Secret name: hub.mtrnord.blog-tls + - name: https-mtrnord-blog-mastodon + protocol: HTTPS + hostname: "mastodon.mtrnord.blog" + port: 443 + allowedRoutes: + namespaces: + from: "All" + tls: + mode: Terminate + certificateRefs: + - kind: Secret + name: mastodon.mtrnord.blog-tls - name: http protocol: HTTP port: 80 diff --git a/apps/base/mastodon/release.yaml b/apps/base/mastodon/release.yaml @@ -26,8 +26,8 @@ spec: externalAuth: oidc: enabled: true - client_id: ENC[AES256_GCM,data:sboDxKdUUMETentchrVilD8V4a1rb4G1plaGgrpHgeSNgPg4/N425g==,iv:hIzVmBws3Qk6h93wqNrQShKOXm3wmS3MruxiJI1O8aE=,tag:83lTDlg/moXgZmr/phInXQ==,type:str] - client_secret: ENC[AES256_GCM,data:HBBJ8c1p5u8W4v4YRNtxIRsZNiLszLVX9b0K43TmSII65kZlf1/KiR93Gnwzn0q9GbZCZ68X0Omt03jSM/5ScyxgvnkShjxT/NRQ1z4jYTX9eAOgW3QylX7Rbrv3hcgHlj51RX2cF2ROYgaoHwkjDWK9sOLHFshYp2hXDb1D1Jc=,iv:b8X9/3NmTJUTOrdy+nvQuFL2Rar65VgkSfvtSc5zwSA=,tag:yvZI42D6/Y9yhUSWdTdbLw==,type:str] + client_id: ENC[AES256_GCM,data:ssBMInaM4PniEKjnT6+NX5ylwRMtQ59Lna1g/ICgS2j+66rMp/q+fA==,iv:SF9nAHj5qhgd0FtsmlomTc0PoAM3lbXHJ3gqSshmVck=,tag:g9Lr/S9WQR0uiZLoQxki7w==,type:str] + client_secret: ENC[AES256_GCM,data:FQqDDMdVsiVQCvAIiU+p/RT48dL2Lyn2Ubj08n+SlhbiTwMeGGKnWpmW6sf1KeGPSuCUpqJR0d3PCckxr53UrI3ni2NefxX1U+m+wBwSCGRWiy3Q6wSeXKwkEULw1ACGyKJgYZH2Cvm6rBl5evB31yQZtMsoB9n46VDgNg5n9Ig=,iv:+nzO17CgfX6y8sfqN2ylSYYIh/VpxliOTy/+WPSx/rU=,tag:Qbd9qxnGcdLsMXvzGPcTMg==,type:str] display_name: authentik discovery: true issuer: https://auth.midnightthoughts.space/application/o/mastodon/ @@ -60,8 +60,8 @@ spec: resources: limits: {} requests: - cpu: "136m" - memory: "542Mi" + cpu: 136m + memory: 542Mi workers: - name: all-queues concurrency: 25 @@ -69,15 +69,16 @@ spec: resources: limits: {} requests: - cpu: "136m" - memory: "542Mi" + cpu: 136m + memory: 542Mi queues: - default,8 - push,6 - ingress,4 - mailers,2 - pull - - scheduler # Make sure the scheduler queue only exists once and with a worker that has 1 replica. + # Make sure the scheduler queue only exists once and with a worker that has 1 replica. + - scheduler web: updateStrategy: type: RollingUpdate @@ -88,8 +89,8 @@ spec: resources: limits: {} requests: - cpu: "180m" - memory: "875Mi" + cpu: 180m + memory: 875Mi authorizedFetch: true local_domain: mtrnord.blog persistence: @@ -100,15 +101,15 @@ spec: existingClaim: mastodon-system-v2 accessMode: ReadWriteMany secrets: - secret_key_base: ENC[AES256_GCM,data:thSj9li7Yah3dJKZC74k5yGU3xOYxLzLqw+fukJjqE4qI57rxdid8LxxpRo7CZfzziPdezJUtpRDKDmvSuyG0HcYuT6u6tE6R2HgwPG37wkrYJgfztE88+W+BS+GOR7SMZa3cU3uWxOF88xbL6Luj1A6zU4G1Mgc92cGNamiarI=,iv:v9A2PCLTR+G0fiDlEGEM3SNaP5q7GYFAfZVdl2vxcPo=,tag:sDWtSmiMqXvN0Ooyz720yw==,type:str] - otp_secret: ENC[AES256_GCM,data:X/LnE7zlFeghK6ogBTEaAfH6XmtCGakqT6dyU/Gj87Ztduc+c27NlKXe0/IFXsZygXEYtduyyG1BrFiI+ZisOBAOH9+XcME97KjskNRlQjmdJBULEYlV7oaIO2UBLSWkv3Gn0bA4z6XOnz40hyoG9iyhY9vhxPXHyGbxXSSNlKo=,iv:xtfTG4Zv8rgP/53WcrOoyQ55OVs0rr6sGMLgkdliqZU=,tag:P/yvy18Z6J1apilyTT+1IA==,type:str] + secret_key_base: ENC[AES256_GCM,data:BLR157W5f4JwNT4N0n16efinPrTfK2KADyBdBZB1E+LRt4bzCvaeSuJdSptjACTlTEXqq8NVmG4DtvlK/6khkYySpQ/m8CSvvAfHNiyB/TbaGqNYWs7hrAS/aQrECTOO7ex/pKizjvvBdMHlU3YkMYud/HPk3JY/aVBP8OnvzQM=,iv:Z3f4PVsyZ+KKsY339el+8wopwqwxLJn1WClyBiYcBe0=,tag:ju/IztFSKJ1jz25iaWCg2g==,type:str] + otp_secret: ENC[AES256_GCM,data:eYGyji3p1htz00iG6XSRgmoLUPYWAjfuTvZI1bzfed9D7KDjzXdg6Yz24eCtq6v6vVDg9dTupeSsaWxZVR2QtuBRqI36tTYQ6aw0RuDzukBlMZQ67wq+hUE/JyeA6C7iUmfgpezrVnoGq1nIueiSYaHz2jzMuw/CTTGU4R+n+yU=,iv:BV2zdq3ebMw1NvfuSb2Z1HVWQ5hRit4sNproLhpymJk=,tag:Ca+cIbnAKwkB4axMJTMKBw==,type:str] vapid: - private_key: ENC[AES256_GCM,data:EWisRr9DbW41eODbIzWCP9Z9CVoE2BzyhMqyYzA+FiQgmbT2pmYOIMTz+qk=,iv:3p2t9sstIgEaqQvftClVCFz+YiFk4SIKeEI6+Qgynj8=,tag:0R10PFOZzfRAxbxlyS5lnw==,type:str] - public_key: ENC[AES256_GCM,data:Yejo/aC2eFHC7YBBAucAFz8DfiT3LmVv2eoLGtRyF36iT3OWb5XTbSIdbcckxkGmxKs/Ev6JkWBf55v3AZ7iz5dE4c7cT/pygd7nzQ8T4Y5uiOa9KCcpIA==,iv:aPYNs0ZhAmSvAhrZMADcUpFooJYUw7AC1G4TT367RQg=,tag:6DJ2G3uhrwc1mI8sgMh7ow==,type:str] + private_key: ENC[AES256_GCM,data:+PEI0sEalRmGvVckSj6JOOlMY4nxTHirAe6Q6ORY63g51ebd5nIR161fa6Y=,iv:GaGXnAjltAH1klbb7chs/ZGAxK3Nb9A7Z2QLUFU330E=,tag:gGwW6eFMvAzDHj9IIWM3Vg==,type:str] + public_key: ENC[AES256_GCM,data:JAsv1O31mn6DwDrywZyGZYl6gZPPTlmIe8o3Q4wEXbkQ05/8hYcKq9reIZgfp/qK9JOl1Vy5KnQUhS7Zk0FnmdOLPHCyNEPWYbjRjj5Z591QREeaUIAiUA==,iv:atG8iNt7IMUSVsFjZO6oKq3EDbWFXOQ4Hkv7AhSTtuo=,tag:TotA2MDcHdxRWMXATZ+/2A==,type:str] activeRecordEncryption: - primaryKey: ENC[AES256_GCM,data:/OpESxFG49YkS24Ez2aPRq/0g9KXWph7gqMgpe43P7thOvembUU7mJlOhXXB5YweeQRzyyDZ7Swvs6JVhWpS/A==,iv:Xkn1viBiII+lsba8YBmJwgdEidYeeW/6y2DfshiGVKU=,tag:LIw+Ji8eflkxPcpFExBRqQ==,type:str] - deterministicKey: ENC[AES256_GCM,data:l3pUU6bZLX0zyj+fWI2cImhzsbAAuicwAWSSvTmN1zL1KbLWHDjYMjxYj8nz6KmroPoxwDG9nd0GjxgjxfFl3A==,iv:raUBjUYU0a0cASTCbNuRGXKev0I6mQg6oSPOdxTlbak=,tag:iFHFQzlo9rQMTevzIxD6pg==,type:str] - keyDerivationSalt: ENC[AES256_GCM,data:XTTHwWmqvVR4OyAoSeqgS/bFsSpB2qtN71bXkI5GvZgczlxxsGRWcC8XnA7cVSvC2Twnbbd0sC7tfD6YBdk8Cg==,iv:8z0OW0AZRu69uwzeYVf5Xujqm9JE/HCiF+D1WfhZe9I=,tag:ojtX7Sb2guGuCTjjb1iO9A==,type:str] + primaryKey: ENC[AES256_GCM,data:q6clYY2iu7rc3JxzfVeD9j02+y2taJ1nPeBo4w6zYd4oiS2QXju8M1qDve3iUbfYjqnqlf0lnGkTHh6CJQsC3w==,iv:C9usSBY2dbhmWGxK0Elp3vzBmrotaczKdSCXHFM27ow=,tag:vd5spqrMvLLqsJHN4LfPPg==,type:str] + deterministicKey: ENC[AES256_GCM,data:MVwCMzBSziJBoVV/V1uP8V+GId1hRtgYGRCqKCNf7CWJK1gWRYoE+qnkXgg8bNLsw8k2Mq8NqlrRhl4LaZWmXQ==,iv:w2mEQTIW9V86qqtrAu52YdBZi5uePF5zZASBac0CoWw=,tag:sDxkKu7D9+KJ7XxlszPJ7g==,type:str] + keyDerivationSalt: ENC[AES256_GCM,data:v1QtWMeYfreC25t1J5FNKElMGgPjNJgkqxl66lBu5sfGDL/hBoGpFU77kW2DAiGduLO1acf4B+Ak+jb/3hAtvg==,iv:rE4Mru5m1v23oUXhUOV8Xm65YeYMAFAasaqg8FQBZLw=,tag:mesepmI30/pAWdaApmd2Cg==,type:str] singleUserMode: true smtp: domain: smtp.fastmail.com @@ -118,7 +119,7 @@ spec: server: smtp.fastmail.com login: mtrnord@nordgedanken.dev tls: true - password: ENC[AES256_GCM,data:t5b/w9RKalqscEHhllA9hg==,iv:kJ6nrGd5xuSb2vpuVtHOUCqM5NzTi+81L43Pvr5rMIY=,tag:3rEBm0DtbQn6j4pw8iqLUQ==,type:str] + password: ENC[AES256_GCM,data:MlNefLJXYEdPplmeljIj+A==,iv:+Ss+fr7g97M2EimAd8LXHoHAYNR43CpGlMeZerwG46M=,tag:619AMuExZsR8S0uaJhOIJA==,type:str] streaming: updateStrategy: type: RollingUpdate @@ -128,8 +129,8 @@ spec: resources: limits: {} requests: - cpu: "41m" - memory: "100Mi" + cpu: 41m + memory: 100Mi replicas: 2 workers: 2 sslMode: no-verify @@ -143,7 +144,7 @@ spec: auth: database: mastodon username: mastodon - password: ENC[AES256_GCM,data:EU/zVx0YPs7Ko9xEcjB6bPkfzSSJz0KZOTzWOqHIb5lA8hLAAN1LgtXP4GG7ToOPvbV8GjgZ6LCDZgwqlb6h1w==,iv:5beUAYnLuzwjwQ22HpSXauAx75CPsIGEgA1aMwKs9Rg=,tag:wCG57l6NUzKxSRIUcuOk3Q==,type:str] + password: ENC[AES256_GCM,data:PDAem1QkWwHeEZqDeHsZdnOTk0yt4cPrX510CBbbUcWyAB2YEubGLPQfk9FRAdW2ga+N1T6nD06IG3SQaUsb1w==,iv:a/F91ucWj4+5venO2ERHyQieTc/akyLIY5F40o88BOA=,tag:ukDgpB/j3WPYLmdCdJTkqQ==,type:str] enabled: false postgresqlHostname: pg-cluster-v2-rw.postgres-cluster.svc.cluster.local #postgresqlReplicaHostname: main-ctrlc-repl.postgres.svc @@ -153,7 +154,7 @@ spec: enabled: true #hostname: keydb auth: - password: ENC[AES256_GCM,data:zzfNo5u2u9WzKGilwlCCC/K6HW1IGrS0hyMW+po+w4qjQd+ZrIDbf6oXfrvFwK6pX74gjqiHsUU4/xweujksTw==,iv:JHc0D7NmK2fVSeXFd9fulazlaSv2hu6U/TUoV3MeiYM=,tag:GZVZ0Ugcsp6csen7aFCB1A==,type:str] + password: ENC[AES256_GCM,data:xAs/+cBWAhtiP4SZBFn4Ri8X0jxJoQgrsw4Zp4MliJbkpt7uHskYpKsm5qwpvJPAi0Yp0Dj6JvktXljeUcfeSA==,iv:vKm40OYLmUualVhs2OI1gvKDNlbRTqN+NADhUtS9wVU=,tag:phyqRPrpHo3xSQJzhTpiRw==,type:str] replicaCount: 1 sops: kms: [] @@ -164,14 +165,53 @@ sops: - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJYWcxUVcxK210WjBKU1pt - aWFGM0dzQlFtTWN3RkxSbGNCZVQ1alp5OWlFClhhMWlrUFV3YUFNOTlxZTZPMm1C - a0Q2TmZBNTJhc2VNS1VsdkFGVVFTTkkKLS0tIEpiQ05jTXlpVUtPb0F2bHFTQzZn - ZmcybjlPTmM0QU1mU25RN29scUNWQjQKn4caT12+T3u1SIDgxDD0JZZZc7Tecdvc - Xnv1X/X7SlcycE+ZxrCnAh5PbKU3eLNFRmZ0070H9Yqh+OMokXf6Qg== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqTlZFSW5NTmlsSnRlR1pN + blM2RWN3SGhBWnRIT1lNcVQ2SnpHZEVOMGg4CkZocUh3eDB4dzdXSVJyZlYvKzFt + N0VSUFpIQ21zWCtya0JYamo4a09KS28KLS0tIHNndnJSNVljaHlnTERnbVVxSC9C + aHhKamtXT1Vpb2V5VTN5ZDByVTlHdzgKZFwoWZiMA8m4/EsROS5Czpd2sqqFx/+E + aOHqzS6D0j2jhz6mPyQ9jnjUXqy2WJsjgINxgST9y1jk5IkJmxjcCA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-10-10T22:33:31Z" - mac: ENC[AES256_GCM,data:DwZmqHx5kkLbXfmtw/D2gnIX/WF4RB/rVodtFRoWvaW+S+KK4F9pEOMPxHgtyau56OEWzOfceBQXEidEqKe/SfuvQ5FfktejmTikj7/pgyXEhykCZq++UnPdeidKsuZAXDqEbqdPImXpHlvyD7EqcWqc9AhySdraw5+740iRAVE=,iv:lhd7o9o700+HFUiB9g6vX9C7P+VqUoEuRgdJjwqHnDE=,tag:ToWev6Ak25/Ug7Mg5eCD5Q==,type:str] + lastmodified: "2025-03-19T13:13:05Z" + mac: ENC[AES256_GCM,data:M/NesUN1qH4vfk86zEaZKqixDZcAlcBmuwkw9gg1XZoDGkX+xf5f/nDhMeyolrpZZcCT8h/LzdiYqQjjNsVx3CZpzcG50opnZA27xLy0JvnwelT/bAyF1JN9lorO5p+XIV3mml/ChfMzkaTYs4V1DuuMeWboKihNobC9NRUdn2U=,iv:+4dLDS4EB5ZKYezlYuUbSrVD4DOdHKBOJivVPtXxkQg=,tag:p8YVLETlYyBC6PzRY28pfg==,type:str] pgp: [] - encrypted_regex: ^(DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$ - version: 3.8.1 + encrypted_regex: ^(adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$ + version: 3.9.1 +--- +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: mastodon + namespace: mastodon +spec: + parentRefs: + - name: envoy-gateway + namespace: envoy-gateway + hostnames: + - mastodon.mtrnord.blog + rules: + - backendRefs: + - name: mastodon-web + port: 3000 + timeouts: + request: 240s + backendRequest: 0s +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqTlZFSW5NTmlsSnRlR1pN + blM2RWN3SGhBWnRIT1lNcVQ2SnpHZEVOMGg4CkZocUh3eDB4dzdXSVJyZlYvKzFt + N0VSUFpIQ21zWCtya0JYamo4a09KS28KLS0tIHNndnJSNVljaHlnTERnbVVxSC9C + aHhKamtXT1Vpb2V5VTN5ZDByVTlHdzgKZFwoWZiMA8m4/EsROS5Czpd2sqqFx/+E + aOHqzS6D0j2jhz6mPyQ9jnjUXqy2WJsjgINxgST9y1jk5IkJmxjcCA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-03-19T13:13:05Z" + mac: ENC[AES256_GCM,data:M/NesUN1qH4vfk86zEaZKqixDZcAlcBmuwkw9gg1XZoDGkX+xf5f/nDhMeyolrpZZcCT8h/LzdiYqQjjNsVx3CZpzcG50opnZA27xLy0JvnwelT/bAyF1JN9lorO5p+XIV3mml/ChfMzkaTYs4V1DuuMeWboKihNobC9NRUdn2U=,iv:+4dLDS4EB5ZKYezlYuUbSrVD4DOdHKBOJivVPtXxkQg=,tag:p8YVLETlYyBC6PzRY28pfg==,type:str] + pgp: [] + encrypted_regex: ^(adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$ + version: 3.9.1