fix(dns,k8s): add moritzgraf.de apex A record, modernize ingress, and resolve cluster alerts

- terraform: add ovh_domain_zone_record.moritzgraf_domain pointing to cluster IP
- k8s/web: modernize Ingress to networking.k8s.io/v1 with traefik class and auto-renew TLS certificate
- k8s/backup: set activeDeadlineSeconds and backoffLimit: 3 on gdrive-to-gphotos, clean dead pods
- k8s/openclaw: set failedJobsHistoryLimit: 1 on wiki backup cronjob and purge stale failed job
- k8s/coder: increase postgresql CPU limit to 500m to eliminate CFS CPU throttling
This commit is contained in:
Moritz Graf
2026-09-19 18:19:54 +02:00
parent 79fa817480
commit 18a7292844
7 changed files with 303 additions and 16 deletions
+2 -1
View File
@@ -25,4 +25,5 @@ spec:
configMap:
name: rclone-gdrive-config
restartPolicy: Never
backoffLimit: 100
activeDeadlineSeconds: 86400
backoffLimit: 3
Binary file not shown.
Binary file not shown.
+16 -13
View File
@@ -41,25 +41,28 @@ spec:
selector:
app: moritzgrafde
---
apiVersion: extensions/v1beta1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: moritzgrafde
namespace: web
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
ingressClassName: traefik
tls:
- hosts:
- "moritzgraf.de"
secretName: moritzgraf-de
- hosts:
- "moritzgraf.de"
secretName: moritzgraf-de
rules:
- host: moritzgraf.de
http:
paths:
- path: /
backend:
serviceName: moritzgrafde
servicePort: 80
- host: moritzgraf.de
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: moritzgrafde
port:
number: 80
+8
View File
@@ -115,6 +115,14 @@ resource "ovh_domain_zone_record" "haumdaucher_wildcard_domain" {
target = "136.243.23.215"
}
resource "ovh_domain_zone_record" "moritzgraf_domain" {
zone = "moritzgraf.de"
subdomain = ""
fieldtype = "A"
ttl = local.ttl
target = "136.243.23.215"
}
resource "ovh_domain_zone_record" "moritzgraf_wildcard_domain" {
zone = "moritzgraf.de"
subdomain = "*"
+23 -1
View File
@@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.14.3",
"serial": 403,
"serial": 405,
"lineage": "8aff5d23-05f6-10eb-0ae6-1084c787677e",
"outputs": {
"coder_oauth_client_secret": {
@@ -4242,6 +4242,28 @@
}
]
},
{
"mode": "managed",
"type": "ovh_domain_zone_record",
"name": "moritzgraf_domain",
"provider": "provider[\"registry.terraform.io/ovh/ovh\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"fieldtype": "A",
"id": "5436150587",
"subdomain": "",
"target": "136.243.23.215",
"ttl": 60,
"zone": "moritzgraf.de"
},
"sensitive_attributes": [],
"identity_schema_version": 0,
"private": "bnVsbA=="
}
]
},
{
"mode": "managed",
"type": "ovh_domain_zone_record",
+254 -1
View File
@@ -1,7 +1,7 @@
{
"version": 4,
"terraform_version": "1.14.3",
"serial": 394,
"serial": 403,
"lineage": "8aff5d23-05f6-10eb-0ae6-1084c787677e",
"outputs": {
"coder_oauth_client_secret": {
@@ -38,6 +38,16 @@
"value": "openclaw-calendar@octobot-486812.iam.gserviceaccount.com",
"type": "string"
},
"openclaw_google_maps_api_key": {
"value": "AIzaSyDiV8UJ6Lytr0rwuGZcObhjFiSY5Rvm03c",
"type": "string",
"sensitive": true
},
"openclaw_youtube_api_key": {
"value": "AIzaSyA3tUGk95e24p5pgHuniXkbqDCd5tVITOk",
"type": "string",
"sensitive": true
},
"velero_backup_sa_email": {
"value": "velero-backup-sa@velero-backup-dc8c8f74.iam.gserviceaccount.com",
"type": "string"
@@ -2704,6 +2714,117 @@
}
]
},
{
"mode": "managed",
"type": "google_apikeys_key",
"name": "openclaw_google_maps_key",
"provider": "provider[\"registry.terraform.io/hashicorp/google\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"display_name": "OpenClaw Google Maps API Key",
"id": "projects/octobot-486812/locations/global/keys/openclaw-google-maps-key",
"key_string": "AIzaSyDiV8UJ6Lytr0rwuGZcObhjFiSY5Rvm03c",
"name": "openclaw-google-maps-key",
"project": "octobot-486812",
"restrictions": [
{
"android_key_restrictions": [],
"api_targets": [
{
"methods": null,
"service": "places.googleapis.com"
},
{
"methods": null,
"service": "routes.googleapis.com"
},
{
"methods": null,
"service": "geocoding-backend.googleapis.com"
},
{
"methods": null,
"service": "static-maps-backend.googleapis.com"
}
],
"browser_key_restrictions": [],
"ios_key_restrictions": [],
"server_key_restrictions": []
}
],
"timeouts": null,
"uid": "45904264-9b7f-4004-b46a-df8cf2ee87fa"
},
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "key_string"
}
]
],
"identity_schema_version": 0,
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19",
"dependencies": [
"google_project_service.apikeys_api",
"google_project_service.geocoding_api",
"google_project_service.places_api",
"google_project_service.routes_api",
"google_project_service.static_maps_api"
]
}
]
},
{
"mode": "managed",
"type": "google_apikeys_key",
"name": "openclaw_youtube_key",
"provider": "provider[\"registry.terraform.io/hashicorp/google\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"display_name": "OpenClaw YouTube API Key",
"id": "projects/octobot-486812/locations/global/keys/openclaw-youtube-key",
"key_string": "AIzaSyA3tUGk95e24p5pgHuniXkbqDCd5tVITOk",
"name": "openclaw-youtube-key",
"project": "octobot-486812",
"restrictions": [
{
"android_key_restrictions": [],
"api_targets": [
{
"methods": null,
"service": "youtube.googleapis.com"
}
],
"browser_key_restrictions": [],
"ios_key_restrictions": [],
"server_key_restrictions": []
}
],
"timeouts": null,
"uid": "698b6db2-22a7-4caa-a728-10654289afa0"
},
"sensitive_attributes": [
[
{
"type": "get_attr",
"value": "key_string"
}
]
],
"identity_schema_version": 0,
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19",
"dependencies": [
"google_project_service.apikeys_api",
"google_project_service.youtube_api"
]
}
]
},
{
"mode": "managed",
"type": "google_project",
@@ -2802,6 +2923,28 @@
}
]
},
{
"mode": "managed",
"type": "google_project_service",
"name": "apikeys_api",
"provider": "provider[\"registry.terraform.io/hashicorp/google\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"disable_dependent_services": null,
"disable_on_destroy": false,
"id": "octobot-486812/apikeys.googleapis.com",
"project": "octobot-486812",
"service": "apikeys.googleapis.com",
"timeouts": null
},
"sensitive_attributes": [],
"identity_schema_version": 0,
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0="
}
]
},
{
"mode": "managed",
"type": "google_project_service",
@@ -2850,6 +2993,28 @@
}
]
},
{
"mode": "managed",
"type": "google_project_service",
"name": "geocoding_api",
"provider": "provider[\"registry.terraform.io/hashicorp/google\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"disable_dependent_services": null,
"disable_on_destroy": false,
"id": "octobot-486812/geocoding-backend.googleapis.com",
"project": "octobot-486812",
"service": "geocoding-backend.googleapis.com",
"timeouts": null
},
"sensitive_attributes": [],
"identity_schema_version": 0,
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0="
}
]
},
{
"mode": "managed",
"type": "google_project_service",
@@ -2872,6 +3037,94 @@
}
]
},
{
"mode": "managed",
"type": "google_project_service",
"name": "places_api",
"provider": "provider[\"registry.terraform.io/hashicorp/google\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"disable_dependent_services": null,
"disable_on_destroy": false,
"id": "octobot-486812/places.googleapis.com",
"project": "octobot-486812",
"service": "places.googleapis.com",
"timeouts": null
},
"sensitive_attributes": [],
"identity_schema_version": 0,
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0="
}
]
},
{
"mode": "managed",
"type": "google_project_service",
"name": "routes_api",
"provider": "provider[\"registry.terraform.io/hashicorp/google\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"disable_dependent_services": null,
"disable_on_destroy": false,
"id": "octobot-486812/routes.googleapis.com",
"project": "octobot-486812",
"service": "routes.googleapis.com",
"timeouts": null
},
"sensitive_attributes": [],
"identity_schema_version": 0,
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0="
}
]
},
{
"mode": "managed",
"type": "google_project_service",
"name": "static_maps_api",
"provider": "provider[\"registry.terraform.io/hashicorp/google\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"disable_dependent_services": null,
"disable_on_destroy": false,
"id": "octobot-486812/static-maps-backend.googleapis.com",
"project": "octobot-486812",
"service": "static-maps-backend.googleapis.com",
"timeouts": null
},
"sensitive_attributes": [],
"identity_schema_version": 0,
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0="
}
]
},
{
"mode": "managed",
"type": "google_project_service",
"name": "youtube_api",
"provider": "provider[\"registry.terraform.io/hashicorp/google\"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"disable_dependent_services": null,
"disable_on_destroy": false,
"id": "octobot-486812/youtube.googleapis.com",
"project": "octobot-486812",
"service": "youtube.googleapis.com",
"timeouts": null
},
"sensitive_attributes": [],
"identity_schema_version": 0,
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInJlYWQiOjYwMDAwMDAwMDAwMCwidXBkYXRlIjoxMjAwMDAwMDAwMDAwfX0="
}
]
},
{
"mode": "managed",
"type": "google_service_account",