mirror of
https://github.com/vhaudiquet/homeprod.git
synced 2026-07-27 08:00:46 +00:00
Compare commits
1 Commits
main
..
68f8e61856
| Author | SHA1 | Date | |
|---|---|---|---|
| 68f8e61856 |
@@ -12,6 +12,7 @@ updates:
|
|||||||
- "/docker/home/node-red"
|
- "/docker/home/node-red"
|
||||||
- "/docker/home/zigbee2mqtt"
|
- "/docker/home/zigbee2mqtt"
|
||||||
- "/docker/infrastructure/mail/roundcube"
|
- "/docker/infrastructure/mail/roundcube"
|
||||||
|
- "/docker/infrastructure/mail/stalwart"
|
||||||
- "/docker/infrastructure/network/traefik"
|
- "/docker/infrastructure/network/traefik"
|
||||||
- "/docker/infrastructure/squid"
|
- "/docker/infrastructure/squid"
|
||||||
- "/docker/infrastructure/sshportal"
|
- "/docker/infrastructure/sshportal"
|
||||||
@@ -43,7 +44,7 @@ updates:
|
|||||||
directories:
|
directories:
|
||||||
- "/kubernetes/code/gitea"
|
- "/kubernetes/code/gitea"
|
||||||
- "/kubernetes/code/harbor"
|
- "/kubernetes/code/harbor"
|
||||||
- "/kubernetes/home/home-assistant"
|
- "/kubernetes/home/home-assisant"
|
||||||
- "/kubernetes/home/zigbee2mqtt"
|
- "/kubernetes/home/zigbee2mqtt"
|
||||||
- "/kubernetes/infrastructure/authentik"
|
- "/kubernetes/infrastructure/authentik"
|
||||||
- "/kubernetes/infrastructure/mail/stalwart"
|
- "/kubernetes/infrastructure/mail/stalwart"
|
||||||
@@ -55,11 +56,9 @@ updates:
|
|||||||
- "/kubernetes/system/blocky"
|
- "/kubernetes/system/blocky"
|
||||||
- "/kubernetes/system/caddy"
|
- "/kubernetes/system/caddy"
|
||||||
- "/kubernetes/system/cert-manager"
|
- "/kubernetes/system/cert-manager"
|
||||||
- "/kubernetes/system/cert-manager-webhook-ovh"
|
|
||||||
- "/kubernetes/system/coredns"
|
- "/kubernetes/system/coredns"
|
||||||
- "/kubernetes/system/csi-driver-nfs"
|
- "/kubernetes/system/csi-driver-nfs"
|
||||||
- "/kubernetes/system/external-dns"
|
- "/kubernetes/system/external-dns"
|
||||||
- "/kubernetes/system/longhorn"
|
|
||||||
- "/kubernetes/system/traefik"
|
- "/kubernetes/system/traefik"
|
||||||
- "/kubernetes/tools/dashy"
|
- "/kubernetes/tools/dashy"
|
||||||
- "/kubernetes/tools/glance"
|
- "/kubernetes/tools/glance"
|
||||||
|
|||||||
@@ -9,6 +9,3 @@ terraform.tfstate.backup
|
|||||||
kubeconfig
|
kubeconfig
|
||||||
talosconfig
|
talosconfig
|
||||||
|
|
||||||
# Ignore rendered Talos machine configs (may contain cluster secrets)
|
|
||||||
p330.yaml
|
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,11 @@ roundcube:
|
|||||||
branch: main
|
branch: main
|
||||||
compose_file: docker/infrastructure/mail/roundcube/docker-compose.yml
|
compose_file: docker/infrastructure/mail/roundcube/docker-compose.yml
|
||||||
|
|
||||||
|
stalwart:
|
||||||
|
repo: homeprod
|
||||||
|
branch: main
|
||||||
|
compose_file: docker/infrastructure/mail/stalwart/docker-compose.yml
|
||||||
|
|
||||||
traefik:
|
traefik:
|
||||||
repo: homeprod
|
repo: homeprod
|
||||||
branch: main
|
branch: main
|
||||||
|
|||||||
@@ -77,14 +77,70 @@ _25._tcp:
|
|||||||
ttl: 300
|
ttl: 300
|
||||||
type: TLSA
|
type: TLSA
|
||||||
values:
|
values:
|
||||||
- certificate_association_data: CC6230E3A88A173D11C7F614ACFB4FE7B57A01F649ED1ADEE5F953213D4C6607
|
- certificate_association_data: 5dfdb3cf31b26f23d87c09f3a0cef642f64069a9fb7cfe29270bb5dc0f1e16bb
|
||||||
certificate_usage: 3
|
certificate_usage: 2
|
||||||
matching_type: 1
|
matching_type: 1
|
||||||
selector: 1
|
selector: 0
|
||||||
- certificate_association_data: 731B7CD6FA08C4A56060172BF8E30563919139F16265A38EC35B2A1F41CE2B6B
|
- certificate_association_data: 76e9e288aafc0e37f4390cbf946aad997d5c1c901b3ce513d3d8fadbabe2ab85
|
||||||
certificate_usage: 3
|
certificate_usage: 2
|
||||||
matching_type: 1
|
matching_type: 1
|
||||||
selector: 0
|
selector: 0
|
||||||
|
- certificate_association_data: 4e32b7ee52c9bd2a15b2df3cae5e3b060d737d71faaaac25336c5f193cbdb52ed2fdf38b29aea9fb97f59c8f86e75b5c364309a232623a99e638116ed66063fd
|
||||||
|
certificate_usage: 2
|
||||||
|
matching_type: 2
|
||||||
|
selector: 0
|
||||||
|
- certificate_association_data: afab698cbbbf892ebb555e09175056c1d4630fe7c350f44dcc6e71843d3b290df00d30ab4e356b630c69169d7633788338922fb637cf5b9f7be20a413eeaa518
|
||||||
|
certificate_usage: 2
|
||||||
|
matching_type: 2
|
||||||
|
selector: 0
|
||||||
|
- certificate_association_data: 3586d4ecf070578cbd27aedce20b964e48bc149faeb9dad72f46b857869172b8
|
||||||
|
certificate_usage: 2
|
||||||
|
matching_type: 1
|
||||||
|
selector: 1
|
||||||
|
- certificate_association_data: d016e1fe311948aca64f2de44ce86c9a51ca041df6103bb52a88eb3f761f57d7
|
||||||
|
certificate_usage: 2
|
||||||
|
matching_type: 1
|
||||||
|
selector: 1
|
||||||
|
- certificate_association_data: a1ef14fea3ca15a552d42665d2fe685672cfdd903de4b370b0d7d87c6d31b5df07142483f36e0e15e16b58f9ba1cbdeeebd4bcb8d74ab7ea32a087db2105f402
|
||||||
|
certificate_usage: 2
|
||||||
|
matching_type: 2
|
||||||
|
selector: 1
|
||||||
|
- certificate_association_data: f8a2b4e23e82a4494e9998fcc4242bef1277656a118beede55ddfadcb82e20c5dc036dcb3b6c48d2ce04e362a9f477c82ad5a557b06b6f33b45ca6662b37c1c9
|
||||||
|
certificate_usage: 2
|
||||||
|
matching_type: 2
|
||||||
|
selector: 1
|
||||||
|
- certificate_association_data: a69ec216999308f0ee575cdef98d6edabed8a6b4d2328e050ac9c7fa06404ad9
|
||||||
|
certificate_usage: 3
|
||||||
|
matching_type: 1
|
||||||
|
selector: 0
|
||||||
|
- certificate_association_data: ccae2719a01f7a6d17d939d8ec13324b7bdb0921ea55d5bfc2f226e54b8c15dd
|
||||||
|
certificate_usage: 3
|
||||||
|
matching_type: 1
|
||||||
|
selector: 0
|
||||||
|
- certificate_association_data: 7cd33aa6bafc850cc89d008fbd0a5cea942c6a573d605984f174fbe7360abbf71fc157ffe0324e380a8dfea62047b9aa140d5899188402ac677c29f96cc1118e
|
||||||
|
certificate_usage: 3
|
||||||
|
matching_type: 2
|
||||||
|
selector: 0
|
||||||
|
- certificate_association_data: 8149784990ba7e448295f9c4eb22abcaa4ecefa1b44f1a71ea13d6827d7068c6469cf5fb08a8ae772c1ef59cddbcfd84d744713c48e985136a234b494511fd03
|
||||||
|
certificate_usage: 3
|
||||||
|
matching_type: 2
|
||||||
|
selector: 0
|
||||||
|
- certificate_association_data: 08f3ffd1b6027093c136f6bb5bc1645a8db31cf2a4392b779c2a2045e152b8b8
|
||||||
|
certificate_usage: 3
|
||||||
|
matching_type: 1
|
||||||
|
selector: 1
|
||||||
|
- certificate_association_data: 12b3946513281ab20ebee4d38d2e139cac1688420015db90ee8e932fe153bc89
|
||||||
|
certificate_usage: 3
|
||||||
|
matching_type: 1
|
||||||
|
selector: 1
|
||||||
|
- certificate_association_data: 7b60aee1a230de2c32c0252540c606897ad66cbabc7331c2d40b7dd0e3249e0cc53e145605e610d8dc2f41dd16e12f51dca4641d13e748553bd0f596455dae77
|
||||||
|
certificate_usage: 3
|
||||||
|
matching_type: 2
|
||||||
|
selector: 1
|
||||||
|
- certificate_association_data: 8cee22274c3f828eda9d18c9954ed0a3ad5172e71b7852c780384bf3828ff1bb26fca899395e99e4d191c2d1e0a55404f97e76bb7d4ad8dff71c6c271d34de49
|
||||||
|
certificate_usage: 3
|
||||||
|
matching_type: 2
|
||||||
|
selector: 1
|
||||||
_caldavs._tcp:
|
_caldavs._tcp:
|
||||||
octodns:
|
octodns:
|
||||||
cloudflare:
|
cloudflare:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
esphome:
|
esphome:
|
||||||
image: ghcr.io/esphome/esphome:2026.6.4
|
image: ghcr.io/esphome/esphome:2026.6.3
|
||||||
ports:
|
ports:
|
||||||
- "6052"
|
- "6052"
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ services:
|
|||||||
zigbee2mqtt:
|
zigbee2mqtt:
|
||||||
container_name: zigbee2mqtt
|
container_name: zigbee2mqtt
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
image: koenkk/zigbee2mqtt:2.12.1
|
image: koenkk/zigbee2mqtt:2.12.0
|
||||||
networks:
|
networks:
|
||||||
- default
|
- default
|
||||||
- proxy
|
- proxy
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
roundcube:
|
roundcube:
|
||||||
image: roundcube/roundcubemail:1.7.2-apache
|
image: roundcube/roundcubemail:1.7.1-apache
|
||||||
container_name: roundcube
|
container_name: roundcube
|
||||||
networks:
|
networks:
|
||||||
- default
|
- default
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
services:
|
||||||
|
stalwart:
|
||||||
|
image: stalwartlabs/stalwart:v0.15.5
|
||||||
|
container_name: stalwart
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
- proxy
|
||||||
|
volumes:
|
||||||
|
- stalwart_data:/opt/stalwart
|
||||||
|
ports:
|
||||||
|
- target: 25
|
||||||
|
published: 25
|
||||||
|
mode: host
|
||||||
|
- target: 465
|
||||||
|
published: 465
|
||||||
|
mode: host
|
||||||
|
- target: 993
|
||||||
|
published: 993
|
||||||
|
mode: host
|
||||||
|
- target: 587
|
||||||
|
published: 587
|
||||||
|
mode: host
|
||||||
|
- "8080"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.stalwart.rule=Host(`mail.vhaudiquet.fr`)"
|
||||||
|
- "traefik.http.services.stalwart.loadbalancer.server.port=8080"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
stalwart_data:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: 'none'
|
||||||
|
o: 'bind'
|
||||||
|
device: '/app/stalwart/data'
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
name: proxy
|
||||||
|
external: true
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
jackett:
|
jackett:
|
||||||
container_name: jackett
|
container_name: jackett
|
||||||
image: ghcr.io/hotio/jackett:release-v0.24.2184
|
image: ghcr.io/hotio/jackett:release-v0.24.2142
|
||||||
ports:
|
ports:
|
||||||
- "9117"
|
- "9117"
|
||||||
networks:
|
networks:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
jellyfin:
|
jellyfin:
|
||||||
image: jellyfin/jellyfin:2026070606
|
image: jellyfin/jellyfin:2026062906
|
||||||
container_name: jellyfin
|
container_name: jellyfin
|
||||||
networks:
|
networks:
|
||||||
- default
|
- default
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
wizarr:
|
wizarr:
|
||||||
container_name: wizarr
|
container_name: wizarr
|
||||||
image: ghcr.io/wizarrrr/wizarr:v2026.7.1
|
image: ghcr.io/wizarrrr/wizarr:v2026.4.0
|
||||||
networks:
|
networks:
|
||||||
- default
|
- default
|
||||||
- proxy
|
- proxy
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ services:
|
|||||||
- archivist-redis
|
- archivist-redis
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.routers.tubearchivist.rule=Host(`tubearchivist.lan`)"
|
- "traefik.http.routers.tubearchivist.rule=Host(`tubearchivist.local`)"
|
||||||
- "traefik.http.routers.tubearchivist.middlewares=tubearchivist-headers"
|
- "traefik.http.routers.tubearchivist.middlewares=tubearchivist-headers"
|
||||||
- "traefik.http.middlewares.tubearchivist-headers.headers.accesscontrolalloworiginlist=*"
|
- "traefik.http.middlewares.tubearchivist-headers.headers.accesscontrolalloworiginlist=*"
|
||||||
- "traefik.http.middlewares.tubearchivist-headers.headers.accesscontrolallowmethods=GET,OPTIONS,PUT"
|
- "traefik.http.middlewares.tubearchivist-headers.headers.accesscontrolallowmethods=GET,OPTIONS,PUT"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ services:
|
|||||||
|
|
||||||
web_recipes:
|
web_recipes:
|
||||||
restart: always
|
restart: always
|
||||||
image: vabene1111/recipes:2.6.13
|
image: vabene1111/recipes:2.6.12
|
||||||
networks:
|
networks:
|
||||||
- default
|
- default
|
||||||
- proxy
|
- proxy
|
||||||
|
|||||||
@@ -1,195 +0,0 @@
|
|||||||
# Talos node for the P330 — joins the r740 "kube" cluster.
|
|
||||||
terraform {
|
|
||||||
required_providers {
|
|
||||||
talos = {
|
|
||||||
source = "siderolabs/talos"
|
|
||||||
version = "0.9.0"
|
|
||||||
}
|
|
||||||
null = {
|
|
||||||
source = "hashicorp/null"
|
|
||||||
version = "3.2.3"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Read the r740 kube module state to reuse the cluster secrets & endpoint.
|
|
||||||
# The r740 module exposes: client_configuration, machine_secrets, cluster_name,
|
|
||||||
# cluster_endpoint, kube_host.
|
|
||||||
data "terraform_remote_state" "r740_kube" {
|
|
||||||
backend = var.r740_backend
|
|
||||||
|
|
||||||
config = var.r740_backend == "local" ? {
|
|
||||||
path = "${var.r740_state_path}/terraform.tfstate"
|
|
||||||
} : var.r740_backend_config
|
|
||||||
}
|
|
||||||
|
|
||||||
locals {
|
|
||||||
cluster_name = data.terraform_remote_state.r740_kube.outputs.cluster_name
|
|
||||||
cluster_endpoint = data.terraform_remote_state.r740_kube.outputs.cluster_endpoint
|
|
||||||
machine_secrets = data.terraform_remote_state.r740_kube.outputs.machine_secrets
|
|
||||||
client_config = data.terraform_remote_state.r740_kube.outputs.client_configuration
|
|
||||||
|
|
||||||
# kubeconfig produced by the r740 kube module — used to wait for the node and
|
|
||||||
# apply labels/taints. There is no in-tree kubernetes provider here on
|
|
||||||
# purpose: managing a `kubernetes_node` resource conflicts with the node
|
|
||||||
# object that kubelet itself creates, so we use a null_resource with kubectl
|
|
||||||
# to wait + label + taint idempotently.
|
|
||||||
kubeconfig_path = "${var.r740_state_path}/kubeconfig"
|
|
||||||
|
|
||||||
# Network config: static if node_subnet is provided, otherwise Talos DHCPs.
|
|
||||||
static_network = var.node_subnet == null ? {} : {
|
|
||||||
interfaces = [{
|
|
||||||
interface = var.network_interface
|
|
||||||
addresses = [var.node_subnet]
|
|
||||||
routes = var.node_gateway == null ? [] : [{ gateway = var.node_gateway }]
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
|
|
||||||
network_patch = {
|
|
||||||
nameservers = var.nameservers
|
|
||||||
}
|
|
||||||
network_patch_merged = merge(local.network_patch, local.static_network)
|
|
||||||
|
|
||||||
machine_patch = {
|
|
||||||
install = {
|
|
||||||
image = var.installer_image
|
|
||||||
disk = var.install_disk
|
|
||||||
}
|
|
||||||
network = merge(local.network_patch_merged, {
|
|
||||||
# Pin the Kubernetes node name. Talos otherwise auto-generates a hostname
|
|
||||||
# (e.g. "talos-8ec-vd1"), so the node registers with that random name
|
|
||||||
# instead of var.p330_node_name — and our label/taint null_resource waits
|
|
||||||
# for the wrong node. Setting machine.network.hostname fixes the node name.
|
|
||||||
hostname = var.p330_node_name
|
|
||||||
})
|
|
||||||
# Kernel modules required by Longhorn (iSCSI + ext4) — must match the
|
|
||||||
# control-plane nodes so Longhorn can schedule replicas on the failover node.
|
|
||||||
kernel = {
|
|
||||||
modules = [
|
|
||||||
{ name = "iscsi_tcp" },
|
|
||||||
{ name = "libiscsi" },
|
|
||||||
{ name = "scsi_transport_iscsi" },
|
|
||||||
{ name = "ext4" },
|
|
||||||
]
|
|
||||||
}
|
|
||||||
sysctls = {
|
|
||||||
"fs.inotify.max_user_instances" = "1024"
|
|
||||||
"fs.inotify.max_user_watches" = "1048576"
|
|
||||||
}
|
|
||||||
kubelet = {
|
|
||||||
# Keep the failover node from accumulating non-essential DaemonSet pods
|
|
||||||
# via the regular scheduler; the taint does the heavy lifting, this is
|
|
||||||
# belt-and-braces.
|
|
||||||
extraArgs = {
|
|
||||||
"register-with-taints" = "${var.failover_taint_key}=${var.failover_taint_value}:${var.failover_taint_effect}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Control-plane machine configuration. machine_type = "controlplane" makes
|
|
||||||
# Talos generate a join config that runs the apiserver/controller-manager/
|
|
||||||
# scheduler AND joins the existing etcd cluster as a new member (the cluster
|
|
||||||
# was already bootstrapped by the r740 module's talos_machine_bootstrap).
|
|
||||||
data "talos_machine_configuration" "p330" {
|
|
||||||
cluster_name = local.cluster_name
|
|
||||||
machine_type = "controlplane"
|
|
||||||
cluster_endpoint = local.cluster_endpoint
|
|
||||||
machine_secrets = local.machine_secrets
|
|
||||||
config_patches = [
|
|
||||||
yamlencode({
|
|
||||||
machine = local.machine_patch
|
|
||||||
})
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
# Rendered config is written to disk so it can also be applied manually with
|
|
||||||
# `talosctl apply-config --nodes <p330_host> --file p330.yaml` if needed.
|
|
||||||
resource "local_file" "p330_machine_config" {
|
|
||||||
filename = "${path.module}/p330.yaml"
|
|
||||||
content = data.talos_machine_configuration.p330.machine_configuration
|
|
||||||
}
|
|
||||||
|
|
||||||
# Apply the machine config to the running (maintenance-mode) node over the
|
|
||||||
# Talos API. Because the config patch contains a `machine.install` block, when
|
|
||||||
# Talos receives this config on a node booted from the USB (maintenance) image
|
|
||||||
# it installs itself to install.disk and reboots into the installed system.
|
|
||||||
# For a controlplane node it then joins the existing etcd cluster as a new
|
|
||||||
# member and runs the control-plane components; for a worker it just registers
|
|
||||||
# via kubelet.
|
|
||||||
resource "talos_machine_configuration_apply" "p330" {
|
|
||||||
client_configuration = local.client_config
|
|
||||||
machine_configuration_input = data.talos_machine_configuration.p330.machine_configuration
|
|
||||||
node = var.p330_host
|
|
||||||
depends_on = [local_file.p330_machine_config]
|
|
||||||
}
|
|
||||||
|
|
||||||
# Emit a talosconfig scoped to this node for ad-hoc `talosctl` use.
|
|
||||||
data "talos_client_configuration" "p330" {
|
|
||||||
cluster_name = local.cluster_name
|
|
||||||
client_configuration = local.client_config
|
|
||||||
nodes = [var.p330_host]
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "local_file" "talosconfig" {
|
|
||||||
content = data.talos_client_configuration.p330.talos_config
|
|
||||||
filename = "${path.module}/talosconfig"
|
|
||||||
depends_on = [data.talos_client_configuration.p330]
|
|
||||||
}
|
|
||||||
|
|
||||||
# Wait for the node to register with Kubernetes (kubelet creates the Node
|
|
||||||
# object after Talos installs and reboots), then label it and (re)apply the
|
|
||||||
# failover taint. This is idempotent: kubectl exits 0 if the label/taint already
|
|
||||||
# exists. The taint is also set via kubelet `register-with-taints`, so this
|
|
||||||
# null_resource is a safety net for manual edits / drift.
|
|
||||||
resource "null_resource" "p330_node_label_and_taint" {
|
|
||||||
triggers = {
|
|
||||||
node = var.p330_node_name
|
|
||||||
key = var.failover_taint_key
|
|
||||||
value = var.failover_taint_value
|
|
||||||
effect = var.failover_taint_effect
|
|
||||||
kubeconfig = local.kubeconfig_path
|
|
||||||
}
|
|
||||||
|
|
||||||
provisioner "local-exec" {
|
|
||||||
# Wait for the node to show up, then label + taint. The wait loop is bounded
|
|
||||||
# by kubectl --timeout; tune it via TF_LOG / re-run if the node is slow to
|
|
||||||
# join (a controlplane node must first complete the etcd join handshake).
|
|
||||||
command = <<-EOT
|
|
||||||
set -euo pipefail
|
|
||||||
KUBECONFIG="${local.kubeconfig_path}"
|
|
||||||
export KUBECONFIG
|
|
||||||
NODE="${var.p330_node_name}"
|
|
||||||
|
|
||||||
echo "Waiting for node $NODE to be registered (kubelet creates the Node object once Talos has installed, rebooted and joined etcd)..."
|
|
||||||
# kubectl wait --for=condition=Ready fails instantly with NotFound if the
|
|
||||||
# node object doesn't exist yet, so poll for existence first.
|
|
||||||
# /bin/sh (dash) has no $SECONDS, so count iterations with a bounded loop.
|
|
||||||
tries=240 # 240 * 5s = 20 minutes max
|
|
||||||
until kubectl get node "$NODE" >/dev/null 2>&1; do
|
|
||||||
tries=$((tries - 1))
|
|
||||||
if [ "$tries" -le 0 ]; then
|
|
||||||
echo "Timed out waiting for node $NODE to register." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
echo "Node $NODE registered. Waiting for it to become Ready..."
|
|
||||||
|
|
||||||
# Now wait for Ready (a controlplane node needs etcd joined + apiserver up).
|
|
||||||
kubectl wait --for=condition=Ready "node/$NODE" --timeout=20m || \
|
|
||||||
kubectl wait --for=jsonpath='{.status.conditions[?(@.reason=="KubeletReady")].status}'=True "node/$NODE" --timeout=20m
|
|
||||||
|
|
||||||
# Failover marker + taint (applied to both controlplane and worker nodes).
|
|
||||||
kubectl label --overwrite node "$NODE" homeprod.io/failover=true
|
|
||||||
|
|
||||||
# Apply the taint idempotently (kubectl taint --overwrite is a no-op if it exists).
|
|
||||||
kubectl taint --overwrite node "$NODE" \
|
|
||||||
"${var.failover_taint_key}=${var.failover_taint_value}:${var.failover_taint_effect}"
|
|
||||||
|
|
||||||
echo "Node $NODE ready, labeled and tainted for failover-only scheduling."
|
|
||||||
EOT
|
|
||||||
}
|
|
||||||
|
|
||||||
depends_on = [talos_machine_configuration_apply.p330]
|
|
||||||
}
|
|
||||||
@@ -1,118 +0,0 @@
|
|||||||
# Variables for the P330 Talos worker node that joins the r740 cluster.
|
|
||||||
|
|
||||||
variable "p330_host" {
|
|
||||||
description = "Reachable IP/hostname of the P330 Talos node (for Talos API access)."
|
|
||||||
type = string
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "p330_node_name" {
|
|
||||||
description = "Kubernetes/Talos node name for the P330 (e.g. p330)."
|
|
||||||
type = string
|
|
||||||
default = "p330"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "r740_state_path" {
|
|
||||||
description = <<EOT
|
|
||||||
Path to the Terraform state of the r740 kube module, used by terraform_remote_state
|
|
||||||
to read the cluster secrets and endpoint so this node can join the existing cluster.
|
|
||||||
Path is resolved by terraform_remote_state relative to the working directory where
|
|
||||||
terraform runs (this module dir). The default points two levels up to the repo
|
|
||||||
root and back down to the r740 kube module.
|
|
||||||
EOT
|
|
||||||
type = string
|
|
||||||
default = "../../r740/kube"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "r740_backend" {
|
|
||||||
description = <<EOT
|
|
||||||
Terraform backend type used by the r740 kube module.
|
|
||||||
Set to "local" (default) when r740 uses a local tfstate file in its own directory,
|
|
||||||
or the matching remote backend name ("s3", "remote", ...) if the r740 module uses
|
|
||||||
a configured backend.
|
|
||||||
EOT
|
|
||||||
type = string
|
|
||||||
default = "local"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "r740_backend_config" {
|
|
||||||
description = <<EOT
|
|
||||||
Backend configuration map passed to terraform_remote_state when r740_backend is
|
|
||||||
not "local". For a local backend this is ignored.
|
|
||||||
EOT
|
|
||||||
type = map(string)
|
|
||||||
default = {}
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "installer_image" {
|
|
||||||
description = <<EOT
|
|
||||||
Talos installer image to use on the P330 (bare metal).
|
|
||||||
Must be a **metal** Image Factory build that includes ixgbe.allow_unsupported_sfp=1
|
|
||||||
in the kernel command line (sd-boot/UKI ignores machine.install.extraKernelArgs, so
|
|
||||||
the param must be baked into the image). The default is a custom factory build
|
|
||||||
(a18165114...).
|
|
||||||
EOT
|
|
||||||
type = string
|
|
||||||
default = "factory.talos.dev/installer/a18165114f80c28601d05bc4ff1f6ea6d6b214882c5b9af7928aaf4d09741beb:v1.13.6"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "install_disk" {
|
|
||||||
description = "Block device path to install Talos on (e.g. /dev/sda, /dev/nvme0n1)."
|
|
||||||
type = string
|
|
||||||
default = "/dev/nvme0n1"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "node_subnet" {
|
|
||||||
description = <<EOT
|
|
||||||
Static IPv4 address in CIDR notation for the P330 node (e.g. 10.1.2.132/24).
|
|
||||||
Set to null to use DHCP. A static address is recommended for a failover node so
|
|
||||||
DNS/affinity rules stay stable.
|
|
||||||
EOT
|
|
||||||
type = string
|
|
||||||
default = "10.1.2.132/24"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "node_gateway" {
|
|
||||||
description = "IPv4 gateway for the P330 node. Ignored when node_subnet is null."
|
|
||||||
type = string
|
|
||||||
default = "10.1.2.1"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "network_interface" {
|
|
||||||
description = <<EOT
|
|
||||||
Primary network interface name on the P330. Defaults to enp3s0f1 (the 10G Intel
|
|
||||||
X520 NIC), which must be on the same L2/subnet as the r740 control plane so etcd
|
|
||||||
peer traffic (TLS-verified against the r740's etcd cert SANs) doesn't cross a
|
|
||||||
router. eno1 (1G) is left unconfigured.
|
|
||||||
EOT
|
|
||||||
type = string
|
|
||||||
default = "enp3s0f1"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "nameservers" {
|
|
||||||
description = "DNS nameservers configured on the node (must work independently of kube)."
|
|
||||||
type = list(string)
|
|
||||||
default = ["10.1.2.148", "1.1.1.1"]
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "failover_taint_key" {
|
|
||||||
description = "Taint key applied to the node to reserve it for failover workloads."
|
|
||||||
type = string
|
|
||||||
default = "dedicated"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "failover_taint_value" {
|
|
||||||
description = "Taint value applied to the node."
|
|
||||||
type = string
|
|
||||||
default = "failover"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "failover_taint_effect" {
|
|
||||||
description = "Taint effect applied to the node (NoSchedule / NoExecute)."
|
|
||||||
type = string
|
|
||||||
default = "NoSchedule"
|
|
||||||
|
|
||||||
validation {
|
|
||||||
condition = contains(["NoSchedule", "PreferNoSchedule", "NoExecute"], var.failover_taint_effect)
|
|
||||||
error_message = "failover_taint_effect must be NoSchedule, PreferNoSchedule or NoExecute."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+1
-52
@@ -40,9 +40,7 @@ data "talos_machine_configuration" "kube" {
|
|||||||
yamlencode({
|
yamlencode({
|
||||||
machine = {
|
machine = {
|
||||||
install = {
|
install = {
|
||||||
# Image Factory image with iSCSI extension for Longhorn.
|
image = "factory.talos.dev/installer/ce4c980550dd2ab1b17bbf2b08801c7eb59418eafe8f279833297925d67c7515:v1.11.5"
|
||||||
# Generated at https://factory.talos.dev — siderolabs/iscsi-tools + qemu-guest-agent
|
|
||||||
image = "factory.talos.dev/installer/dc7b152cb3ea99b821fcb7340ce7168313ce393d663740b791c36f6e95fc8586:v1.13.6"
|
|
||||||
}
|
}
|
||||||
network = {
|
network = {
|
||||||
nameservers = [
|
nameservers = [
|
||||||
@@ -55,28 +53,6 @@ data "talos_machine_configuration" "kube" {
|
|||||||
certSANs = [
|
certSANs = [
|
||||||
"${var.kube_host}", "${var.kube_hostname}"
|
"${var.kube_host}", "${var.kube_hostname}"
|
||||||
]
|
]
|
||||||
# Kernel modules required by Longhorn (iSCSI + ext4)
|
|
||||||
kernel = {
|
|
||||||
modules = [
|
|
||||||
{
|
|
||||||
name = "iscsi_tcp"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name = "libiscsi"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name = "scsi_transport_iscsi"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name = "ext4"
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
# Sysctls for Longhorn
|
|
||||||
sysctls = {
|
|
||||||
"fs.inotify.max_user_instances" = "1024"
|
|
||||||
"fs.inotify.max_user_watches" = "1048576"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
cluster = {
|
cluster = {
|
||||||
clusterName = "kube-${var.physical_hostname}"
|
clusterName = "kube-${var.physical_hostname}"
|
||||||
@@ -130,33 +106,6 @@ output "kubeconfig" {
|
|||||||
value = talos_cluster_kubeconfig.kube.kubeconfig_raw
|
value = talos_cluster_kubeconfig.kube.kubeconfig_raw
|
||||||
}
|
}
|
||||||
|
|
||||||
output "client_configuration" {
|
|
||||||
description = "Talos client configuration (sensitive) used to manage nodes."
|
|
||||||
sensitive = true
|
|
||||||
value = talos_machine_secrets.kube.client_configuration
|
|
||||||
}
|
|
||||||
|
|
||||||
output "machine_secrets" {
|
|
||||||
description = "Talos machine secrets (sensitive) used to generate node configs."
|
|
||||||
sensitive = true
|
|
||||||
value = talos_machine_secrets.kube.machine_secrets
|
|
||||||
}
|
|
||||||
|
|
||||||
output "cluster_name" {
|
|
||||||
description = "Name of the Talos cluster the worker joins."
|
|
||||||
value = "kube-${var.physical_hostname}"
|
|
||||||
}
|
|
||||||
|
|
||||||
output "cluster_endpoint" {
|
|
||||||
description = "Endpoint (host:port) of the Talos/Kubernetes API on the cluster."
|
|
||||||
value = "https://${var.kube_host}:6443"
|
|
||||||
}
|
|
||||||
|
|
||||||
output "kube_host" {
|
|
||||||
description = "Reachable IP/hostname of the control-plane node."
|
|
||||||
value = var.kube_host
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "local_file" "kubeconfig" {
|
resource "local_file" "kubeconfig" {
|
||||||
content = "${talos_cluster_kubeconfig.kube.kubeconfig_raw}"
|
content = "${talos_cluster_kubeconfig.kube.kubeconfig_raw}"
|
||||||
filename = "${path.module}/kubeconfig"
|
filename = "${path.module}/kubeconfig"
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
resource "proxmox_virtual_environment_download_file" "talos-cloudimg" {
|
resource "proxmox_virtual_environment_download_file" "talos-cloudimg" {
|
||||||
content_type = "iso"
|
content_type = "iso"
|
||||||
datastore_id = "local"
|
datastore_id = "local"
|
||||||
file_name = "talos-v1.13.6-nocloud-amd64.iso"
|
file_name = "talos-v1.11.1-nocloud-amd64.iso"
|
||||||
node_name = var.proxmox_node_name
|
node_name = var.proxmox_node_name
|
||||||
url = "https://factory.talos.dev/image/5a697fd6e91537a2c9c45929d004d82af180bb5d4e989dd8494e25fedca005bd/v1.13.6/nocloud-amd64.iso"
|
url = "https://factory.talos.dev/image/ce4c980550dd2ab1b17bbf2b08801c7eb59418eafe8f279833297925d67c7515/v1.11.5/nocloud-amd64.iso"
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "proxmox_virtual_environment_vm" "kube" {
|
resource "proxmox_virtual_environment_vm" "kube" {
|
||||||
@@ -89,12 +89,6 @@ resource "proxmox_virtual_environment_vm" "kube" {
|
|||||||
vlan_id = 2
|
vlan_id = 2
|
||||||
}
|
}
|
||||||
|
|
||||||
network_device {
|
|
||||||
bridge = "vmbr0"
|
|
||||||
model = "virtio"
|
|
||||||
vlan_id = 2
|
|
||||||
}
|
|
||||||
|
|
||||||
network_device {
|
network_device {
|
||||||
bridge = "vmbr0"
|
bridge = "vmbr0"
|
||||||
model = "virtio"
|
model = "virtio"
|
||||||
|
|||||||
@@ -24,33 +24,15 @@ valkey:
|
|||||||
limits:
|
limits:
|
||||||
cpu: 500m
|
cpu: 500m
|
||||||
memory: 256Mi
|
memory: 256Mi
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:o/sXxge7tAi4,iv:4at3gD2SjyjA1r1eVYE3bi0xEzFkwxKgJRJGagfzDjA=,tag:OxOcClpHU/Z3sSiMHikOsA==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:5FY3Hmqh8Uw=,iv:8LGdTpFovI9lsfAaf65dHdJnNsm17ahm2/x+97LiTgA=,tag:b07oTtzzfU4FFjm9W+iz9A==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:FPkNzrFpfqQI7h1D346c72Og0B2y5w+z5m25trSt4kIEjxJ4RA==,iv:Xjl+xrXs5m28siBqNXTTmtLKEiTxnLZAzvFXEXH8ZcM=,tag:VQoot4mURGhCmy+MSjr4BA==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- weight: 100
|
|
||||||
preference:
|
|
||||||
matchExpressions:
|
|
||||||
- key: ENC[AES256_GCM,data:O4Wtr+1YuNGmYknT35XPONTeqUk=,iv:VqTkPwG4bxvRgXDGrmpwVeT2zLQzOLrwKlhqYCv/GiA=,tag:2pntJGKlUF8cBKgKpyySHQ==,type:str]
|
|
||||||
operator: NotIn
|
|
||||||
values:
|
|
||||||
- "true"
|
|
||||||
postgresql:
|
postgresql:
|
||||||
enabled: true
|
enabled: true
|
||||||
global:
|
global:
|
||||||
postgresql:
|
postgresql:
|
||||||
auth:
|
auth:
|
||||||
postgressPassword: ENC[AES256_GCM,data:/vgY7Q154znmpg==,iv:GqwNyccbeCSm/b+7PufHcoSrsrrIR3FVgRAI0WxrHow=,tag:o/kkueEMtJUVLeARdy5zpQ==,type:str]
|
postgressPassword: ENC[AES256_GCM,data:5SoftEfh4w8hmA==,iv:QbbOmVM3Jp3gxAxL1OvnB6WKFX+OTHFENz1roMnPqyc=,tag:Gtn7H7d3O7Hweg5q6P6xUg==,type:str]
|
||||||
password: ENC[AES256_GCM,data:gc4Ev4kn9KaSqw==,iv:Bd/qGIaobKewB/rtJf426pzS4qPe/WAMi2AB7T7HtCE=,tag:XlDtRF1tWv+9YmTo1H/Lvw==,type:str]
|
password: ENC[AES256_GCM,data:0BMgFdvPvhB9oQ==,iv:Z0mkQBfhpc7y1nSLY6MOucxwuKZ8TfOk6NlQE9RwVQw=,tag:yGDAOH6TCJDCfhxNlC/eCg==,type:str]
|
||||||
database: gitea
|
database: gitea
|
||||||
username: ENC[AES256_GCM,data:6mlFP+E=,iv:+QEgLA6reecmpvvtmdOnwkpqOa7fOV06ZS8VTDQo7MY=,tag:dREH7uvHk8ZS6HcA7Vo0zw==,type:str]
|
username: ENC[AES256_GCM,data:F7+91aE=,iv:tEGgJ6GoXVkNoD6D4ZnyClrOQLGlqzFIUqqwDrVjd9U=,tag:H1+f/EKf/KptooRf8g0qcQ==,type:str]
|
||||||
volumePermissions:
|
volumePermissions:
|
||||||
enabled: true
|
enabled: true
|
||||||
primary:
|
primary:
|
||||||
@@ -61,24 +43,6 @@ postgresql:
|
|||||||
limits:
|
limits:
|
||||||
cpu: 1000m
|
cpu: 1000m
|
||||||
memory: 1Gi
|
memory: 1Gi
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:xd4ugBSV+lcC,iv:3dUqomveQf0/rMwOrlNnTk1mJoF5sW2RQ+UrPLlczkI=,tag:16IzYY0mqB8LlwRGXxUy8w==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:rK9ACxsGlEk=,iv:afDm0KWC0HAHw4AJnlpPw5oGcfEe3oG+RgiRCTpjb7g=,tag:sDOIWCiqxi04YYxalZ6DbQ==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:83c8V9jJ+d5zpFFFhbo//O/opfgAKNpoqcsRw8W9oGbTu9pBMg==,iv:uw+6IhfkixBxBo7Gs2VSvW+q+JpW35rE9REkb6SQDTc=,tag:donRKnK6NbgBKhDgEOR0Eg==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- weight: 100
|
|
||||||
preference:
|
|
||||||
matchExpressions:
|
|
||||||
- key: ENC[AES256_GCM,data:UKDLBJ1yfJ2gcyu/Ms3jVnBTfDE=,iv:fK73/46Jh3nfPMnWmMHr+SK3k3l16IsT9Ah45+yCz0w=,tag:A+PvsR9YpWwHrVpHOYXMGQ==,type:str]
|
|
||||||
operator: NotIn
|
|
||||||
values:
|
|
||||||
- "true"
|
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
enabled: true
|
enabled: true
|
||||||
initialDelaySeconds: 30
|
initialDelaySeconds: 30
|
||||||
@@ -111,8 +75,8 @@ gitea:
|
|||||||
oauth:
|
oauth:
|
||||||
- name: Authentik
|
- name: Authentik
|
||||||
provider: openidConnect
|
provider: openidConnect
|
||||||
key: ENC[AES256_GCM,data:ctukTzFfQAZSAIaXonIu6nVsTHnTNAlqObVhGkKt/aLa9o3KxDHdBw==,iv:QoudL4RRdwpPfz6h6MWoaBOztALRa8PEi5fRFkjFzQ8=,tag:+TgP8KrYQNCBmTaqscOn8Q==,type:str]
|
key: ENC[AES256_GCM,data:oq+UsuiNEGWphxXbwtbBs3d27bB2cVPoR617TWhcPOk67D7XWUPkmg==,iv:hODOA45FFex/b5ghHScnDoc5osu1d8bzD969oFVH3wE=,tag:67TMl55I6zgJWNGMqco6fg==,type:str]
|
||||||
secret: ENC[AES256_GCM,data:mxNRVXfX0X777xh5bB7PwMEeaxRPszmvmpoQt2lMtvkTSIQMJOllzY27PAShJ/y6JBPRslg6us9TpKd3zt5KcVY4Jne3hkpkQCKqE8HN3XnjHDHDzAm4ugYib5J97BeLw9pvdurLxw5iXAp3XFxMytzU4xCrYPsS61FWJRTLFRg=,iv:NCGMyWJT575CGnnFM4mcLDxsoMkggsxiNkXNp/aU0es=,tag:5uudyC1IIxorgepR7HnPMA==,type:str]
|
secret: ENC[AES256_GCM,data:o9BZSzy61ouycNgtgRg/Jn8Wz+hLBBqgX46iHbaYtPbUVPVFc9tpdCsTdHCpfSGfiS1B8kWcoSzIDIAIIofRSCS/QqEQeuTwsyakkXhgn/LtLn+TH7bdLLS8qqusy5MZ9U18IJ/UBPGZ5+16Y/glbhpfHu9NNv0AI07nPciTq1w=,iv:7dn7eW2oEK/EU4xIETwVSekZUmktrs7U9KTJC486nHs=,tag:Otl2KuySu9bI/cZfCyjiKA==,type:str]
|
||||||
autoDiscoverUrl: https://authentik.vhaudiquet.fr/application/o/gitea/.well-known/openid-configuration
|
autoDiscoverUrl: https://authentik.vhaudiquet.fr/application/o/gitea/.well-known/openid-configuration
|
||||||
config:
|
config:
|
||||||
APP_NAME: Gitea
|
APP_NAME: Gitea
|
||||||
@@ -148,48 +112,28 @@ resources:
|
|||||||
memory: 1Gi
|
memory: 1Gi
|
||||||
# Increase replica count is not useful for 1-node cluster
|
# Increase replica count is not useful for 1-node cluster
|
||||||
replicaCount: 1
|
replicaCount: 1
|
||||||
# Failover tolerations + affinity — allow scheduling on p330 during r740 outage
|
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:RBMIdZLIV79D,iv:TTa1CovTGm91r/lYCKOKjnhM+i9hoLVsmDi2kmki9c4=,tag:zuhnRKxy3dtkYJr3TuLilw==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:LLOg34s1mrw=,iv:rjOyHPWBGrpNl1YGi2cYN6JRm7m28HiRibQoK0JZ3CE=,tag:oSyz0nISr3plqdXQ5UJxzw==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:jVh0MTlCs7rVPSYvulsw8bIGwYPw5soaOzMlzVzVbFy13qqKLA==,iv:JfZ+JWxHBiTD/rG8xHYKogkyryNQIUIXyf9chxpwlEo=,tag:hwlZ+k1L0uPe+UGBOeMlYg==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- weight: 100
|
|
||||||
preference:
|
|
||||||
matchExpressions:
|
|
||||||
- key: ENC[AES256_GCM,data:Sn7FuYqGMbTjx/EpqRIDx5GofR8=,iv:Wkyz+RmyTGswohAZmyeQ1lWT8hTaYw7qAVmXTnSIT7c=,tag:WAiU90Wo8Av0TsdMtyPF9w==,type:str]
|
|
||||||
operator: NotIn
|
|
||||||
values:
|
|
||||||
- "true"
|
|
||||||
# (postgresql and valkey tolerations are set in their respective blocks above)
|
|
||||||
sops:
|
sops:
|
||||||
lastmodified: "2026-07-25T12:44:33Z"
|
lastmodified: "2026-06-27T10:20:08Z"
|
||||||
mac: ENC[AES256_GCM,data:V9ZOpVvIi9PzScyasqQJb0yZDrqQ0RSXGyAY1+WaHCIa4/YRKn9d9V4wy+CwWaeEiIO7+fkp2ROInl7eVmETm5JppQ899G33GTmHCZLcBvVR2M4xEkx8eXy3saKCbC2DN4bHRuSCvvqw2XR+QIdemLL7ETuRo2cepUMhz/93peY=,iv:3wm/iCVfAYUUa7VfBXsx200LypYYWgJYCEm5X5Wwsnk=,tag:OzGw1PQUuVRVtQ5slH3E0Q==,type:str]
|
mac: ENC[AES256_GCM,data:VZY4oK2PCMBJd4VozL5qS7jlZtOu1JNsOn7aqJgPZ8uQR7kG939By7oVELMH9us0Sb8AZIYmzx7nLwnlp6IUNnacOffhKNl4stTFrb5Vry/5zem0CNp08eEDEt9VoxNudfQYC2axuGSwbAIahMzZsOYVRqOGgF1gEG17+hgd7ww=,iv:MiHKGUfzaSAppXLLxJSQD5loGkToFLzVQetWoRHq074=,tag:FduCPbHmy6A0mYdCrnRxDw==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-07-25T12:44:32Z"
|
- created_at: "2026-06-27T10:20:08Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiAQ//RIr73tcloQQg2OqSLn7W1DI6T1dYCh+ntTP3Y8KeB1WC
|
hQIMA7uy4qQr71wiAQ//VDYGwZupOfefdEtJkD9SPOW3tHcOy2XR6ULhVQjXTGGh
|
||||||
hZy2JOdTwHLkd9MiDimgjH0E1036+Pta9xhmoi9lnY3cvwOH/1oHxjd6ixhPxYzV
|
APuONtgUZKFCViUqYZB7l6fazM8U/fv3cHsIpZfALFGE9wSZ+4So6D5dmBj13egh
|
||||||
Xt38fQ3BkFvf3fHbhcbzpMIFL8tfvuVDAxRV1fHHOdCGgXqeC5GP0KtDGmnddHui
|
yznV55xjinoaKPzaYYZoVmlt1ZO22SxmC0vld3yfAs89KD1Aow5wNZGTBELzyAWF
|
||||||
w+ms/1bS/EiwS4C7IW0yYSD3nGIF3GyLwMPOnbmJSz+ealEWjuBi8R0S1gX40QFU
|
gMYGMkCsLlH3gqBaJTV1m5LKHHQAtoyzvJbKcpiynNRySfN/ogNX67GmgEMH9+u8
|
||||||
EV0MBrVrtFtnA2R8UZGCjU/xpgoQFE1U8dArNt0DPqNsOeL17WQZrZ58DurmnmiE
|
UexPwUHL6skIzHLmugYcrs4FAABot4WzoJsR794wOq/DEqHBE4SfQg48y/DROu2O
|
||||||
DNjndlR8Est1y0gSO9ujPtGXbbuhAOIXuEsYMfnBgQ5Y+dShs2G1EHC0OexYB83W
|
mgo6KqiXXe8qPGCIvjLiudb7MdSLpoLqgZ0vpExzdS/wMXAXczodrRRJmzEQyeDE
|
||||||
FSHxM69hjQkvRLL0/lX+5NH5h+IJqZEUsLd0/J4h2Iz/EsDRxO6pKt0HzZbJd/y8
|
j08pquhfUzQ1SA/9VRQkgl4r0dj0CTuc+EhvHD4M9nj3JIjvuJ0AdyKye5S8rdNM
|
||||||
qY0Y2K5cGUzG0y0TWuUznJyxmTSCgrZAE8sgBhU607+UnXU678cqbkRgSuHTNdMe
|
rm9eyX8V+o6X811qUM8bobKEi36tdnSMiB1yVHTtdW7hKctQwRMNQ8A9QEtOxS2F
|
||||||
yNxQas/PA0ltezOe3dBG34Cwf0oQZ/NCt2TfSFciFEgf6ze+fu+T+gCFfftWPiy6
|
+9Owub4LXZwBejSLgh9jaKEnilJQKVYN5Aw2lNAmZZZKtJ+iGHHkq9H6k+k5oEoG
|
||||||
pQ/3Fl6yAaVguu6UCR27wRMhXETZ+YZ8rw32XPbLE6BOvQ1LcGg9E7wJlw5eeir8
|
xkQ/IYIEGLhfjH0PDZ9m2G3Ren3EkEkNjYvhwENhuUcyuW5Abl62v9FMY8c9NYyK
|
||||||
0aWvKyUu/ClK6+/s7Ytxv1RoL72gn6WuOgK5q6Sf3mqmltuvJxtDVAnqCHNRfHXS
|
+uf5VS1ceHOBcelQcdSx9Kuox5UuyUtbwUcv+HbTmymZtmYdw+dnOTtRHR5CNY7S
|
||||||
XgFH8gPqy47Gqg9qggCHjDIUbQeAu1IAznJAQ368WXkTqqnq887sSSgcs6JVduJf
|
XgEvPWAEagJpsmqC2n7Vc9d7b7TVp+SLSiL/w0v9JD6ko54Rwj0x21Odx3FLe7P6
|
||||||
2YV5NQFOcoI6OF66FXXmY+sTpJaHcgVfKt3EHAqXxHCFZUSBHMwDJm9ulRBuYsc=
|
obKU6XNNX9PPThJw2W0E295i2+DmOTH0AFio3rsg5wM3JFUokY/t8590sWnFR8g=
|
||||||
=raBM
|
=Gypa
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
external: false
|
||||||
|
hosts:
|
||||||
|
- host: homeassistant.lan
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
configurations:
|
||||||
|
trusted_proxies:
|
||||||
|
- 10.0.0.0/8
|
||||||
|
- 172.16.0.0/12
|
||||||
|
- 192.168.0.0/16
|
||||||
|
- 127.0.0.0/8
|
||||||
|
sops:
|
||||||
|
lastmodified: "2025-12-04T18:23:43Z"
|
||||||
|
mac: ENC[AES256_GCM,data:JSaTCBXqpiP0R3rIEa/EZaDPbBInY2a6UMhFD9Gcw/mJVq/wF72KsFRfJl2hZ3d1FtsQ6Z0l3GrbiV41348jxzWM4XnE0e0hywdc2Ryqw0B3GS0EoNk1IoPR8ieZtxWNtFvglR2gVWWUnN7caYf/acE04NnzIDxl0tPEFckS+Nc=,iv:C784uqYb7KGhn2wGWZnCA7rhGocJWP6mfBhjNLWbimE=,tag:A7JLOmSVJ+ZrNA36DJfRCw==,type:str]
|
||||||
|
pgp:
|
||||||
|
- created_at: "2025-12-04T18:23:43Z"
|
||||||
|
enc: |-
|
||||||
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
|
hQIMA7uy4qQr71wiAQ/+J1e3KfHaAkFS+lYz9jKzPAffkiDVCeecEf31Lk9DJxFd
|
||||||
|
7agtTWvcXtIsiJwF4sv4NzxY3pQrNRKwiq8pd3iXWHSqflIaQ2M9+dUGHykkjA5W
|
||||||
|
R+y/wgM+K0MBaFMxQU/xC0lM7YFwypV1JBp4jmpNn3McGba2yZAoKo1uAQ9LMP4L
|
||||||
|
Fd5wqNUrLNfwbh5Ts1rBVAGwStVlkRUvdUVCXjngdWVmE5xB3IBypdrFX2oclkl8
|
||||||
|
0zSNJwknC4bi4FeKBxWC90HT0n8zSMybdZOltcl8J3YVCL6l0F9hw6Ub5j1ej7qN
|
||||||
|
Igyll2/T4FEOExdo9oRXbEjC6GSZZBD6NMlrgJqVVUWoqDm4WQlKc7JRYAjtRgbS
|
||||||
|
Us8qCD8CMb57E6AZHD+GRZDK48OeevM21YxRvpSQlQfyeGbMrxF05zzw5InHSMhw
|
||||||
|
VslHQRmUMQqEzTsSeFbNxTeqy1YGGDYlnBpEjl8TPIZXE+mjwHm9QJbKwQFUK4Rh
|
||||||
|
YuEZDlUONdaKQpNX9OS6kwiV493sSruC2yWNwYIlgERrkcjBggKYPiV7lDiFnl1W
|
||||||
|
RVcsqOGnsrrwFHT7m6/MTIzH0k4fDt6Vv/FCToaoadvLPYNZb7xoKMahzT1z3SP9
|
||||||
|
FMuGus2r8h6ShEZVyLAt6o+BuuYyzOrVo10k1yTKDqEDD662rbRvTrBZlOk1vUPS
|
||||||
|
XgEtw6w6fFkESJKetHiN6TxG2+WyJw5PILm2sjak5AcR3qWiux/ENPb8kE0BIB0S
|
||||||
|
1Z/YTHYNP2mtEegDsp1DoT9tOSTWfrllL+p3kccvizEB5hq9+oMEzPGBstjWRjg=
|
||||||
|
=5PDx
|
||||||
|
-----END PGP MESSAGE-----
|
||||||
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
||||||
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
||||||
|
version: 3.10.2
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
persistence:
|
|
||||||
enabled: true
|
|
||||||
ingress:
|
|
||||||
enabled: true
|
|
||||||
external: false
|
|
||||||
hosts:
|
|
||||||
- host: homeassistant.lan
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
configurations:
|
|
||||||
trusted_proxies:
|
|
||||||
- 10.0.0.0/8
|
|
||||||
- 172.16.0.0/12
|
|
||||||
- 192.168.0.0/16
|
|
||||||
- 127.0.0.0/8
|
|
||||||
# Failover tolerations + affinity — allow scheduling on p330 during r740 outage
|
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:SMOTaAtzpNtv,iv:rsMiAMaugnRKQjtp67nU0pW+MWXgolluiE5qoIWJkRA=,tag:RLUTotQG3XUQfDiA7CE7vA==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:DhbXHMsUJ7E=,iv:lQQTpWpDGi7JEQV24jdICHMnC8yV0EsNQ/nauBsqk/8=,tag:RKripNRdBwqnt1sCY72eYA==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:YApCSh00O5YoRqzHUNSoPbYWOsNVwFKOlln0C2+mYpDfKqLU5g==,iv:eOv/Yri400RHpm6Bnxqw4IYp2IiYAKXTd06sduW3Ku0=,tag:9GR1Q8lWHG7Uplevd1hbYg==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- weight: 100
|
|
||||||
preference:
|
|
||||||
matchExpressions:
|
|
||||||
- key: ENC[AES256_GCM,data:0rESi0B+l5uEwmPQPuFzMylc6JE=,iv:dGx39YEojvQ/J2y6SlP54I5L7Zr+yecwJwNQQ53RV9k=,tag:icAw2r/q4+UcHzYClfOBSg==,type:str]
|
|
||||||
operator: NotIn
|
|
||||||
values:
|
|
||||||
- "true"
|
|
||||||
sops:
|
|
||||||
lastmodified: "2026-07-25T12:44:32Z"
|
|
||||||
mac: ENC[AES256_GCM,data:cNqULRYPz0Es3az9v9HWlEf1pvPFWfZ67OofRWaDgFx3KVKVj6VUY6HQgN589xbbCoBKLSKXUoag2zOku1P3yBkb39WrdUtfSJw2t7BvZIo0l9VG0bRAYZgJYgnQA1NrjxixzgZZ7AHst1ljB+ZC6qq5DgEJcuCiue9zkfySTMY=,iv:rNDmiWS1U01xgRHty/sp/RJ5iz78sOdBGP0mdjUX7TA=,tag:BVKsb/HQchTaLo+2Tlrn+A==,type:str]
|
|
||||||
pgp:
|
|
||||||
- created_at: "2026-07-25T12:44:32Z"
|
|
||||||
enc: |-
|
|
||||||
-----BEGIN PGP MESSAGE-----
|
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiARAAgxstgt71NySIfZBgF0Nb78qkkFV7xOEfv+VWO3EaSp7Q
|
|
||||||
8jhARPxkAVMwl1MQIdCxB6UuUeQi8fOrLwjYzTN1tWG/VV1P3KV3klm6jNcZ4Zxv
|
|
||||||
OdYt6kRLNfI4J7KWFhZg8A7/FfXSOtZEWLjD60hb4ie02ALEC9o2rUcdxWH2ZdHU
|
|
||||||
69GhP3VU9uiChOxEk6eLyQr22IF9IfQ7BVUckVzU13neZ2PEYXCV3QaHMBrvutMz
|
|
||||||
IFUGpi+drrXxXq9KmJQ4Yr4L0+mHwXYrFVi5rHK/ibgRDNT7T9nK56WCsgRd0MiK
|
|
||||||
7+1vK/q73p5ZdozmalYB2lKuehRapf/xdXbn1SrWGXbsHubdrE2AQgRxBHVy3k8I
|
|
||||||
spN2ZTPzl29mUsVIWKE/CdF1GsUGYrKwKL7S6aHZBtRXncbKBEFLbrloAjs+j83+
|
|
||||||
aU5ybyQWnZxh7f4+nQyDerSJXZJ17eEJRjqMDhJ6VmA8iOBWxgudM57d4Umt53cf
|
|
||||||
s4vOikRSO0cd+/OMvQQBW1IPMkwRSi4/jD8BZTXisWVUQ3/98NQPXQE5EYk2w7aM
|
|
||||||
5T1orWWWMz5EdQNptqz5GL6qPoH4UpVSGCNuCf/oyLR6MCt24JDR9KobOgXKUrfM
|
|
||||||
Qig6/+4WbvxBJ9zevi14FL+K00MeWd3pQT2Bsg8l3fWPIRe+p9lSB6yrsf6xHu/S
|
|
||||||
XgFWycRMj+U+y7B1kyXT5W6WshFHHTOlyAVgk9lnB+kKEVno4pAQBNuNlW4gwOvr
|
|
||||||
iuc9EaiuHat+CW+WdxLdH3i/jcNmvXfXRXdE3449aXv+haNBjxz93nRo1vbAFuw=
|
|
||||||
=O+AO
|
|
||||||
-----END PGP MESSAGE-----
|
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
|
||||||
version: 3.10.2
|
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
authentik:
|
authentik:
|
||||||
secret_key: ENC[AES256_GCM,data:P5e7cSOa0Uw0NEmWuDzIv1QxIkbvLE9vjzULmS8yS8b62fS5jHuFWUF/8VkW+pXiJo51mZ9b3QWDBdD732hpSrR7hUpK19WdZvFfXMKsqVc=,iv:AuuvJtXdlQ2SzeiFdxv96cEVyeMTNW/fG8bPS4ItFtY=,tag:AJC/T+eXGwOdQ/U7rebIdQ==,type:str]
|
secret_key: ENC[AES256_GCM,data:wnDvn9EdX2SYDoWn9tTrbKvBx11fGfGlTk+9MSz8cBzwMDaY5W1bCwjtH7TmAnwYhbUQxXdVIxgPpj7k0FVqM5fuMHZwcb2AgtDMGbxRXtM=,iv:jwUq7dbl+V1t+Ek7vyBEfwX1B/fVmE0TIFMVGj40kVI=,tag:G1bDdR9OUqOtZQmvUcAfRA==,type:str]
|
||||||
postgresql:
|
postgresql:
|
||||||
password: ENC[AES256_GCM,data:wmidNe0ODeH8FQ==,iv:zh38F/lIKdFBBIQufjLORtfusPWwDnsDIh61b6ltbQE=,tag:SSMCicRKoPBXwPLFoh+uoQ==,type:str]
|
password: ENC[AES256_GCM,data:G0KPHz7zZ5ivtA==,iv:w4m21LqGEtvEGAp7NlsoV9bwRkE/Mga4Nxp5mqBIJHs=,tag:kKHC3yXqJKZX9jiYuYXt9Q==,type:str]
|
||||||
email:
|
email:
|
||||||
from: webbot@vhaudiquet.fr
|
from: webbot@vhaudiquet.fr
|
||||||
host: mail.vhaudiquet.fr
|
host: mail.vhaudiquet.fr
|
||||||
port: 587
|
port: 587
|
||||||
username: ENC[AES256_GCM,data:VV9x5UWZ2F/p/l4pOVdDB3ZeK98=,iv:H7YXijpo2oJEO96LJOERL4lyQtV7QJq86H33wDpKObU=,tag:q+KiivjpV3kXY0AYGKhzFQ==,type:str]
|
username: ENC[AES256_GCM,data:s0L1fCp8aObv5j6jlBiGDfj0aIM=,iv:cbvXxI3DIjnhnfHmUpeDF5KKRxUC2+YdvwU5FPcEe0s=,tag:rR8HpXUEabNZ36xabVkSIA==,type:str]
|
||||||
use_tls: true
|
use_tls: true
|
||||||
password: ENC[AES256_GCM,data:pco+hLWairs2UFNFTSY=,iv:OMrxrzKDo91UIMgEhPdN4dTpRxl5A1LKHYk5h4eFD/A=,tag:ecjAP9lv6FPxPppyurJ5cA==,type:str]
|
password: ENC[AES256_GCM,data:rb6o5MGQWK7LIT7gass=,iv:NjI0iqRk2usrqcH6kSo72T337y6avHz5whg9bLfAYDA=,tag:DnRJaixjmNY31V1h9Et5PA==,type:str]
|
||||||
postgresql:
|
postgresql:
|
||||||
enabled: true
|
enabled: true
|
||||||
volumePermissions:
|
volumePermissions:
|
||||||
@@ -17,30 +17,12 @@ postgresql:
|
|||||||
repository: bitnamilegacy/os-shell
|
repository: bitnamilegacy/os-shell
|
||||||
tag: 12-debian-12-r51
|
tag: 12-debian-12-r51
|
||||||
auth:
|
auth:
|
||||||
password: ENC[AES256_GCM,data:cRaZ23HWjZ41ig==,iv:HABmXhmHvMhjUJ989xJOFPWW+EnLTCot1is80vMTBUE=,tag:r+/iRkQIlXvALv/JQbGFRg==,type:str]
|
password: ENC[AES256_GCM,data:9PI//cgxRlmjNw==,iv:q0SLpmaTIC3OUulPDxiDWie0+oI7w17V2fPmJ52o8ao=,tag:2lwG95Remzqt1dj8H4CG0w==,type:str]
|
||||||
image:
|
image:
|
||||||
repository: bitnamilegacy/postgresql
|
repository: bitnamilegacy/postgresql
|
||||||
tag: 15.9.0
|
tag: 15.9.0
|
||||||
primary:
|
primary:
|
||||||
args: []
|
args: []
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:M14eAjMj2w2+,iv:5vIosyFtwVgqs07CT2UcL1KL2hqg+rvKS5PWRvWRlPQ=,tag:OJ4RwlLAhGDN4JGPX8gypw==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:KKZ1Kd5yRa8=,iv:adSUcfmjnDAc9QZ14NDfFz4oATpcBhtn8iHTF2xXpcw=,tag:G//QEbSKXiGP7nD5oAfNSA==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:KtJS0g+/3y6VZb9VNKv1IWMwIi8FBURPGT6W6qvBAV1CHW4UMg==,iv:1I8o3SNljujN4FqByFC9uHpImJhHjj4Us0QEpHpDHZ4=,tag:FIpRW9I4OSVFVx4ejmau5w==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- weight: 100
|
|
||||||
preference:
|
|
||||||
matchExpressions:
|
|
||||||
- key: ENC[AES256_GCM,data:IkWdKkS/XlGw0u7I+Q2wYhXL+CU=,iv:2k9d0Jo4Vw5gA4tGeIq1Dw0IiZKQykfV8YAt2lYk7GE=,tag:Xnz58VP61Ew/J8hvIClOVg==,type:str]
|
|
||||||
operator: NotIn
|
|
||||||
values:
|
|
||||||
- "true"
|
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
enabled: true
|
enabled: true
|
||||||
initialDelaySeconds: 30
|
initialDelaySeconds: 30
|
||||||
@@ -62,49 +44,28 @@ server:
|
|||||||
enabled: true
|
enabled: true
|
||||||
hosts:
|
hosts:
|
||||||
- authentik.vhaudiquet.fr
|
- authentik.vhaudiquet.fr
|
||||||
# Failover tolerations + affinity — allow scheduling on p330 during r740 outage.
|
|
||||||
# The authentik chart reads global.tolerations (applied to server + worker)
|
|
||||||
# and global.affinity.nodeAffinity (preset system with type + matchExpressions).
|
|
||||||
global:
|
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:yy3LVikckQ4y,iv:PlWRKZVoR6g/RtQdGBoIKbnwjX887xZY7ZhciTa0nps=,tag:yRMuJW3yjBV2C3LDWVdEHg==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:IqKHhgroaK0=,iv:bvg7kLaVQEsH31xHH1rCW29dWlWDlDsAMAmR1cX2nS4=,tag:B77eeEjVnRwk/feuPyi2Kw==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:QYGmJBgxhqC2L3UvGYyJKKWDfzSFq91w1ifwNn9rofPnBqL0Ug==,iv:+tI3xw51LqinZnEOi7Lgao9liOD8KT8rOGNtn10qkFg=,tag:fJhk0PifHEyFlX4j75Sklg==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
type: soft
|
|
||||||
matchExpressions:
|
|
||||||
- key: ENC[AES256_GCM,data:qRInCqtomABFKcUFHzDQe2qmzJY=,iv:9cMrKqqpIMtNCUqkIWaCr5YGNoK6zsID3xAKp34q1kM=,tag:Zf1ZjGwCgnaOqTq8Hr++Fg==,type:str]
|
|
||||||
operator: NotIn
|
|
||||||
values:
|
|
||||||
- "true"
|
|
||||||
# (postgresql tolerations are set in the postgresql block above)
|
|
||||||
sops:
|
sops:
|
||||||
lastmodified: "2026-07-25T12:48:03Z"
|
lastmodified: "2026-06-05T20:13:55Z"
|
||||||
mac: ENC[AES256_GCM,data:noPba/BIxyoUo3sFfwXuMaZwwSMNADgWcwGaIoQchdzu3KodtWRHk5xJ9wy4VGelOuy3gS79j9ErDnsn8I1v05Bqqlrig99Sch5Jlu1UQpeUQtUjq9S7d5BQ0f3QdeU4iP2v28JovI3gBNHEIlZiueV6xYUrpeoKzS9ukrBtJsM=,iv:XRmbI5hX0OCh4I+7MmnI9LyBLJhf2CsfHgvsNaEUWgc=,tag:Ym5JeVRqTWHWl8qSQAFh0w==,type:str]
|
mac: ENC[AES256_GCM,data:rtrnY4XXaovFr/oXuZWJQa17Ihlgb9W7WMKYeN10qqx8REf6a3zqlUUGGSndYhjAZwpUjo3qixqAjW6kItBDgeF3DLpQ2T6acyOgXmbYNN+dWK4zb7jE0yZz69XIkUirabBWTkLqDACvw3iW5x4EAjg6/VYRVt4g5eugET5F/IU=,iv:eM+Z4SEJ6/y6gHzlYjLxcbqRn4dP4gbkaQqN2EGL4BY=,tag:EXklnS8lNeQErKcdP0XD6Q==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-07-25T12:48:03Z"
|
- created_at: "2026-06-05T20:13:55Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiAQ//Sa5nJk6vXXFdf4C5XwsCeRmkSYKSdxJZ2auRzRi+2znv
|
hQIMA7uy4qQr71wiARAAsreeLsc0Qhc/RDFP3GmusT0PCFq0XTnin9THWE+7YC/5
|
||||||
IqicZh0YENwEX++2NQNtt/jaPFCqWUMEVfncvYceutHzZxDZihkbIL/jKs0h/Hjr
|
+kPcfKfyQGQGImzkl6niBxzl4jjxiyOyhdDWzwFw34Ets+1wXLlur9mo0v8GLfZG
|
||||||
gL/JNRPQbVD4HXLTQ5dOuAfixJXcN9DfYQGyBg1vOtvpKxR4cD4JirA3KyYjtSWf
|
DEO+1VEzFheZzjM6pVNOWCJdGKR8WEuadjmMMCsux463JiEPtatRJgcAim3ux6uV
|
||||||
cYw5fMSalPJ0D3B5pObFZoVJhu8emO3FegSu/tqnZseJuT4mqZqdhpuej17FtkQB
|
TbtDNNF9yc9yp7GN8p0/kF3tnD40zaszM8+UznrWbDIFJOrixyVTZ3O9tKcjl55S
|
||||||
il0tNwBdy9pDFXMxiZoGFtVb5Bii7ZU19MPleBBTFO9nNLXE8rCZ/1tJBtR+XUXE
|
m5upCrrbc4rcp+uRiYrsiMZoEg3KvlqtxUw9mHoeVce83l7bziobixzBhnGRtAar
|
||||||
acglYoZHt3aHAqe1+8iLWAOmE1KkElUMU6/G5yZCpLNNwwgx1jXqGsvITMQQVptJ
|
zYUKsuu5PPpljV+ghDSIkcTrwLGQnInhlbOxKwDNVb0LiL/1c6dP4zPfZNh+Nvne
|
||||||
RMMKfdNGZSC4mcVXT+Ux/uwvw09DO9Mrbf0tjiTTjLProNxUmY4pPMShwCmGsfTa
|
XhUDx90WnGCFOI2t5tXelAymCBDgak2qCX4IxkxddBhL9lONwYIM8zmszjPQf7r1
|
||||||
si/bZbCui/Jryy02dYWuzA4bpReY+ySMwUGZ9C/0Gn/SBEAdeGQKDhJwgmE6BM1n
|
Gx4vFrUTqceEXI+JLiPog4/+gGHX1qzifdHBZR0ZtTi/XJfnhdH3fkJndLA65Pkg
|
||||||
hMZOh9YPcGSc0n4a9q/CzFqcQ7T8m1uHgqciFG/zW8A+l8bC1H5uxsUwcYPALLxY
|
K4vY6KfomQLEmHurMVzEkoeXH95qSWmfmai4SJmKWqm33VFPZRFoVonnx4dP27SM
|
||||||
adAZ6XMPZAZ1L/zp3NO/SpdHp7hQVqx+TZOWvmlZ4XiDrICp4AVK8oZAXKw/nrAu
|
vZGmfgjOl5eeRk/jdrApJNTkCi/dkGUfNRDffwcYQgjCJaWOs1agchBSC/RLZVWN
|
||||||
k4ZYVsrBKrkLBIMNmM1mxuhi248ELB7V+kN9zDxQZh87J+F2WXk8D4dMwBfRfYzS
|
3FPmohgmGa/MBOX3qS1r/5G3XBdKuUxd/NJ2Bw8L0wodteGSEClEiMEXGGZLkOzS
|
||||||
XAGiurXdFcCH3i8O5mmE8QY+ZgdKzyAj7hVw8BvXlOIne8pPe3YuZsp68zwdz8MQ
|
XAFSk/qmO3tJGViwOVtnb0ZXyTRritW9uR13N+LcaKJhC0PB/m/lXR6IlrfLJXnu
|
||||||
Gr5oDPaZWhEwFEg+4H+ub5xSIZewY7Ib7FM8bzzfd23vODtZ+0sBoRH+Tq4R
|
AMD7w42wKMeBgGuQQ/Xm/iOVlS2H0kvbm1b1WEZMQUJlEleKSyQKbmQPujoi
|
||||||
=m933
|
=KjtC
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
||||||
|
|||||||
@@ -19,15 +19,15 @@ pushShard: ""
|
|||||||
# with these credentials on every cert-manager renewal.
|
# with these credentials on every cert-manager renewal.
|
||||||
recoveryAdmin:
|
recoveryAdmin:
|
||||||
enabled: true
|
enabled: true
|
||||||
username: ENC[AES256_GCM,data:kpf88Vc=,iv:k2kGcGlH0jQkLmb35V4+IIrBpDM93PaG6atcO/SLDB4=,tag:qZIR2LZlv1g0XBkEh0y8qA==,type:str]
|
username: ENC[AES256_GCM,data:N8MwV7g=,iv:ipHgAWJ6J1C7TrugLLeJrV/IVk9xfC8DvCMBfIDyJMk=,tag:OwbcThuQhS/aBLH0tyewnA==,type:str]
|
||||||
password: ""
|
password: ""
|
||||||
existingSecret: ENC[AES256_GCM,data:DnjFoj8VNeqHmwM/KVebjOOHvYHPgZQ=,iv:JWBs6OeZzsa+8uJt/FjptI6t+tf+CRQDKA7149rBg1o=,tag:M4CXA2k8M65mbSUF0mnGvQ==,type:str]
|
existingSecret: ENC[AES256_GCM,data:tGvczUq1+EDNR8CAFgLTMd+/N3v7Vig=,iv:XYrfBXYGexxUXskRJDSYx02D+nIYUmNtSCScplBenZM=,tag:/MZ5H6yuJlD7D6TN8CwVuQ==,type:str]
|
||||||
usernameKey: username
|
usernameKey: username
|
||||||
passwordKey: password
|
passwordKey: password
|
||||||
# Recovery mode suspends mail services and exposes only the management listener.
|
# Recovery mode suspends mail services and exposes only the management listener.
|
||||||
# Ship production values with this OFF.
|
# Ship production values with this OFF.
|
||||||
recoveryMode:
|
recoveryMode:
|
||||||
enabled: false
|
enabled: true
|
||||||
port: 8080
|
port: 8080
|
||||||
logLevel: info
|
logLevel: info
|
||||||
extraEnv: {}
|
extraEnv: {}
|
||||||
@@ -40,7 +40,7 @@ bootstrap:
|
|||||||
# certificate.yaml (letsencrypt-production, Cloudflare DNS-01).
|
# certificate.yaml (letsencrypt-production, Cloudflare DNS-01).
|
||||||
mailTls:
|
mailTls:
|
||||||
enabled: true
|
enabled: true
|
||||||
existingSecret: ENC[AES256_GCM,data:e8rzv2mvlpoZR/vMfd5sgNuYLDvptQ==,iv:qIQfpHxAOameSdDzOHh89n+RIOd9CcJcl0oRumSHAQQ=,tag:xwbQR5Jabvz+lEju5zuW2g==,type:str]
|
existingSecret: ENC[AES256_GCM,data:HkvfPP3KuHm5O81LrSA6Slq0iH88rg==,iv:nHnYsJ9uaRa+rKE20bVuxyruM7kepPX21Hhbl2uvuwo=,tag:YUxgSPhFyecT3ls2sEqEVA==,type:str]
|
||||||
certKey: tls.crt
|
certKey: tls.crt
|
||||||
privateKeyKey: tls.key
|
privateKeyKey: tls.key
|
||||||
mountPath: /etc/stalwart/tls/ingress
|
mountPath: /etc/stalwart/tls/ingress
|
||||||
@@ -84,6 +84,7 @@ mailService:
|
|||||||
# No TLS block here.
|
# No TLS block here.
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
className: traefik
|
||||||
annotations: {}
|
annotations: {}
|
||||||
hosts:
|
hosts:
|
||||||
- host: mail.vhaudiquet.fr
|
- host: mail.vhaudiquet.fr
|
||||||
@@ -96,7 +97,7 @@ ingress:
|
|||||||
persistence:
|
persistence:
|
||||||
enabled: true
|
enabled: true
|
||||||
accessMode: ReadWriteOnce
|
accessMode: ReadWriteOnce
|
||||||
storageClass: longhorn
|
storageClass: ""
|
||||||
size: 50Gi
|
size: 50Gi
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
@@ -105,42 +106,32 @@ resources:
|
|||||||
limits:
|
limits:
|
||||||
cpu: "1"
|
cpu: "1"
|
||||||
memory: 1Gi
|
memory: 1Gi
|
||||||
# Override chart defaults to add fsGroupChangePolicy: OnRootMismatch.
|
# Inherit the chart's secure defaults (UID/GID 2000, non-root, RuntimeDefault
|
||||||
# Without this, kubelet recursively chowns every file in the NFS-backed PVC
|
# seccomp, drop ALL caps + add NET_BIND_SERVICE for privileged mail ports).
|
||||||
# on every pod start (15k+ RocksDB files), causing multi-minute delays.
|
podSecurityContext: {}
|
||||||
# OnRootMismatch skips the recursive chown if the volume root already
|
|
||||||
# has the correct owner (UID 2000).
|
|
||||||
podSecurityContext:
|
|
||||||
fsGroup: 2000
|
|
||||||
fsGroupChangePolicy: OnRootMismatch
|
|
||||||
runAsUser: 2000
|
|
||||||
runAsGroup: 2000
|
|
||||||
runAsNonRoot: true
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
containerSecurityContext: {}
|
containerSecurityContext: {}
|
||||||
sops:
|
sops:
|
||||||
lastmodified: "2026-07-18T14:22:17Z"
|
lastmodified: "2026-07-02T20:57:39Z"
|
||||||
mac: ENC[AES256_GCM,data:JjN4ziOnd65U8AzI9ZnMiPUBiYFGqjGjM3HJ7XoSJuJ+fgYjOH+WX/U2IAfSeqEIMkzvP435BxKGoylrwEVM1k5v07slul5zEclPZglphDjiX+md403lVDtYEXdCSo0+3nqv1DFEQDkKItEEEz882sZBbhMotBHhgcd41RSA1aY=,iv:MaSmisJoj3aobpMw1HGgEOktegX2LtOaXLh3601xgvc=,tag:acWtTiu4ub7GDNp8nM/yVA==,type:str]
|
mac: ENC[AES256_GCM,data:8xnZW0A6hsysCDpfhfXnQ+NMc+VTSRwkMj4u2p2ERG8lj132dg5ErYG106jkQLXB3IkzxiAY9uyoquTpssVCOMemLRP9HgZmzqadI6kfpE2HZBHktgeY6MysF14RE4ep3naci0wVvpFiKv+sgr9QIbBmMnnN0pYwx5tASVFSgJc=,iv:KccW9I3LmxEmVfAnXjKz66FO1LgIO86zCFqp2/ulp4Q=,tag:xCNcgbHlttioSCvoZamwWw==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-07-18T14:22:17Z"
|
- created_at: "2026-07-02T20:57:39Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiAQ/9G7UtHO7Ux0YNAPlnkVmU5BI+crzwbWPhdaUZFf5dmCkg
|
hQIMA7uy4qQr71wiAQ//fdCucpqT55/e76AABnVcBvwM3s34HK33n+6bvEwE2jTr
|
||||||
r67EAi/DjqFHR9Ew1Dhpn0InTA/Ld+mGZAAbWeP7xhIEQ+AqACmm/Oxgf3IkHKzE
|
IPU6UXEZZzMCuGnSWSSy07hSX/0rhw6ETLIJmEPQkqOnxk6T3rcz9+8fLPapfLjI
|
||||||
P7dvco6lQO50W/m3fiU0Pv4A7w3Oq+AdFHcPr3UBi8YGYLgkCbzLs2r9JNviCJsl
|
sxFayU+Dw/s2rycErhrPTxgwLp3FBlnyEf/Zk22emUYiXnxZPoh4oXA8bjrMzSXj
|
||||||
uuvz438g92aXfa5JcyUjzxtxKFjzHrZ8seDx38X4fveS/mROpRqiw+G8aQ0BlXDM
|
tD5SVhvbHAT4WqTgG1cYgZ6XaDJ1eODqPXExJf6EekPlLAC/ohzgtPV44WTFj2YU
|
||||||
9wfiQtiM9CcuahPUWopv4RCOjuqrSc14sxv9xRGsYt1YZFxZ/4Q7rqM+HXBsFp4u
|
nVKouOGsc6ZUXkEwOm0HZcfJ5PuEOtCQsvD7BSKuTMbP5CUA9iuuBIhC8PmbCqxa
|
||||||
8r4MgE+EflrhKp1aWPGnSn2kalDy3o+yFuk7IhWsrSKsNIU4j1J5xCfhliey+kNJ
|
630fP2rDyVyaRucrjUgO7/N0AfaymYysSoRlqGPR/fgt0iJ/jeOu8POQMvK51IQL
|
||||||
387cVf7Bjw+iqoy+qiV7Q7XGip6NgF8WwSudZhznv/pS6LL5H5yHaKxjz5rny/TQ
|
Gtvp663bJpooCh3ALfvQsGmkpsdQX6QttNYUFyO8yRNDhbYKfT5Ha27a/xUdOEFA
|
||||||
0upK///2YGuiE66sBb8h2sqzIgr6hZecvb2VdY7BQX4FCo2uAmxTEh+h1fHlervc
|
Z/imx8fjjH/Anj1n30cy5w/9sZY4lmmxmf/zQMhJMGsTy5efWxbg8DYVOan/bgP3
|
||||||
i/03B9kNSjP5fSufhE9lsLl0oZgaFIKSpkzLlPdy6z0X5vDEXJGSL+qFudo9RKtf
|
1ZMLYNwLxg0CPRPrJuZbI2Iz2d7GertI22acyAF7OCGljwg4lL/SYPIs02cKYuKO
|
||||||
aaEwaQ+I+snmhWyBeeywxpdyRE5g3xhRwuwaxp7zzVt5ykCnyrZIPvzaSxu/QjaF
|
x2M0fpTo7kWlb5CWwDkEfwU14ZmLw8buAvYeG7KblG11kZtgvbWB1LqoXU5TMv4y
|
||||||
jCUmvPp0ZLzAB2xY9AMwOHIrym9lPmcBEEqCiHywCauOQzsGJE3vLF8x3/nzZnvS
|
gZA82VdTEUepOYavRMOaPScnyhCImdC/1xLH6gQCrk5qWZYVAy7GEvLRM19pWtHS
|
||||||
XgEE9z1NxK8o0ntL+JZO3+GYvm28Hyw0eXgDJbjJ+tlBYeWH8lfBUOsk2V485OJZ
|
XgHxDIdiNeTVD5OuVsxpke02osFrfT8q4ybGJF8KH0ykebuegGtKZuCdncTc5Hnk
|
||||||
4SDNvxzxpyF/4RJY4P4KR7HgwDC8gOCsDgqcyn1s4KzECXyQlqmrXxOrL8cFRhY=
|
wnJjZaHHqWGei7pGHWeN6FPQ0jSj8nMosQEpxs1X1UZhUG03t141nCgduTiQZhE=
|
||||||
=aeJw
|
=63dW
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ resources:
|
|||||||
- system/caddy
|
- system/caddy
|
||||||
- system/coredns
|
- system/coredns
|
||||||
- system/csi-driver-nfs
|
- system/csi-driver-nfs
|
||||||
- system/longhorn
|
|
||||||
- system/external-dns
|
- system/external-dns
|
||||||
- system/flux
|
- system/flux
|
||||||
- system/traefik
|
- system/traefik
|
||||||
@@ -19,7 +18,7 @@ resources:
|
|||||||
- code/gitea
|
- code/gitea
|
||||||
- code/harbor
|
- code/harbor
|
||||||
# Home
|
# Home
|
||||||
- home/home-assistant
|
- home/home-assisant
|
||||||
- home/zigbee2mqtt
|
- home/zigbee2mqtt
|
||||||
# Infrastructure
|
# Infrastructure
|
||||||
- infrastructure/authentik
|
- infrastructure/authentik
|
||||||
|
|||||||
@@ -18,46 +18,46 @@ configuration:
|
|||||||
disableNewSSOUsers: false
|
disableNewSSOUsers: false
|
||||||
PublicCredentialsEnabled: false
|
PublicCredentialsEnabled: false
|
||||||
authURL: http://linkwarden.lan/api/v1/auth
|
authURL: http://linkwarden.lan/api/v1/auth
|
||||||
authSecret: ENC[AES256_GCM,data:Qaxb9o3xtrDo9rsxHFpm6tkRd7OWPDyjiIyoPvc1SiIQIthOwXyHQ0b7YAW8rGg1vKBg2fDCIUK4Kgoyr26qUw==,iv:KFt4KqTUwB830flAmxfw7tQrLktacTtWmYDjBAiugk4=,tag:IAi0x3AlCdCTXz7MBryg8A==,type:str]
|
authSecret: ENC[AES256_GCM,data:UUZagqAY6+9AM4gMv9WFsWFSzjLxAALUz2iGg3dBIrpP+JCdJWVbXIRpZ8bZPJxvwnTcZSPOsLHlqzeqJRHubA==,iv:xgPnCNp2dpy8UG/fjEHPUxdXYXEQzFn3K/EX9lfjpWo=,tag:1uFZDdgGUvMvyKHj93z4yw==,type:str]
|
||||||
sso:
|
sso:
|
||||||
enabled: true
|
enabled: true
|
||||||
authentik:
|
authentik:
|
||||||
enabled: true
|
enabled: true
|
||||||
clientId: ENC[AES256_GCM,data:1u8Xe9ZMosAJWwPGZCloAFEQE6n0eTtBzaw149zsuL/yrVoiU8s7Pg==,iv:uxfiXfpocKbiFIu0dPq0So6Kdfr3iMFUM4hRJm3eQPQ=,tag:BxgV/Wl2ZE80+08uaDnsDw==,type:str]
|
clientId: ENC[AES256_GCM,data:6XqAMjwywGgZK23ywm1GKWpIhIrXNa28Z52+0J1yhocBxLXoJAiocw==,iv:DiIpcD0H6wnIkXCMPmhLEHTzE6qKQrotGZ7q7Lv2iME=,tag:Kx80RoPf7BFMWEO1lZ4wCQ==,type:str]
|
||||||
clientSecret: ENC[AES256_GCM,data:LBIh0Jc2MtS5pvOhmFbWSrQaOMiM05e2i5aeMbDJJGNArQ7PGK+okbltWnZHonIwGU/sriFm/x4BMz+snrd+NgTUR2aPPXnomK6f9dEmSXNjLxgnVFUmgcT2P7zqlKUBjMT+SKjZLELfYGzysKTRkXHOCrOoGX8ZobEgOXGflpQ=,iv:iADfUCL30NrwPPof7r/ppO3Rt7ap4RoOkKpBuzyoO8A=,tag:lrt50iqFsZcEdBx25BY0PA==,type:str]
|
clientSecret: ENC[AES256_GCM,data:OO8vjjWVxzUNuY/Jhk348RykWnVRQ/xthunOyI4XVzCmT0WXAH/uWSupljfWQW8aj4WzUUHMpJOvFpd3iYTExFn6QqyBisOgVzS9jy4sP4qdhnSpu9jXzEUNmKyjQncl3QTQCcPZMjlGGf0oJzZgHivVWl6rFbnYQOJHDlu3r48=,iv:H2OvOpH2yxUivH8RTvSnM9k86i9jUJKcUmNPpSSos6g=,tag:XXTyOC+Hj7BvgZJ7qxEZyA==,type:str]
|
||||||
customName: Authentik
|
customName: Authentik
|
||||||
issuer: https://authentik.vhaudiquet.fr/application/o/linkwarden
|
issuer: https://authentik.vhaudiquet.fr/application/o/linkwarden
|
||||||
persistence:
|
persistence:
|
||||||
enabled: true
|
enabled: true
|
||||||
storageClass: longhorn
|
storageClass: nfs-csi
|
||||||
postgres:
|
postgres:
|
||||||
enabled: true
|
enabled: true
|
||||||
host: linkwarden-postgresql.linkwarden.svc.kube-talos.lan
|
host: linkwarden-postgresql.linkwarden.svc.kube-talos.lan
|
||||||
username: ENC[AES256_GCM,data:eUTE15OnJZ4dBQ==,iv:bN7y9EwD9rzzH3pm6JJvFkSHmdXkCunui2tyerb3z98=,tag:apU0hdiJbp5fgKjesLfdrw==,type:str]
|
username: ENC[AES256_GCM,data:N+ozpU6TgAZSLA==,iv:XJT1fUe2XqSxpuuPfmzbyrJUUInUEhLyNddOX0jogZQ=,tag:z9rCjOKISMT+wpfwUzFd1Q==,type:str]
|
||||||
password: ENC[AES256_GCM,data:qA/FQZdMQG3vdQ==,iv:S0fBAfNiNUi1t7coaKFLloaXolv7l//tUVnSui0Tmo0=,tag:SbW/QBMoNqUSENkSCR83AQ==,type:str]
|
password: ENC[AES256_GCM,data:G7dF3Oo+1wzL9g==,iv:yAjh22rwaBhKtHgYAmQEjFSMFspOpG2hThwwjAo2KJk=,tag:DdXlyNk+TfR0IuSpQG3+Zg==,type:str]
|
||||||
database: linkwarden
|
database: linkwarden
|
||||||
sops:
|
sops:
|
||||||
lastmodified: "2026-07-18T14:22:17Z"
|
lastmodified: "2025-09-15T21:48:06Z"
|
||||||
mac: ENC[AES256_GCM,data:DoHEvtWEetZGb/lCzQalLAMUlAZ7OVG66bDSaGY7s0i8mhDzRxrkvPq7FL07rnDQoLSW+SFSq6h7LB1PV1HodW35b4rmDzpCCHQ/S7Gj8WW/sX0t6dFpF1GlYeseqAMtNMPeMf095Q9LIHmQlILmjPAKbAuOg6shQ9oIesBzSDw=,iv:3D+wZjBHp0gZRDOvmVHaTIyZlC9IzMupvXfbvYYZVm4=,tag:ui9jt5/F/9NJ08P7MD+7AQ==,type:str]
|
mac: ENC[AES256_GCM,data:i9Mg17Z72cBJOSvmOlHkl0x0/FqhpCqS8iTGTYKlXacXi9E0nYYZr/y74qVjhubEaI1y6cRYXgaePI47lkyfvTzB3VGEpEs/y5fiL+PfiuV8Z18J9244+TyoasYR/a2sdRuJcY5jm6PSTKoGiwGnyZEthVwt1T38yr5msW3D79A=,iv:yj7uCySaoZcnO+7XsgB1EMfZOMwHSA0mtJXUq66MUgQ=,tag:YRvUG0/hj8Bjp+pMdJvePQ==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-07-18T14:22:16Z"
|
- created_at: "2025-09-15T21:48:06Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiAQ/+LxkvBdTDic8D31VBAtMiKJJ4nHAIpxja6gHsyVCmS+LP
|
hQIMA7uy4qQr71wiAQ//dICUFaREdeVKhKkK7iPji73IRFZEnwoZwEnR0vtCBL3d
|
||||||
VOqnEvvEBxf3ifXqwlYh/rY7ywjMyuQAW03zIlNq+9Ufv5QV9Py+UTiQV1mfmRoa
|
HXFfdXUMOVcXOvkkuF9zG52flUZBpVgilQz2W8Y7xI3tU8xX6wxmuz8LjegidCHk
|
||||||
73kINswzbUGvH+HXVkcRGjusS/StPMWKC6jwyrov09gtTF1rJUfcfenqy2waHZOk
|
R2xKAJ5iCEWZTIouFwg4fM399Mm9xhiIPuM4+25DAZnSJJAc7fQ2NaNaA8vjbJQ7
|
||||||
JhwcxhrPUnHGOsv4f1+91CCjKHux3/FVagpxJcEvxckMJweuZWm59z77dbwF1lQ3
|
YUnqkmE+QPGbyeykudlTFfl/zZzrgKbQqWuUmD/vq1XckUaPxM5cdeFDsg87AZCs
|
||||||
ws4VMLKzt2wiYSULCDr5KM2YlYWkvzheqhwnOVKXk11ewM+6n8RHIvsE03nvkfRf
|
o51lQ39b+CpWmdbDbJDF5nMWUrCzIz9okptoNfHM/5E0Jg53JBsXBvsqwWTOI5vo
|
||||||
tJduJYmXnz249SM4hq3GvyMq+j3qShIMvvKRMv6+aYMZ3SFzAIxtV0dA3lCoA9oy
|
djilDfsyu5nQj7UDstaax839T7P5gm5ass2/YtIjgrJUczyRt6vS97zuXLsbEGpH
|
||||||
mGWvImrA7JX4GsG44tEzu0ECvoFV8lEb39QKBXBf8fN6UExasF4pSm276ZGG4Eom
|
6hXHan7OormqbmISnFrL68Q4w6JUZev43bdzqtX0EnYHNZVLXH3qAxD5EnuL/i20
|
||||||
IpfpuaB9oYL4TOEH0/56IEc2BRlvAm62ibra5jNCVLnLB0pzE3KdN7ZYMQyXooZi
|
oY/oMEteFh86Smw/LXwtWjVfPKYzNQ6GTkTCzM3hVcfMOzdFVPgYDM+5EXF+/oAB
|
||||||
dOa56z4KidI4N5oDTc63Hkg0tApdV0x+Rtm7qgdhEp/1i4zqciQqb8//yN6CAb7I
|
+BGqZvWW4G3G9sbPTRSJ1k+toWuC/erY41r+g3+KHbW73YdqIVwBsTDAFhPPNbe5
|
||||||
DkyPilrvNkZw95iGqpKVLrAp57BaFHLYNr0O7+WS9urCIUQl3Q37Nz2HyNLJt0Ej
|
hnr1JFLQ75GHdDRnKRl3nZSPc2j9JMUtMhX+rKwLb/0DoVjNz0lFut/Tj+6xiG/1
|
||||||
i3VgiJUIoy5NcAIBIFvuAJDsXB+FQxzg+7XUZL44xxsSvA248Shz1CYH9CgwbszS
|
SqHTpROU1tkip+rP0shzdu218+hjrzj+cDKkawoqmpD9gOm83P7YEqrIwcBj+TPS
|
||||||
XgHdJTIcrq3ReybtFVDPtqMkLyItA1fbJzpCr4Fwk922hmEpqBeMHx1Upy81MZJj
|
XgE3UHtwHdJM38kfPm1fkTuCejlAQ3Hsz6W4PSbXJfY8w1gO241dEzy+b0At9Rv2
|
||||||
T+4v8xBo7KR/6sx3U9kO/TjV7AhdTJPRlgG0WfnfLMncCkrvg4cQWxEIkySShFo=
|
6IklhRBAs4ioH/hD653yz0mkCYRpOLYDJU2iMWZdv61YLXb4rsnAwr6xLbDHDXM=
|
||||||
=XPzS
|
=69Pc
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
instance:
|
instance:
|
||||||
name: vhaudiquet-notesnook
|
name: vhaudiquet-notesnook
|
||||||
api:
|
api:
|
||||||
secret: ENC[AES256_GCM,data:R3pAcgHfCeBrgNJ8Fc1lvNU3sUcWicIglZDtInaOzw11s43GaPPiR6t3lGiiN5oA,iv:xUqXD7tMrjxzBwIk051d5DeVOGh57O19ogt5RPHQppY=,tag:sZ+HgFbWv5jpia+D/tKqnw==,type:str]
|
secret: ENC[AES256_GCM,data:C3mpoEG6y6IShpX1+o9eNn8NACaKy8s1xw5tY1/ncBzqaKrK3YiE7K0rl4d6Bq6q,iv:rGWxSmV98ef8Qx1jkVbQEKPkFmGEaCOXXFFZ4I1US7s=,tag:VBDOhPRTRRhFu5cU024Sqg==,type:str]
|
||||||
knownProxies: 10.0.0.0/8
|
knownProxies: 10.0.0.0/8
|
||||||
disableSignups: true
|
disableSignups: true
|
||||||
publicUrls:
|
publicUrls:
|
||||||
@@ -10,8 +10,8 @@ publicUrls:
|
|||||||
monograph: https://n.vhaudiquet.fr
|
monograph: https://n.vhaudiquet.fr
|
||||||
attachments: http://localhost:9000
|
attachments: http://localhost:9000
|
||||||
smtp:
|
smtp:
|
||||||
username: ENC[AES256_GCM,data:FXfsyRX1PD7rG8TKGtQD5yj33BY=,iv:rb++wIa9mr0i9OJ5JMv27aETxuyUfCDOKGwp2u0wUUA=,tag:ZYg/1vHTGypdw597lU4Itw==,type:str]
|
username: ENC[AES256_GCM,data:C4dTnVaJCwxqTdevLJ+a9eJOWPk=,iv:9iHoQzZjHjmOuaoOWdedPHuv06MqtXZXJhWGiTdzhwE=,tag:xDL+WInm/Ms/LuZi53JuHA==,type:str]
|
||||||
password: ENC[AES256_GCM,data:3lYaORGHK988XBnwY64=,iv:Tc307c0DS6kTXGySSgJMhaceDqps+pyNlKqcab9UHho=,tag:h7e4pMLi5sVyqIgNVg8tZg==,type:str]
|
password: ENC[AES256_GCM,data:tIkKqwVBy94oqFJH0V8=,iv:cOKiwDhngz6mnZlD+XSfWFg1KZa+UCkhXKBgjK7IdnE=,tag:91d/aUlfeHbJqtRWPmTskQ==,type:str]
|
||||||
host: mail.vhaudiquet.fr
|
host: mail.vhaudiquet.fr
|
||||||
port: 465
|
port: 465
|
||||||
ingress:
|
ingress:
|
||||||
@@ -37,68 +37,28 @@ ingress:
|
|||||||
paths:
|
paths:
|
||||||
- path: /
|
- path: /
|
||||||
pathType: ImplementationSpecific
|
pathType: ImplementationSpecific
|
||||||
# Failover tolerations + affinity — allow scheduling on p330 during r740 outage
|
|
||||||
# Applied to all notesnook components (identity, notesnook, sse, monograph, minio)
|
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:VxDGa/LUCm1t,iv:6MU3sqjnkm0Gxdqt8tD01Fqxcg9oK42f8K9aHDQMDY4=,tag:9liOuvSqHNdfVcRfephFpA==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:3HkYc/Zk+50=,iv:P5+YjonnfjVkMmO+6/HqxEO/AyLxNlIIOyqi3gyYXRs=,tag:3XtUzwXJ3vQiMEe+3R7lAw==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:JqPxmvAU1+nMu4YBnp1deCH/y6byaGc4hrfKbVFVvqGdr1XgQA==,iv:/YKU8LhYfzp3gUOojTTfPCKqLgL5qSncDYTKlLmyrqk=,tag:wFPEWson8XZPNPV3kXnGPw==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- weight: 100
|
|
||||||
preference:
|
|
||||||
matchExpressions:
|
|
||||||
- key: ENC[AES256_GCM,data:dk8VoO7VNzvfdQhZyP+WnhO46ak=,iv:tkH2ElerO8BIALsvUNJIl/qnlGVdOS76DPXRi2J+ovg=,tag:XYMz3w8GthdOV3x6+Ybkxw==,type:str]
|
|
||||||
operator: NotIn
|
|
||||||
values:
|
|
||||||
- "true"
|
|
||||||
# Subchart tolerations — mongodb must also tolerate p330
|
|
||||||
mongodb:
|
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:1TnuKgSBqYCU,iv:nSK4pFqVnVxioaZSp9rwKFyEyIbyxeEs/2luzKjnwLw=,tag:jgA6oDj0foG2YjAieJLE8Q==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:9sKq4+CgI5k=,iv:3jA01Zaohix3HBe8FnI9VzlLXli1ZThWw6JU5hhysYQ=,tag:8qdivZP7PwGC4gnVNuUupw==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:8PbTBL+v3LluefFLYxXUmgQw/ROlIL4nLJVDqrVLvFvrtUqWbw==,iv:khQcqyoBLgsDk3hndnqKGmSdO9e++5o0M0PTNq6jf9g=,tag:8A4f/zp7DimjAKGjdPbvuw==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- weight: 100
|
|
||||||
preference:
|
|
||||||
matchExpressions:
|
|
||||||
- key: ENC[AES256_GCM,data:Q4SFghGuAo8RjD6OYqUxt9sYlfU=,iv:TbR9TmGAmzSZg9+/ZDzsGmt4yA+KQBIDPnUQbQOogTw=,tag:FbEPi3gxlpJuxuerAruTmw==,type:str]
|
|
||||||
operator: NotIn
|
|
||||||
values:
|
|
||||||
- "true"
|
|
||||||
sops:
|
sops:
|
||||||
lastmodified: "2026-07-25T12:44:32Z"
|
lastmodified: "2025-12-26T18:18:01Z"
|
||||||
mac: ENC[AES256_GCM,data:+vnDAlFBB7zP4YnxE9fqNa9dawgeuCB2vTet4yh5Cgqp36p1uPxg68uaBeZPrBFBj2fjNs3g/C22ny0/ui2wb5+pGorzXKxVpjWX40hMXyiCQwJXejlZCiXKAFLmOQMiv1oJQQ0PqhAeOckhI5dEc0D2PAUynXHAXh49xNrzcVQ=,iv:St70rkrQpCA81MpPpxyUtXQyvGccy8pgEJUOrdF7ihs=,tag:l0YZdLDkfu1miVMpDJD4FQ==,type:str]
|
mac: ENC[AES256_GCM,data:Xy9P+Ifuz18apN7GoYdehc2bzTjUKMJAT7f8HZNTnvV/wkZEt4EUGJL2WGex12nYQyj6Ut+I9pwFwwX5m0oLO82s1zS2DK3BiaxFa6LFJ2VDUthKt8h9ZTNeT+2P5S5cOvEMvS6tljX8y8/HCUwVMCXGMNCIl8RtWo1Q9CgLjrw=,iv:6MdJwJh3xVrXX6sKCQMAEIpdOD8E0V6+305xcaQnnMI=,tag:5JE9M09u6ukPoQBzT9g0sA==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-07-25T12:44:32Z"
|
- created_at: "2025-12-26T18:18:01Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiARAAkDKwwK82i30IyWe3/35JGxQJ1NoFc6bbKnFBW30JFR2o
|
hQIMA7uy4qQr71wiAQ/+KZ6WDFaDTZVt6n+pu1hwxhNC9ShCSSLkiHlZjtX9DW8O
|
||||||
7vVl1e7eBfWwIZ/yD+fHkyiskYe+UWT/ZDph526JKXJxuiZ1XPzCBQ2iD8hhABNi
|
eizwH6GAG8LQeKYr61aXXVwxsqDdM9gx/i0ynDO4fflqEQniEjlFzBeVhsqOf3CX
|
||||||
/8YrlLd/R3kjGebXTAZ6/+/DijuAeiVxyaiMDkmo2YXz8x2+nWXV7I5mxMqDdTwh
|
rL5WImv0LSe9KjFNAZvfBhtUVENfN/Tu6RGagNb98ChOoH10MvmrzQ5t754AKPVM
|
||||||
fIldLmX9IJKDJrAp5RpFn+g5PIwspQJmA3s86FbMAolLAHAUJ3zNCy1D17LFK+kw
|
hB2f5kmOn0evFQQftYyXkQqzLvhlqdGGfBnCutXDoLz67RQwB37npzXx/c+GtlOX
|
||||||
X34yHZPwPcbP7udIhGMTZvpUawPkxXBBJfTj6ElBWhR+8OHP6zgEYTZyY/evMQJO
|
Msmp4wiYqlX9v97vjLHUX/ZeBtzm38DzUw+OTcnDPbsdZpeUMqYnpkIl8GIgSd2D
|
||||||
fr7n0rWv0gtlNymfX/xyRo8JuVAW8Qh2bOkFh7+fmlMAtdrg6MXVLyGIiQBh1NIN
|
2jZUJU4wYyOCYCnfw0+zXu3O5/1bzZ9fdc5FH6A+OlJUFbMLPXx7n9uhVOztxQ1g
|
||||||
8hQz++ZrOMLx1hoxqehZ/lKUq6ZJTzqXcfMZHipFUxlFVVA9zD+qM0TUxiliTdiy
|
5ajZKkszSWk58IvaTueDL2QjxhJLop1y4JITgzOhiSPserXrizGn765bVEAtY8kR
|
||||||
GJlq61xwmvRafbUrpmNcon202jJCYJ5g/K/PFmSx8yTa7cIp0FOpNbZIrTmnFffI
|
zgULAG5f41zeoJzzdMyuCFUlIJec4DFigbe7fRul4sJEjeeHtDdyINWuUXCnS4ZX
|
||||||
bJv0gYk/3f0EiTEjKAnl915IUj7KSRGWS5nH5RRuVLw575+glnDwhB9gax/uZN39
|
e8/ZZ0+z98IMm7Lstb75rUezTUdlIxfJ+EtAX3L1Bdb4yJZ3i3E1VTQKWxaZWrcc
|
||||||
gUuRiMm3MeQJ0FX6lYOpu1+3dnEZlaCMhJw4Lif571bOEi4KBcMAuHbLBfMmoL5N
|
zF5nOIZsHgD22Um8fA4mDlhX5/ygiKMHxZe2pdwps4F7H0rRzVLlM5n4g+71WeMe
|
||||||
dfuwNq3s+kWfu4lAYwxrX3ThvoRa7UABdmvJHqo+raAlqShjKjNxLs9IAL41+m7S
|
0eT4atgKPICzMNkyRJ/KWrtk4c6Kq7sSqpQKlcFsRLMga1ZBt0LQwFW+G7PU30vS
|
||||||
XgF83/ecTRqQ2f4gio7drRr6K5QIPrG/UVuuzghqfDTdzgNXRbTObjDxiifBjcGd
|
XAFljxtoFrbdc8Yl37cQh9XCBqXMqUXSNd9t1hsgv+Vsrmv6ntPVStep8Fod/n16
|
||||||
MBxTQvtvxjLObgO5s7RWZe78/1/4T8hOKYW4qGGG7iO/lggqPljHMVKyLHUzadE=
|
nCACAKTOe//z0OmwUXxdUCIqT/N+XEA8tOrHS+HsbB5MCfnexLDul/yUfviZ
|
||||||
=UGsX
|
=yK0X
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ persistence:
|
|||||||
originals:
|
originals:
|
||||||
enabled: true
|
enabled: true
|
||||||
type: nfs
|
type: nfs
|
||||||
server: truenas.lan
|
server: truenas.local
|
||||||
path: /mnt/main_storage/valentin/Photos
|
path: /mnt/main_storage/valentin/Photos
|
||||||
mountPath: /photoprism/originals/photos/valentin
|
mountPath: /photoprism/originals/photos/valentin
|
||||||
mariadb:
|
mariadb:
|
||||||
@@ -36,27 +36,27 @@ mariadb:
|
|||||||
repository: bitnamilegacy/mariadb
|
repository: bitnamilegacy/mariadb
|
||||||
tag: 12.0.2-debian-12-r0
|
tag: 12.0.2-debian-12-r0
|
||||||
sops:
|
sops:
|
||||||
lastmodified: "2026-07-06T19:30:14Z"
|
lastmodified: "2026-05-01T22:39:49Z"
|
||||||
mac: ENC[AES256_GCM,data:QgOnL1dsq2S78nRD+xe08w3u0+bRfNML/ea9P9v0TBCQq5EmKj6yPKJApvttyeGUDJDGo9Ds17a9XLDFtOl9ORoax6E50VqJSnc1ElE2l5EFogl3JPuMdQxEzXniaCjOSrfMNWNdo7fHN/qcX0Gzs7BL9pw+NyQLv4kFcDYQv78=,iv:buV08iLiLB5BJ5JYfn4blmFb/eu/EtpnWsxT5IfyXfQ=,tag:8egGKWNa7CEql9t6zWHlOQ==,type:str]
|
mac: ENC[AES256_GCM,data:YGVQb50DrFv/ehU+dxsoP/e8ARKVPfr/6c2x1pQbZ7cNiNu7k1Zgt+bEHkkKm+FT44bltL374Jf2HqT/0gvmgMGp/8ukjZ5hRLwbqS1fOKR8SVQ8fp2EId0P7HcRl7Qqr6lF15hKXQ+SPl6KDPvDWKh0pq192W8dP76D7h5aKDw=,iv:c1xytratCfO8V4nkdvxeKT2kWOYHBkwoTc5Ic+yjpWQ=,tag:kdxAidCO1VLPxiwq3eCRxQ==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-07-06T19:30:14Z"
|
- created_at: "2026-05-01T22:39:48Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiAQ//Qg0OcwKr1mG40IoYmABD8b+/W+X5zTyyht9QCpNtRSVO
|
hQIMA7uy4qQr71wiAQ/9F+u/hWM4smi4yqnU7vzRfWwjCuvdtWAR6N4MqiBLFfqr
|
||||||
JzhtMl9YZHLqwkiwBqW+hvfIKXYtYBNl2TsAZ57xcE60lr72bHfqXkO24hf9+jvq
|
tpzY8UCfaTlfEtwDZWUSN/gzZG56YcMTR6OOrCQ8rkiKYGwuj92Z8LgpcDRBAHeG
|
||||||
jmFwK1Mo/zf0/b3R8gFqEmg5mW97jdmEXHfRrzzyaAXhGk0rWfLGBSbaif71a/dj
|
gYaNG9vRmmzyZpD6K6pSoG8lk7mzB1Tp80me9E7LJTDhAn70cDATLp1wADkD0KF1
|
||||||
jVu+Vf48LsEnUYH3oO2ASY3OlVwKAn5njfyIz2MWwY5iohOsiJwJu2WiotI+zCFI
|
pq44qPcRaem42kEx6Um1sAy5NiBBxvYqdKPRXLs0q1EyZByxKjlhZi0qasCfe4lJ
|
||||||
VOfftPCYvJyVKGG5bE3GHOjAlbNqHtRCn9Bm/mXQVyLkAU9ik+i1PABGEU9nc09q
|
fsdduUgRi3Td7KvfhQ1e6jjNNMpyZIHbME3Hn18h5PxVd1B3FzzBzSHlaDKBQsYT
|
||||||
+IcO3Njo7MRtZU9pctMZLvRSbxvEx2bZOKSXe6nhVK324Qr0cETX+/GuDZn3SeVy
|
2cx6VMGVqM4dy+CHkpE+QlAA0EOhS0b/7FwppCgEhlEvbH7uCjq/13vZdKoUIwqt
|
||||||
pyHR/BtpGXtqyWsaQyCvPUyOcU6IV/QP1P/8ovCK6Fek54xqrptTCYnov7U4VTBN
|
AaHPaf/HX7PipQjoQf7vjfaMjPwCFwqoeK2cVNmgK0j0b2CyjLDDs5xh0SuFt/Ia
|
||||||
WhVxpTY19ZlxPxY+umhhg4bTf6oiRKGMXPe3MlYTGN4DTF3NE8g+Rld860GypHTt
|
DviSBGNeIv9Vhm7jhlJH0odFzBmBOkiUyUFV1h/6u2qpjz+H+qAX+5xx/++cGkW6
|
||||||
yHYr2sdibLV34JZk8W/E1S5RTeTWjKxMUHZCYaNadQEQRwyRWmFTdHkPiOLHOBru
|
4G69+7NP6JUksSbcvAl6Nk1sRsvTrcRdpmBO42/aUq7nlgOAxk9e0y7INYHe3Ycv
|
||||||
TBYAZJHP4DFegHL58+Z19vjdHtOHWMQWWKYNvKzV9m1lzbgT/MhrHqeGEWSQ9Tu0
|
N7ZTm7VOuIVopQfl8F2/tOIdJIm6hJfmJ/hdhxbDZKSRiejenU7vgdQgTM+PQ0l7
|
||||||
kcvDK9iTfjgZyISPe8rpDM/6YZMSydSUgQ8TiE6YQFsJ3rkyRSEKSkH6CcqUD1jS
|
0QVRP1mahh1EqsyqFrrVpv+o7XQsyldb8KCefWMEMGHrot944YTxzfwY3riaPXfS
|
||||||
XAGv1EpFowmHVUXzMY1TciufOek51nEDfhbzpCX9QeyKIn7MVAZSWhn83vQUBNiH
|
XgESSHvPYIgLIj+6bvvopB5v2q+NwfBciOrZekmWYTkN6cFOizp36JKIOA4Dq6z5
|
||||||
Y1wrvUB2X3egY6jQVv7nalsNvU7CeEvzxi1YrM7YtoSO6yPY7z2A6e/4Ev0h
|
0hwGgiPvYsu9WgbWYUY21qO9jvDmjT5Yym5ktbNogckXw3/TusVqPeAkdNIjZNU=
|
||||||
=krxN
|
=PSUH
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
||||||
|
|||||||
@@ -2,7 +2,3 @@ apiVersion: v1
|
|||||||
kind: Namespace
|
kind: Namespace
|
||||||
metadata:
|
metadata:
|
||||||
name: vhaudiquet-fr
|
name: vhaudiquet-fr
|
||||||
labels:
|
|
||||||
pod-security.kubernetes.io/enforce: privileged
|
|
||||||
pod-security.kubernetes.io/audit: privileged
|
|
||||||
pod-security.kubernetes.io/warn: privileged
|
|
||||||
|
|||||||
@@ -39,50 +39,28 @@ nfs:
|
|||||||
storageSize: 10Gi
|
storageSize: 10Gi
|
||||||
# Storage class name (leave empty for default)
|
# Storage class name (leave empty for default)
|
||||||
storageClassName: ""
|
storageClassName: ""
|
||||||
# Allow the pod to start even when NFS is unreachable (uses emptyDir + initContainer)
|
|
||||||
softFail: true
|
|
||||||
# Tolerate failover nodes
|
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:whCOkQ/xDUyG,iv:MU1iyLWTp21dUA0Ukn7L4Kdmp4DcD2946/1lHrgNJJg=,tag:VdVgjP831+lV9IdabEYvOQ==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:IXlCv4VONI8=,iv:/7uiSYGVY85/8nGgnQjeO+hClQPqWEJWOMwEZs1VuzI=,tag:gZI49sfALmsfaxjF4mP4WQ==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:7MK/rNoqAhDUJh3O4r0b47PVfT3ItjnnCOKJWZCThzHNIrw0bw==,iv:hUCE6+NwucVw5lwktzOpXRqjG51w4g/AQceyBiduu+E=,tag:DWGdD++4ZptIsSmLpwZAsg==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
# Prefer (non-failover nodes) in normal operation
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- weight: 100
|
|
||||||
preference:
|
|
||||||
matchExpressions:
|
|
||||||
- key: ENC[AES256_GCM,data:EDr52ZzUZjtJe+oxleIJZZCYCl8=,iv:ZafjjEMMaWYP7JKAhnRkMB9kFghd5LB593mUELzDLwQ=,tag:4EChdzHuvLSxY+fEum1Gzw==,type:str]
|
|
||||||
operator: NotIn
|
|
||||||
values:
|
|
||||||
- "true"
|
|
||||||
sops:
|
sops:
|
||||||
lastmodified: "2026-07-25T08:12:52Z"
|
lastmodified: "2026-05-14T09:33:46Z"
|
||||||
mac: ENC[AES256_GCM,data:i7rQRSLbo97jjEksr0NlQzaW27RmYpHwupe+KSAk5Y9yCSN389EKDWGiOlnCbIDAFuvAeIwZOtZah39g1F0f6EW4UWhxP2URqhFtcc9UeDExEi15lbI0/6cgWsv3mHIZb6WPp8dHrfF0JszEPinb154TB3PpUmhyLkY6gghTYBY=,iv:d/pCDDw8itNu9NCkwTxPbr8w+unmSFrjbvaw6KYlrEA=,tag:x+0Us26vvNcvDyn45ilEQQ==,type:str]
|
mac: ENC[AES256_GCM,data:R5ular4bAyV0cFPGUGYg4NWCGI64rWTax6ObBnCadORwSTh5/VQN3bsDDPFC3dep/7nKzY71d2X4qAcVU3RkWa9eMP+e9dhaGV9/8gvY/qDXZiNEuAXsmpaSATgUo6mUwqrwl5tn4ono4ID8gr7FRVpneTbYX/HpiWDbBa9l1Xk=,iv:wQ552gswkX5aOy/Cht1zY56camnb8EhEwy711osyf4c=,tag:t+U/1wRD7/z39KY9zjNcMQ==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-07-25T08:12:52Z"
|
- created_at: "2026-05-14T09:33:46Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiARAAr6IcISfUd787wl46NW/mDOEv+sQCBCvFUSgVUETIVB2W
|
hQIMA7uy4qQr71wiAQ/+JAzu9u2Dgn+lA58pIhRbM1064juEOvebtBK0FdJCi7AG
|
||||||
lryFntO+jxYjHYTDoevCimyJpFWai6YzkBvSVb50xXObpyHgjLl3IgQx6B3LZxk7
|
/Up2oooBmLMxybk16q0800kZHgOAcqTWkRcDq3QhC7nK+xcs03plTLLAlqfnh2x0
|
||||||
mwIgpa/mEyvlP06GzU4NZy3ac0X9bKpQo5IcU0nwfs5ZedCZ0i8FN76PUp/nIfFJ
|
XyqQVk4du9caRdgvgN96tG+oWUJcuUJ/uFunXAzRvPnNysS5sGXVKJmbVVKfTjqk
|
||||||
6AzjxVzcJTDDEPu1ckn1g3sRvLsGsQVzagrLtyEFbYxKxugSE2sswYCMjbnxwMpW
|
UPyA5sBbCIxW10kPZJjprR1HaRl2dkgz7jZI/q2RXhFjCOhthMErBFr4f6xD3LnN
|
||||||
NTWGal/6eW7W+oR5iJseYnkFz643ZbkI8BLyEuJtCql14kw5W245FZwbffJQpGpU
|
H5XVtixNcVmIinsGUIgvPW+qknjrf17ammgEtOqjtuu4PUevQFt4zkVyjU0Y/ASj
|
||||||
NbEuRjbVCF0tDwH9zEPNlBOsrmw0FM2HB6sBCMHA9xexuhP3OdIjWuyNHf6oMwS5
|
HAyYgSNIAXanb3u9ulL6CCg/CXJSofTrexw5RPM9eTQQ7S1KqHm/Ns6jjl/jXtEW
|
||||||
d2FCOT8xrYBWNOwcoe+xgLam94L2jPcL3SizP7AUEQU1CjXO5q49RvYjPrrgH5zb
|
cIQZ5bQJPTJu7W9gxGpgaLmWwGfoDWvmT2rIFYC9tf+61F4EbRvY6KepKET9NYTJ
|
||||||
PvE8yiB1zDPcTqnBf4O+lIUkdEQ0IxkVWuYKljsaJN35yNgFkCoROaGsZD4IcdD6
|
EnyDoxRsfVgxwQjyqpIpmNewWpgWwcLbD8INoJUVx/Yr284F9pBCgKqKRmeNH/Sy
|
||||||
EgtYAllK+NXdzd2/iLHf63J4mJsvRHzLsWcdHZwvJxi3RN5Gi18EB1boCEhFM3Bg
|
kEt3QD1ElohuwTx7XLkYf6LuDFy8kA5wFUPKUgxmoFsGZhMhmi8ysUkUxtYPPMD8
|
||||||
KkaNDNwZtWtLl5QLkfO6zTEBx1E49hGRlE1nuDpSbqer7cL5n5Ca5TRAm0BqAC5Z
|
YLVOK8UX3sYUDdY7tQjlgz6nhMqGL7ekqxyA5PSCGlhg5siKIhltz1CzadNOrsqF
|
||||||
VIjt5CqNcojTVsZLUsYMwq/yI2Lij8/OdM1datuNM8RD33mE+tDB3n8WdNFgN8TS
|
jHkiUCrDNu1ToRPllOw4WMwSzII/sf2oP3FJyE+/Rsl49rVjELLfC8eWPhG0yhXS
|
||||||
UQG0emw3jDSkHQHVWGc2iPZ033NobqICdv3xvjyjdjngDWEtPj4OoLmriqxi0y7Z
|
XgGHbmvrm1QPl70dF+896QE/XtSydiqLUynCeIAvh61//ipS9lSZXpdDKEP5Q7ZD
|
||||||
LhlZa4RWyBc8TWe9Q8paBUh/NzFGC4v1zt8mfUMSjYfyFA==
|
/lTbPRH7Y7EZUgarjBtc2wYg3iaBkELtS5lnQeJawHQ8/M3TxdWmgEeBim/qr+A=
|
||||||
=ePQy
|
=K+50
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
||||||
|
|||||||
@@ -21,9 +21,6 @@ service:
|
|||||||
enabled: true
|
enabled: true
|
||||||
type: LoadBalancer
|
type: LoadBalancer
|
||||||
loadBalancerIP: 10.1.2.148
|
loadBalancerIP: 10.1.2.148
|
||||||
# Cluster (not Local) so any node can forward to pods on any other node.
|
|
||||||
# Required for Cilium L2 announcement failover
|
|
||||||
externalTrafficPolicy: Cluster
|
|
||||||
ports:
|
ports:
|
||||||
dns:
|
dns:
|
||||||
port: 53
|
port: 53
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
# This file contains all route definitions, imported by the main Caddyfile.
|
# This file contains all route definitions, imported by the main Caddyfile.
|
||||||
# Edit this file to add/modify routes.
|
# Edit this file to add/modify routes.
|
||||||
#
|
#
|
||||||
# Certificate files are mounted from cert-manager-managed TLS Secrets
|
# Certificate files are mounted from the caddy-certificates Secret
|
||||||
# at /etc/caddy/certs/
|
# at /etc/caddy/certs/
|
||||||
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
@@ -17,7 +17,7 @@ data:
|
|||||||
Caddyfile: |
|
Caddyfile: |
|
||||||
vhaudiquet.fr {
|
vhaudiquet.fr {
|
||||||
tls /etc/caddy/certs/vhaudiquet-fr/tls.crt /etc/caddy/certs/vhaudiquet-fr/tls.key
|
tls /etc/caddy/certs/vhaudiquet-fr/tls.crt /etc/caddy/certs/vhaudiquet-fr/tls.key
|
||||||
reverse_proxy traefik.traefik.svc.cluster.local.:80
|
reverse_proxy 10.1.2.171:80
|
||||||
}
|
}
|
||||||
|
|
||||||
*.vhaudiquet.fr {
|
*.vhaudiquet.fr {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -32,37 +32,8 @@ spec:
|
|||||||
duration: 2160h # 90 days
|
duration: 2160h # 90 days
|
||||||
renewBefore: 360h # 15 days before expiry
|
renewBefore: 360h # 15 days before expiry
|
||||||
---
|
---
|
||||||
apiVersion: cert-manager.io/v1
|
# semery.fr certificates are managed manually in certificates-secret.yaml
|
||||||
kind: Certificate
|
# until OVH DNS API credentials are added for DNS-01 challenges
|
||||||
metadata:
|
|
||||||
name: semery-fr
|
|
||||||
namespace: caddy
|
|
||||||
spec:
|
|
||||||
secretName: semery-fr-tls
|
|
||||||
issuerRef:
|
|
||||||
name: letsencrypt-production
|
|
||||||
kind: ClusterIssuer
|
|
||||||
commonName: semery.fr
|
|
||||||
dnsNames:
|
|
||||||
- semery.fr
|
|
||||||
duration: 2160h # 90 days
|
|
||||||
renewBefore: 360h # 15 days before expiry
|
|
||||||
---
|
|
||||||
apiVersion: cert-manager.io/v1
|
|
||||||
kind: Certificate
|
|
||||||
metadata:
|
|
||||||
name: wildcard-semery-fr
|
|
||||||
namespace: caddy
|
|
||||||
spec:
|
|
||||||
secretName: wildcard-semery-fr-tls
|
|
||||||
issuerRef:
|
|
||||||
name: letsencrypt-production
|
|
||||||
kind: ClusterIssuer
|
|
||||||
commonName: "*.semery.fr"
|
|
||||||
dnsNames:
|
|
||||||
- "*.semery.fr"
|
|
||||||
duration: 2160h # 90 days
|
|
||||||
renewBefore: 360h # 15 days before expiry
|
|
||||||
---
|
---
|
||||||
apiVersion: cert-manager.io/v1
|
apiVersion: cert-manager.io/v1
|
||||||
kind: Certificate
|
kind: Certificate
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ resources:
|
|||||||
- repository.yaml
|
- repository.yaml
|
||||||
- release.yaml
|
- release.yaml
|
||||||
- certificates.yaml
|
- certificates.yaml
|
||||||
|
- certificates-secret.yaml
|
||||||
- caddyfile.yaml
|
- caddyfile.yaml
|
||||||
secretGenerator:
|
secretGenerator:
|
||||||
- name: caddy-values
|
- name: caddy-values
|
||||||
|
|||||||
@@ -10,11 +10,10 @@ image:
|
|||||||
repository: caddy
|
repository: caddy
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
tagSuffix: ""
|
tagSuffix: ""
|
||||||
tag: 2.11.2
|
tag: 2.11.4
|
||||||
service:
|
service:
|
||||||
type: LoadBalancer
|
type: LoadBalancer
|
||||||
# Cluster (not Local) so any node can forward to pods on any other node.
|
externalTrafficPolicy: Local
|
||||||
externalTrafficPolicy: Cluster
|
|
||||||
# Disable ingress - Caddy IS the edge proxy
|
# Disable ingress - Caddy IS the edge proxy
|
||||||
ingress:
|
ingress:
|
||||||
enabled: false
|
enabled: false
|
||||||
@@ -36,25 +35,35 @@ health:
|
|||||||
volumes:
|
volumes:
|
||||||
- name: vhaudiquet-fr-tls
|
- name: vhaudiquet-fr-tls
|
||||||
secret:
|
secret:
|
||||||
secretName: ENC[AES256_GCM,data:91g6xGYke1FlteHJX17r6w4=,iv:uquY66VZIAPnFse/maIQUcdRVFXUfb/M9tFvNqdgSfE=,tag:P4/D7jpUgEhcOnoxk+QO9A==,type:str]
|
secretName: ENC[AES256_GCM,data:vc6kDDdxbluL/BmJb4w9TKs=,iv:FLsFMqUQWs3vzuH6fO64qikNpSx/RGneZyow8WYXlo0=,tag:TVsfs/pUmiA6mYYwHgxDLw==,type:str]
|
||||||
optional: ENC[AES256_GCM,data:KgTxuQ==,iv:KIxXxFGKVA07qMVYZIcBE2BnYTtLl9tFrOZE57xIHXk=,tag:lCyA/TXsxTUZSZDveQSDdg==,type:bool]
|
optional: ENC[AES256_GCM,data:I1ftGg==,iv:P/KwiMPHM+YYUPJ+M5GBcgZGRTrIskbCir4fQH1XUug=,tag:hbqOTv6BrmkkQ/kE3bCx+A==,type:bool]
|
||||||
- name: wildcard-vhaudiquet-fr-tls
|
- name: wildcard-vhaudiquet-fr-tls
|
||||||
secret:
|
secret:
|
||||||
secretName: ENC[AES256_GCM,data:cZlwLn0jjz4GGX2z/w4ooeWBbyOAMZ9UHgc=,iv:Yh4wuMcyDekHzGUxCLldnAOaqLPS45YvybwhdZd5kGo=,tag:Z/jti3YF0/wdsrC9PxHVgw==,type:str]
|
secretName: ENC[AES256_GCM,data:KSaPirEmnfOHqtwNr3SoK1IsCZ6HalzH2tw=,iv:TL9/VqSq2fW+2se9GK+bopfbcHu/lgpjlD4dHLKf7s0=,tag:SKgvfnPvca9o3bXxILLX9A==,type:str]
|
||||||
optional: ENC[AES256_GCM,data:ZULOMg==,iv:qjb4nvvineVsTEp35JxPcMRDS5Ij4zIsc7PI+d6/M60=,tag:LcOjEqypcQLrBpXBrpRvOw==,type:bool]
|
optional: ENC[AES256_GCM,data:65Ht9Q==,iv:EM0rH3i8MVVDXXrARxL6djISin8ScCEdZ/J43WL7A0I=,tag:rOcLiIOaDAqW4C5j6Zv+tA==,type:bool]
|
||||||
# semery.fr certs from cert-manager (OVH DNS-01)
|
# semery.fr certs from manual secret (until OVH DNS API is configured)
|
||||||
- name: semery-fr-tls
|
- name: semery-fr-tls
|
||||||
secret:
|
secret:
|
||||||
secretName: ENC[AES256_GCM,data:rxGGzrGRZPfzNjFIIQ==,iv:wvgWZIbAoBeJ/7/F4WeBuCHi1I4xHxwLtJZD7/SwV4Y=,tag:n8Zr+hwkD/Vm0LI/Se2TvQ==,type:str]
|
secretName: ENC[AES256_GCM,data:kDiP6Hg4nLMM4FY6/C21YnFn,iv:bFgsIMkgHfSy8ZsK3NLc9cZ/5TRV3B2WzWkCFBGl5uc=,tag:atz2qInNTSX3u9b5N4fPnQ==,type:str]
|
||||||
optional: ENC[AES256_GCM,data:5M+93g==,iv:KEMghZxEKvH+3vM/mtuVCIvzb2X19quX8Kd+oVJp+y4=,tag:mRqR+Fj86AWfGnvlTzRh2w==,type:bool]
|
optional: ENC[AES256_GCM,data:vfjgpQ==,iv:XZBZyekKMQQzrFE05vG2w6Pwd2ZQ+RerjF/T8FKbuc4=,tag:SVRfxbOLG7z8fWyxclrvzQ==,type:bool]
|
||||||
|
items:
|
||||||
|
- key: ENC[AES256_GCM,data:UumzQqzt/iy7oS7P+Q==,iv:3zV2rTEpHclFVRYRACzrs4+IXLOIw8HMSgWLyQ6fLp0=,tag:rOlhuN2qIN0vtwgahtvKvQ==,type:str]
|
||||||
|
path: ENC[AES256_GCM,data:QfXoPe/t8Q==,iv:Cj/4ngLtDha5fd5d7gn6OONGNdAjoEwq1zJc+xxYJTM=,tag:9q1DbomT9p4DonVsu3OBEw==,type:str]
|
||||||
|
- key: ENC[AES256_GCM,data:m72H1Se5snCNyNpe9w==,iv:ybvgDs1PNalk3i50mkIbph5KWEUefaDyoVUvKjqoJP0=,tag:+0c/3vDxjbOp6qn5VXvPxg==,type:str]
|
||||||
|
path: ENC[AES256_GCM,data:DJT6fW8uZQ==,iv:ImJQ19fJ2PBwil64M/vUu2TAhVjTYK14rfiTojK2E7A=,tag:2OkaIF6u7hCqsS2Bkp9v9w==,type:str]
|
||||||
- name: wildcard-semery-fr-tls
|
- name: wildcard-semery-fr-tls
|
||||||
secret:
|
secret:
|
||||||
secretName: ENC[AES256_GCM,data:L6rjVVVtpOne6oog+Ru07ryaS2aVzg==,iv:Qg8wv1LUeaKKGzHpe2HHGR5GzJXYYog9HPJrcPhrMq4=,tag:8Z2yVeFv0mLZlQ9Yn3oRVg==,type:str]
|
secretName: ENC[AES256_GCM,data:AZVY6PS2tzVnU5mSVlbH621e,iv:HToh6ymWjFGK+xw1+MKAP2RGKJd+PuFC4My7erFeAOc=,tag:W2pksdZFrEFKzPrGwJ+d8g==,type:str]
|
||||||
optional: ENC[AES256_GCM,data:Na+sDg==,iv:3r1+mX+APihx5w5sU3/Rnyl4/ZjO8lO3jAcaBuG4B/8=,tag:WKYxuFraq8+659StfI79FA==,type:bool]
|
optional: ENC[AES256_GCM,data:LbarYQ==,iv:FUiIoSlbc/5Tj1t2LIxEPC6Ey7DgSaezrr2+lTr8roY=,tag:dlqb5SFpm1JDwn9qwaTP8A==,type:bool]
|
||||||
|
items:
|
||||||
|
- key: ENC[AES256_GCM,data:8xY5dDL5KSNDAk1mTB58WtriIRNeFw==,iv:Ng7twP5cr/TfKpENug7kgZ1Pa24vhV0/wFtxCelRLZU=,tag:powPtyjVogU/NO4LSyT2pA==,type:str]
|
||||||
|
path: ENC[AES256_GCM,data:AIvmIcXtDQ==,iv:JshIK8HzTkMlZsDcdX0AIsrkyLST3qUdtLkEP29E/O8=,tag:njYcODU/bWN7XXDwsHV9Uw==,type:str]
|
||||||
|
- key: ENC[AES256_GCM,data:NqW+4UFJx3AjfS9BFoG3dhOsbHoy4g==,iv:TMMd96OebuBwBT80BzXDYHD/38l+cSDQ9q067/Dqkk0=,tag:IOL89DD3vDjbNm/qYbSUig==,type:str]
|
||||||
|
path: ENC[AES256_GCM,data:f5PVx/WfxQ==,iv:4aFgPWiyp0lnQFboQCprI9lAGCkSfrO03TlD/Pvx0do=,tag:aIvncQKaqtNu15jnpVSSww==,type:str]
|
||||||
- name: buildpath-win-tls
|
- name: buildpath-win-tls
|
||||||
secret:
|
secret:
|
||||||
secretName: ENC[AES256_GCM,data:cHgBMV3iWihTRS2h4Gu9CZY=,iv:IttOh8Ra68dwxlkT8hZ4vhg8uEwDvByjFv/pT5ae9jM=,tag:+7xH89jLUMfJB/mJzyuE3Q==,type:str]
|
secretName: ENC[AES256_GCM,data:nUF53gg1cNg5fEWLsXmEh1Q=,iv:XUxXBDMrddGey7eoIebW/myOD0P/UDhY6bX4QSzT3X0=,tag:foE8OG/JcknTRzsxiKKzuA==,type:str]
|
||||||
optional: ENC[AES256_GCM,data:QVSy/Q==,iv:25ldKY94OaF5IMSHtCzNacsBKA3MHTOHQtGVe0fY9g4=,tag:3fl1RCkfEjF86fMsYv8W4g==,type:bool]
|
optional: ENC[AES256_GCM,data:tCGcgw==,iv:LxIjr/EsHifL36wFkc1rb1irfk9fyWAoBxGaf+ksu1U=,tag:A96i+w6cTAk7NTxumcXzGw==,type:bool]
|
||||||
- name: routes
|
- name: routes
|
||||||
configMap:
|
configMap:
|
||||||
name: caddy-routes
|
name: caddy-routes
|
||||||
@@ -93,16 +102,6 @@ config:
|
|||||||
|
|
||||||
import /etc/caddy/routes/Caddyfile
|
import /etc/caddy/routes/Caddyfile
|
||||||
affinity:
|
affinity:
|
||||||
# Prefer non-failover nodes in normal operation
|
|
||||||
nodeAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- weight: 100
|
|
||||||
preference:
|
|
||||||
matchExpressions:
|
|
||||||
- key: ENC[AES256_GCM,data:U5edeFnG3Eu+7hhCmkUZXTf1wrU=,iv:hczbYIbQAq1XSCughZdVa9ChQ7nv62elsMtrUzCVV6Y=,tag:/Uh3rsO43oSfyX4fFCEujQ==,type:str]
|
|
||||||
operator: NotIn
|
|
||||||
values:
|
|
||||||
- "true"
|
|
||||||
podAntiAffinity:
|
podAntiAffinity:
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
- weight: 100
|
- weight: 100
|
||||||
@@ -111,38 +110,29 @@ affinity:
|
|||||||
matchLabels:
|
matchLabels:
|
||||||
app.kubernetes.io/name: caddy
|
app.kubernetes.io/name: caddy
|
||||||
topologyKey: kubernetes.io/hostname
|
topologyKey: kubernetes.io/hostname
|
||||||
tolerations:
|
|
||||||
# Tolerate the failover taint so caddy CAN schedule on p330 (small-node-1).
|
|
||||||
- key: ENC[AES256_GCM,data:wGARNk8BSuSn,iv:K1uKmlmQYv0/Y2lXP6JvIi1kbx1VwIb2m3XK1o+OHSI=,tag:PETfq6sO58vkFZmJBWJvDA==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:2Z/x7/cf6CQ=,iv:yuFeoo3LvfTL2yDpCbOEb994lGao7B/mQnFKrdxEtlk=,tag:xN7t4jD6wZV8e92959BFoQ==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:4mk1b0YQAmUOZ+0k7PsilvYd/oXlCjS4HT8QzfyZpUNSjla5vA==,iv:GhJGcDRX25UsKH3B8ZKPLUJOoo4+EqnzlNuBfy8ggeU=,tag:pzY8xT1m++02YD8YRPFpog==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
sops:
|
sops:
|
||||||
lastmodified: "2026-07-25T12:06:27Z"
|
lastmodified: "2026-06-16T10:08:07Z"
|
||||||
mac: ENC[AES256_GCM,data:uIOoHpLdiuIOF82w84PsziKyAglkY02OrGU0sigjnhyt+6S9ryy74oiJivzxtniTevsv2PKecN0uXABKzabp+ysY7/uDix/lE0KzoUs6sYA5kVfUj1JPoDQ6bQxoi0y8zKeOqMoqHwIAs+2N2VEriqtRxn+4L3kbTrbe9CFtxIg=,iv:5ZIt9yXKJo5pF9ghi+uVs7zxsdLtQ+pTlc37FKVz2iU=,tag:sTOq1pJh0KQ06soBcmcWRA==,type:str]
|
mac: ENC[AES256_GCM,data:HeWRLHO8x7tJ3fGpSW0Pz6tkuYgQh6QJHF3q9KZD8EgCyuxxrnRh74sEOF9e/KjtmaNKF2ak6QkR2Taa9qD3yblMJp9Zjc3ivC2aMEKxtdJN8B3bxRr1Ln1Na2kSny3+X/c1nC1swWyNNgeQJvKQlvhXjK5S56Y5NG/n/PBT3Q4=,iv:HyiLtk4ueORKezmpmY/I4vXPBwEudqkwNpk4fgDheeY=,tag:2W46a3geF4Fi8jDsSCPNjA==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-07-25T12:06:27Z"
|
- created_at: "2026-06-16T10:08:07Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiARAAvv+DByIWPPLBdqAB39jdZPkrWzVN/7TJ3DU8q380NNMI
|
hQIMA7uy4qQr71wiARAAhoTczAWaCpuZbHq+NrssLQG4Ys0yYNYM9nflFEOkD1Sa
|
||||||
2w2I28Ee3iXl4e/Qj66fx8U8NGwdYo/j+mUjIddBjiJB5xzu97k+nT4toDocutGT
|
rTEAhJACKNFYKJ6P2V4rBQtKHRdqMdVfrtaumgSvuKBX4wJW+nG/LUSXENJV/UD9
|
||||||
bOI4KZP/J7vh+spb6TMJvH39IGLOYH6N2NagRD6r15kd37ddoRbV8OFTZXvXf524
|
VqxiujfWKgps4XfNfuM/a7w9IbU7rk+mh+LBwwRpQeqEs7j1eZnJjQCBW4zGFeav
|
||||||
d3+PbqQz9FoulLy+Yt8tWWXD1MpqRbIHL65dAhLF0vZRxUVcnRmg77ZX2Q1yD7Wq
|
XWYx2VmqfwQ/XhVaiSCvJjeJJk/U54Dot9W2ZoKCX+5zyZ+dWsX2ggXQWsoQCfOK
|
||||||
i8c0Pe1dhqg6ig+njshiC7HkWOQoINYzk012hz+Cid5JZAIyxsqxkdoFUWHeWI0h
|
uSTjjVKw80VvrDMX/TfbvNQDHNsljOSSeScA+lx6HElbDcAyUHxE99UAi6RVQazm
|
||||||
u3XUpjjxj+eg0YlnAqrnK16B6+pscZWjEgHJEmrGQo8AGFMdALoubv+8nGiywNZP
|
EjEHsVHvyR0Y/7hvVlo8FY7XS/81pXGLN22AcWbd1fIZlitRa9YbHZH1YWzWRzr5
|
||||||
tqM9oT1ePa0pIJNzhNgFWGkwwuyH4jPXrRji9fpLASAihsM1WQIh3smd373C0Z/W
|
JB2S+UMEOigw8WPg/1BAiFj3bCRn8aDyAMdUEKlbcXCYwoLynG6zVbgeuntYq0Zl
|
||||||
sQYFTS9B6FUCCdDPA/St0Rd/RHFW+eJPC6Jh4728Pqa67FjnuIVB5VJ33Dgpl8OE
|
Y4zAi4+G+fHvdAqQz44p+AyP9hgS/qMBQwsUnAxGfltfVBEew2I/Vz5OugtDyLIW
|
||||||
kEyY3WvtoYOaw+6VqWetg79sCruibmlenDWSrT8VQ8ksk/YIj+iicPnI/BY5S2Wz
|
UYrk+5LR+7cfJNCyCHQEyJL/YPsL1GDR1SP5YCrsDnuXPCEgwyRRLHFW8j2KCtLu
|
||||||
j2s1Lpvvhr/gZvF7z+vfhX1Fn28xIg5/gkcoYSKgFhqxG69IlPbZsr/D2oWyeygd
|
YX59FbVLqo2xzT5nEaIYbLLhEq3+5KaVIBqzGWAwSBbu7bXru6jIG6prVwofJQxx
|
||||||
tIp/D1yHGFJ1Cb56qr400t9xF5BD605rf/Aczg8mdvI41jGvmECQrSKHsxI25xLS
|
HCz2leboRZ3ZrC4Y4itHHuMfmSCtiildRhgPtVnvUdiQz0dS+RLNesH4hRvvxBPS
|
||||||
XgEVhCAm6HDAKEhjnm1wAZG8DJRhcrSLqLq7SPKJaTPJpjeQwXOb6OIs9ugQx9ON
|
XgF9gp+9JE/5XMxUmNNf0yUC1mlQuUHbC7JqLLpLBNAtQwljDLMIgPG0y5n2r0C3
|
||||||
w96InR1VMsEUlh1EWBXUqBgQgyDIIEAa+wHBnY7U06fkazN6lcLkAp17yTitTEk=
|
zokdaebVj2XV9r7X25SQMyLzTdoXYqgGsoPBFnqQNpycg2HpmBX9isvqjbZ6x/g=
|
||||||
=gULt
|
=AqxW
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
||||||
version: 3.10.2
|
version: 3.10.2
|
||||||
@@ -22,23 +22,3 @@ spec:
|
|||||||
dnsZones:
|
dnsZones:
|
||||||
- vhaudiquet.fr
|
- vhaudiquet.fr
|
||||||
- buildpath.win
|
- buildpath.win
|
||||||
# OVH solver for semery.fr (via cert-manager-webhook-ovh)
|
|
||||||
- dns01:
|
|
||||||
webhook:
|
|
||||||
groupName: acme.aureq.com
|
|
||||||
solverName: ovh
|
|
||||||
config:
|
|
||||||
endpoint: ovh-eu
|
|
||||||
authenticationMethod: application
|
|
||||||
applicationKeyRef:
|
|
||||||
name: ovh-credentials
|
|
||||||
key: applicationKey
|
|
||||||
applicationSecretRef:
|
|
||||||
name: ovh-credentials
|
|
||||||
key: applicationSecret
|
|
||||||
applicationConsumerKeyRef:
|
|
||||||
name: ovh-credentials
|
|
||||||
key: consumerKey
|
|
||||||
selector:
|
|
||||||
dnsZones:
|
|
||||||
- semery.fr
|
|
||||||
|
|||||||
@@ -3,5 +3,3 @@ apiVersion: kustomize.config.k8s.io/v1beta1
|
|||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
resources:
|
resources:
|
||||||
- clusterissuer.yaml
|
- clusterissuer.yaml
|
||||||
- ovh-credentials-secret.yaml
|
|
||||||
- ovh-secret-reader-rbac.yaml
|
|
||||||
|
|||||||
@@ -1,50 +0,0 @@
|
|||||||
# OVH API Credentials for DNS-01 Challenges
|
|
||||||
#
|
|
||||||
# OVH API credentials with the following permissions:
|
|
||||||
# - GET, POST, PUT, DELETE on /domain/zone/*
|
|
||||||
#
|
|
||||||
# The secret MUST live in the cert-manager-webhook-ovh namespace (cert-manager),
|
|
||||||
# because for a ClusterIssuer cert-manager sets the webhook's ResourceNamespace
|
|
||||||
# to the webhook's own namespace, and the webhook looks up credential secrets
|
|
||||||
# there (see ch.ResourceNamespace in the webhook's ovhClient() function).
|
|
||||||
#
|
|
||||||
# SOPS will encrypt the stringData fields on pre-commit.
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: ovh-credentials
|
|
||||||
namespace: cert-manager
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: cert-manager-webhook-ovh
|
|
||||||
app.kubernetes.io/component: ovh-credentials
|
|
||||||
type: Opaque
|
|
||||||
stringData:
|
|
||||||
applicationKey: ENC[AES256_GCM,data:0+y+m8n/eup5lY/vGW5ASQ==,iv:VSIhfNAvSNOLq92TVcaW54ygU1wgAv+u35HZ0cbP6UU=,tag:KD+cyIesTQgqEzGMro8xyA==,type:str]
|
|
||||||
applicationSecret: ENC[AES256_GCM,data:sP0febHRFF/atAFlRM6sYXoM+Lp6Rnf7d0IQKcsa0vY=,iv:nHYMHSsOclkZmQJSjcz2oXMHsDTct5hTmJz1L7xgvpA=,tag:oCGoRP7R0W+PTNRCeLFvyg==,type:str]
|
|
||||||
consumerKey: ENC[AES256_GCM,data:vw/Q39CpSc5o1ntPDMT3844aLbTHQrSYH8RhoZFFZrQ=,iv:6B0F9Zq56inpW7AS8okbpqJkRK3WkBjX6sIqclOP9Hs=,tag:nnbgwBMBM4JZg/IEYzRvVw==,type:str]
|
|
||||||
sops:
|
|
||||||
lastmodified: "2026-07-10T05:06:52Z"
|
|
||||||
mac: ENC[AES256_GCM,data:0/VEDE1ZuIyzkaleosS/KHYX44762TbScrJGJylwV21d7U6YgpwRMOXvU9xn3rHsDXnh5IAmAtrXQTYJFN1vcF1DNw5O9+TQKVoO6B5rsel/YyKRU4s7aYcfDgbW9dO1wn33K65KFtM+0Qv187DzEn1by449TgWIWP/M5U40PE4=,iv:hIGzMwsas8VxC4941ABeoocYWSlVSz9KW7a5tTAoRXI=,tag:n/EJEkEBL20carqVesMBsw==,type:str]
|
|
||||||
pgp:
|
|
||||||
- created_at: "2026-07-10T05:06:52Z"
|
|
||||||
enc: |-
|
|
||||||
-----BEGIN PGP MESSAGE-----
|
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiARAAu0va03SPYOU23iUjoTMiXJ6+nMhIX8lsurvmCvi+wIqk
|
|
||||||
c7qu0lTfXv62IjkY6fIKtOE7TN9TiipjzXG2QJaK94QeiFpe9M90qNo09qEIje9m
|
|
||||||
DepTrLfyINFT0SY2eihl+nXhBXuEDSiD5K60OsXGPN92hJMwCad5jJuB7xpmrX0m
|
|
||||||
X0A1Bl9orce/do/YJoy5hq0persB/VSeCKlptNzqpmpRIA3J6AdCDKXQOMqAymXN
|
|
||||||
FXAxbjEQNcXhfU12Y/cVpa1hS7ap5OJCnWOPkFEA8y1ESVnPpryuTIfVlFUhW3/Z
|
|
||||||
Dhpb9OXKdi2IVYdbaY8+3UfSsXxTVOge7jCMbJq3aa7ZvGt5fTjXG4zc9A6RqSGh
|
|
||||||
ASOPSkRRSZB0d97NhUQJGgfcaWFvsfkaTAUVB2Ip/+Udnt/tGIE99RGJizxSVO9N
|
|
||||||
2aVJIukqng8aNPfth8mgWYJpCETMb4piLmVg2ptDqelCqXlUAskxWzMWtAhyzOgw
|
|
||||||
lZ2dcAn7aj9YtLaKAW9rjV8EqHEqQg0ychRNMeyRiN/CnNJp6Q2wl1/EyQUpzb0a
|
|
||||||
1I/ifFAW8FbWTVIbZv6njkl1XNaoav54qEn1qSABcljM0h1Ulb9WKMJiXH4368jf
|
|
||||||
Yhl38JDAn5NZBEzxpuaih1XK5yVri0/1ascpuMvfOxLKniUR9tla8+WEL97+aejS
|
|
||||||
XgGsrH+/uzRVSAT+44rExi43MWCAwNRUaVrX8UiGjA/z8qPVdwBVih4CMKgfQ8VW
|
|
||||||
1KewStOY217BXuVrDbvHEAkuOotEP0Jnan0epoWs47DSasNgzAcWrBgom0l/avI=
|
|
||||||
=Gdou
|
|
||||||
-----END PGP MESSAGE-----
|
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
|
||||||
encrypted_regex: ^(data|stringData|.*.key|.*.crt)$
|
|
||||||
version: 3.10.2
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
# RBAC granting the cert-manager-webhook-ovh service account read access to the
|
|
||||||
# OVH credentials secret.
|
|
||||||
#
|
|
||||||
# The cert-manager-webhook-ovh chart only auto-creates this secret-reader Role
|
|
||||||
# when using its built-in `issuers[]` mechanism. Since we manage the
|
|
||||||
# ClusterIssuer and the credentials secret manually, we declare the RBAC here.
|
|
||||||
#
|
|
||||||
# The webhook runs in the cert-manager namespace under the
|
|
||||||
# `cert-manager-webhook-ovh` service account (created by the Helm release).
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: Role
|
|
||||||
metadata:
|
|
||||||
name: cert-manager-webhook-ovh:ovh-secret-reader
|
|
||||||
namespace: cert-manager
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: cert-manager-webhook-ovh
|
|
||||||
app.kubernetes.io/component: ovh-secret-reader
|
|
||||||
rules:
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["secrets"]
|
|
||||||
verbs: ["get", "watch"]
|
|
||||||
resourceNames:
|
|
||||||
- ovh-credentials
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: RoleBinding
|
|
||||||
metadata:
|
|
||||||
name: cert-manager-webhook-ovh:ovh-secret-reader
|
|
||||||
namespace: cert-manager
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: cert-manager-webhook-ovh
|
|
||||||
app.kubernetes.io/component: ovh-secret-reader
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: Role
|
|
||||||
name: cert-manager-webhook-ovh:ovh-secret-reader
|
|
||||||
subjects:
|
|
||||||
- apiGroup: ""
|
|
||||||
kind: ServiceAccount
|
|
||||||
name: cert-manager-webhook-ovh
|
|
||||||
namespace: cert-manager
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
||||||
kind: Kustomization
|
|
||||||
namespace: cert-manager
|
|
||||||
resources:
|
|
||||||
- repository.yaml
|
|
||||||
- release.yaml
|
|
||||||
secretGenerator:
|
|
||||||
- name: cert-manager-webhook-ovh-values
|
|
||||||
files:
|
|
||||||
- values.yaml=values.yaml
|
|
||||||
configurations:
|
|
||||||
- kustomizeconfig.yaml
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
nameReference:
|
|
||||||
- kind: HelmRepository
|
|
||||||
version: v1
|
|
||||||
fieldSpecs:
|
|
||||||
- path: spec/chart/spec/sourceRef/name
|
|
||||||
kind: HelmRelease
|
|
||||||
- kind: Secret
|
|
||||||
version: v1
|
|
||||||
fieldSpecs:
|
|
||||||
- path: spec/valuesFrom/name
|
|
||||||
kind: HelmRelease
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
|
||||||
kind: HelmRelease
|
|
||||||
metadata:
|
|
||||||
name: cert-manager-webhook-ovh
|
|
||||||
namespace: cert-manager
|
|
||||||
spec:
|
|
||||||
interval: 1m
|
|
||||||
chart:
|
|
||||||
spec:
|
|
||||||
sourceRef:
|
|
||||||
kind: HelmRepository
|
|
||||||
name: cert-manager-webhook-ovh
|
|
||||||
namespace: cert-manager
|
|
||||||
chart: cert-manager-webhook-ovh
|
|
||||||
version: "v0.9.13"
|
|
||||||
interval: 1m
|
|
||||||
valuesFrom:
|
|
||||||
- kind: Secret
|
|
||||||
name: cert-manager-webhook-ovh-values
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
apiVersion: source.toolkit.fluxcd.io/v1
|
|
||||||
kind: HelmRepository
|
|
||||||
metadata:
|
|
||||||
name: cert-manager-webhook-ovh
|
|
||||||
namespace: cert-manager
|
|
||||||
spec:
|
|
||||||
interval: 1m
|
|
||||||
url: https://aureq.github.io/cert-manager-webhook-ovh
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
# cert-manager-webhook-ovh Values
|
|
||||||
# groupName must match the ClusterIssuer webhook stanza
|
|
||||||
groupName: acme.aureq.com
|
|
||||||
# cert-manager deployment configuration for RBAC
|
|
||||||
# The webhook creates ClusterRole/RoleBinding so cert-manager's
|
|
||||||
# service account can create the "ovh" ChallengePayload resources
|
|
||||||
certManager:
|
|
||||||
namespace: cert-manager
|
|
||||||
serviceAccountName: cert-manager
|
|
||||||
# Pod configuration
|
|
||||||
pod:
|
|
||||||
replicas: 1
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 10m
|
|
||||||
memory: 32Mi
|
|
||||||
limits:
|
|
||||||
cpu: 100m
|
|
||||||
memory: 128Mi
|
|
||||||
sops:
|
|
||||||
lastmodified: "2026-07-09T22:31:08Z"
|
|
||||||
mac: ENC[AES256_GCM,data:QjrNj355tJVZRsYQdkM73Ld7X8EvMM7O/1vF3QnTYJ9vWbh78irLocbtnyBeaR9o3g0mxO6Ugjlukj+S0HhIX/WS1XHEfs/3n3rE0zS/fxGJ0D3Alam/n/WPOsYHUiCBD86JtU83AjgncISY4yp/VheV3kRgSdl+ye4AGAjhq7A=,iv:p8yqNCcskTfDfEGbM5Qyb60C4pFv4BOuLpEApEzHLFY=,tag:KntExeQwJbBREaz2nY+1uQ==,type:str]
|
|
||||||
pgp:
|
|
||||||
- created_at: "2026-07-09T22:31:08Z"
|
|
||||||
enc: |-
|
|
||||||
-----BEGIN PGP MESSAGE-----
|
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiAQ/8Dn4nEIbQXuETxE6RUBkNTO/eN5pHh47lqSwBBbYDSi8C
|
|
||||||
8rcJmdq8P+v00geLdMlM35OcjHFb9UCVeHFsAEYt6Q2jL4QNa2aOEDOqGnhKP+zx
|
|
||||||
KKtW2Ngx76Ow9N2C5JN9DXk9n+PC/qWdPLNJY+GiW/KbPmVxAulJpmYlJHfs1EOh
|
|
||||||
0mSRSS+7sgGLHWmgU362zC508lkKxh8HKxmq1+1lf+fWIe8N7Sl0fx55kq168hae
|
|
||||||
NcdogRpoVT555hRils7eqzj0C/KTVOi7CR4pS7VJyiNy2fu2OASmmcM6UEqCyJfV
|
|
||||||
NTUdMpnjb05UwfbuUnIg6j/FoqS49ufGxKPrM9t7JrFSuyGqduF7P/ifv5zwMuIZ
|
|
||||||
SNeR/X8xUksK6R4/uTmUx5sgF+Jv7tCRvcp+DhsDe1mMmO8czXC5Mt3cR+uwYoms
|
|
||||||
hN+9/oYEZr13qn5Ek0dy9NESkZIzYPCXYXZrx8GLqaHCJEQbpIZCAN+llOyQaQzU
|
|
||||||
jcvPAYbTewBw4ewKUS0KcvLd1pfzvYyvtzwHuMIVJwrf7x5bzhzxAgVOGkEVlVq/
|
|
||||||
7pGO9TYXGl3kD7tf25oCGzAerVC+EVcL11sq4zawvL4PovEZFP9mzhR7EfY3t/3C
|
|
||||||
vGVu6vPmCJOwdis9+Kdr3PKubnMqWGn5KCCX1x13qhsHc239N7cVKkyx3dTBaArS
|
|
||||||
XAG6KxKe/cQicIVC8/N1Cna9uQnTF5ZnFVfJNW1nkYyF1E+ofW6kKDr3ITotKLDP
|
|
||||||
hXXPT+vsB2fL3faBG4xb6owrMuQ1S0DmB3mqjSCXtpS7q0FDg22Tq9BtaEni
|
|
||||||
=x1th
|
|
||||||
-----END PGP MESSAGE-----
|
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
|
||||||
version: 3.10.2
|
|
||||||
@@ -5,7 +5,7 @@ crds:
|
|||||||
keep: true
|
keep: true
|
||||||
# Enable DNS01 challenge providers
|
# Enable DNS01 challenge providers
|
||||||
extraArgs:
|
extraArgs:
|
||||||
- ENC[AES256_GCM,data:RcKzGzDSFXAw32vBKyvMTzMx5u0AmXKpXEY9/YRxUI0SNVy68/uUSpFhdmcB0RvmzG7y,iv:AraIcgoVYO1IVAmN3dd6pXr3v2BXaizbK8HefwsDRqE=,tag:QlOBuyxbddyk++nYLhMl6Q==,type:str]
|
- ENC[AES256_GCM,data:yzuTi9Hu7Dx95MQN+H/6gul381m64KYv5ZsHwg92BE/aUZyJzYArniIC+Nio+SygUXXb,iv:eBizFSW1T2/VvN3k8VRsEIpllHs5MA6Nr+jh9fCzZCs=,tag:sz9WBU687eTgnDXWoE02Nw==,type:str]
|
||||||
# Resource settings
|
# Resource settings
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
@@ -14,15 +14,6 @@ resources:
|
|||||||
limits:
|
limits:
|
||||||
cpu: 100m
|
cpu: 100m
|
||||||
memory: 128Mi
|
memory: 128Mi
|
||||||
# Tolerate failover nodes
|
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:WXIPFO1nBe+6,iv:t8RP3KL6niOVe84Qqu9+JKp2qNR87qnMzJOh7pUsudg=,tag:uT7gWSdOz86PPi2NZIxZeA==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:N1IHrGvrobA=,iv:QiKeIiSBFThw05b5gkU41koci4CDZ0ZxdLX1r1DD7Dc=,tag:QGWcNIYqUdEy0f0bEYC91Q==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:QMtUDj9EDXWbsUBLlQJ5yFEsQ3fksIRUqIk7tKyts1aHqNQ56A==,iv:GVEl1AcWNLAqdXqyJTMoYBPRqqvhSHGBN7fuMLWtjoY=,tag:bmCK8yCiVCXci2JJFvw/GA==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
webhook:
|
webhook:
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
@@ -31,14 +22,6 @@ webhook:
|
|||||||
limits:
|
limits:
|
||||||
cpu: 100m
|
cpu: 100m
|
||||||
memory: 128Mi
|
memory: 128Mi
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:QZjbo0u9rqht,iv:H3mZnC4a2abmOiW0RhoFAiAvVfaRFpGU2+XKYy8uBUQ=,tag:xwp+rkiYrSo1q+CsLdup7Q==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:UsVMCFtyl0c=,iv:ImpKIQtC1jX2NLNTSDhq4a9nq3I2HlpSr7QLUOw5gd0=,tag:xM/vf2MhasBNWbLqxkUrQg==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:31pC3NOA0AH2d0V/N10xX1U8E1OD4YL/27+xFLxElfYb1xWSDA==,iv:aaaci0Eu3Mb9og3Za0beB9js3wSjcNE7BOS5iAko3aU=,tag:h40mrm+gPTf9jCP7ax1ihQ==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
cainjector:
|
cainjector:
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
@@ -47,14 +30,6 @@ cainjector:
|
|||||||
limits:
|
limits:
|
||||||
cpu: 100m
|
cpu: 100m
|
||||||
memory: 128Mi
|
memory: 128Mi
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:rqZTE8j9xDAy,iv:EvztWg01VbvJhdhkrVz7M0mA0EUhVW2Ty/de0D3pgmw=,tag:rGUZky1bUhewhKDp3Vo8Eg==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:fPt+n+ftbGI=,iv:xHy9IUIBgkHDQcVZ4MyA3tXPvMAy14gHhkxe2AYthR0=,tag:szam+dyODZSjfX6oxsFdSg==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:As98cp+6SvVwxRtdxx7TT+HGzejgWiacf0TYm2JU9kPqEA7ljA==,iv:dd+TS9T57NrpgyZjYgPi/aCiInfnVxh3VbO7gddkw8k=,tag:KQMA0Kn0YgE/HpAJk83pTw==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
startupapicheck:
|
startupapicheck:
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
@@ -64,27 +39,27 @@ startupapicheck:
|
|||||||
cpu: 100m
|
cpu: 100m
|
||||||
memory: 128Mi
|
memory: 128Mi
|
||||||
sops:
|
sops:
|
||||||
lastmodified: "2026-07-25T08:12:52Z"
|
lastmodified: "2026-06-16T08:15:29Z"
|
||||||
mac: ENC[AES256_GCM,data:yFXZxbhJi5PPVXl4j73FfOO5hurvD7ZXgWr5eZS8poE7IEg6IgZKBjwq1ITMUP5DyS6K2onR/mgZVzgj5X5I7hEwj13DAPW7wWthZql+De7oGxe5Nv74fDFEwCoqh2sTbdrQS2KyPY+rrb0ZMZD5qpdZzyw1AVGzVKeJJj9DdBY=,iv:SW7sb6mmJulekZn1Eh2pfYml1PwJ5v6z/PBdV3TL29A=,tag:5HzpRnH2G8J//J2fZhrxrQ==,type:str]
|
mac: ENC[AES256_GCM,data:ZB7igt7ciH6X0DmvDi2gzg1eA8EYXqq/VRBSbaLT9x2SUi+9ax9w0V+fcTwOTWlwCvHOtSAZ2RYgX/wKFmbnKgrwoSpskGFsRlY947oLkRTk4HbTRP5HbciAQsRw3AVB4pgkR7maVZ9n15gzNHTTkd9x1akAeGHJg9lzg9+N6rE=,iv:jqyi/ZGLjKFBe9XSj2WBBOUbn9xvV9Wf4wrYxSs4t/M=,tag:2u84qHa69IsYFtSwJ6yFqQ==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-07-25T08:12:52Z"
|
- created_at: "2026-06-16T08:15:28Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiARAArV5QxST5xu2jG+X9Fo6F4o3uxMS/Kw56ey1MMTfgkTlM
|
hQIMA7uy4qQr71wiARAAiNHNEJjBOd6AK/moP1Xw7nvOidkRtIqw+QJRmfhPDG7B
|
||||||
HdV1n6lityMGXB278GiYhmZYRdZl0kAT+Dj9Y0RdaiI8BszocD7IbBKmE1tVseCr
|
CQy3y2armtFYzaWhDcMfiy1SkcD91kadbfxAifb5/Oit48VTv03bXZDvyrEdRwcI
|
||||||
Xa4y7nWE58xz2Ca26KVf/I64QPHsKKus4wECGOgZrh7Hzb+KdeTJBpuMMIgnJe3l
|
n81rt3GQuyNDCj9aSUVi1nT5GHETrvdnyJp3u1dzfc/0i7GK+FiCbGAGzSnGdN77
|
||||||
1C6VdfTgNlYPW+zAmX3i39ZwYO7wcz5UZ1aXozAtoOjWyjdcArEdoCH9iD2GXTOe
|
+/caT5Jib+hIVskiOjhE85K3rTrh+aJMFKC6NG7Vw8GXh7N4r3EcazcX9KuJXxsn
|
||||||
0EsvgdUD1U2n4ffy+Z8mga6V8URkJQ86XTuFD6PhFF1bhBwa36MCUXAdlD9ONB6d
|
NRT7XyYA8y15PlZQFkhRs1QCVvqH31WDwCEt0cE4r6Qn2aGy+v8ygJkum2sYPH7g
|
||||||
jaKSAPAeia4C+0vCXTv9OYEHizSe11iwsUyPq+bmMrYCUslaiOCC+QfGtJEcCJj/
|
WZfC548mZrMrI9UNo10UfPCqGew/XpEla1/bgVByMHMdM9n961KRzCPtR349xXI4
|
||||||
ZeAjXMoyi5Fnmwj+y5ED+O1DKp/sDyUdvix83L1UWVfTrgNVfXFCGzHJUkcZhfUk
|
1APX4WClQjbL/cXR2zMs19Y+GDjL7XF6rdSRDpEgTzQXb4f1ctswutcYxftvKI3c
|
||||||
Ye9KcbH+7+mj3p/lAgbQjBjVemnW6GFzGJYcL/rWwRBxw2ElLxKPnR9NQK9VY5w/
|
EdfCGiRpVJx/wIuh82mL3SWqdi05Lekvt1zdLcG8Tx2+nF+52dWoyxNy1YMVyk0m
|
||||||
wCmWzG4Cjr2gfLlR05A72/i68fRM9eAy4CFL5y4xTN1eYe+MCz2ZedZDd3uYTKUC
|
RXZFMZLHKumyDooairf1P11DOXcsa8FjZrqjvn6QI2LfmEGm3PQQQUXT8Wp/10e2
|
||||||
TMPGXfjhy64W/cV8MWa/aYCyNguVlKbmUl7kZwb+8DAxrSyPqQal11DJtcsv3zFO
|
78Hr1rTGqQEzvSJu0FfDuundPws97ftPiuGcUD5hUj3rS6iGxdEp4trAPi0DCCd3
|
||||||
BUf8GQFn4jXXYqd1LojLM7bUjAkXWZUIUbg1+jWfPGsgsTGn4R0tshtY9JOfQpfS
|
g7m6fNX41O8n39EU0Kp2G9kfICMghGEVL5czzRA4EsLH35K8XqP0ig6ay5kVXWrS
|
||||||
XAGL6+0+DQf8wY7yzbds4DSDMNTlOH7iWoX77okayY3L5Jqc3jB0glMJbRwdmgnj
|
XgFic5jk5GdxzUL7TFjtr9AFFaWhIZkyyXwvEod3Ur3gB64Pi/ktet6OZSWU/7Wn
|
||||||
d5JzAoqDhi1F+MQdTYGu7RQpawKr6ndWqwkT5ef5BQ86TQq3/+jZ5uuC3qnE
|
eRKn9yEm+W5Xzn9eiN6TYDsCWQBY5nP80YVuj53AMSu3KbR7UGy+AbJF3T+V6lo=
|
||||||
=uS2O
|
=GscV
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
||||||
|
|||||||
@@ -3,4 +3,3 @@ kind: Kustomization
|
|||||||
|
|
||||||
resources:
|
resources:
|
||||||
- pool.yaml
|
- pool.yaml
|
||||||
- l2-announcement.yaml
|
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
# Cilium L2 Announcement Policy
|
|
||||||
#
|
|
||||||
# This makes LoadBalancer VIPs (from the local-pool in pool.yaml) truly virtual:
|
|
||||||
# Cilium answers ARP/NDP for the VIP from whichever node currently has healthy
|
|
||||||
# service endpoints. Without this policy, L2 announcements are disabled even
|
|
||||||
# though enable-l2-announcements=true in the Cilium config — the CRD policy is
|
|
||||||
# the gate that controls which services get announced and on which interfaces.
|
|
||||||
apiVersion: cilium.io/v2alpha1
|
|
||||||
kind: CiliumL2AnnouncementPolicy
|
|
||||||
metadata:
|
|
||||||
name: default-l2-announcement
|
|
||||||
namespace: kube-system
|
|
||||||
spec:
|
|
||||||
# Announce IPs for LoadBalancer services.
|
|
||||||
loadBalancerIPs: true
|
|
||||||
# Announce externalIPs assigned to services.
|
|
||||||
externalIPs: true
|
|
||||||
# Which interfaces to announce on. empty = all interfaces.
|
|
||||||
interfaces: []
|
|
||||||
# Select which services to announce. empty selector = all services with
|
|
||||||
# type=LoadBalancer.
|
|
||||||
serviceSelector: {}
|
|
||||||
@@ -54,7 +54,6 @@ spec:
|
|||||||
- metadata:
|
- metadata:
|
||||||
name: etcd-data
|
name: etcd-data
|
||||||
spec:
|
spec:
|
||||||
storageClassName: longhorn
|
|
||||||
accessModes: ["ReadWriteOnce"]
|
accessModes: ["ReadWriteOnce"]
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
|
|||||||
@@ -80,37 +80,28 @@ extraVolumes:
|
|||||||
- name: zone-config
|
- name: zone-config
|
||||||
configMap:
|
configMap:
|
||||||
name: coredns-lan-zone
|
name: coredns-lan-zone
|
||||||
# Tolerate failover nodes
|
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:jLsxKqX8HEo8NbwtjeGf+8TdVzTgpba8myb09z1FOIoBsplZ9g==,iv:c+rAeZRAL8ZmQwpHDF5xv/l0ZqbWsnsdDlpFDSDfZrA=,tag:u9TfeXzHJ6W0ifaAEoPYFw==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:hPb/xXAmQrH6,iv:xo935JWcl3a3LyQ8YNIgNrjQkdqlP5aN4ZnjTnp4RM4=,tag:/rkpqOI/pHqXP47OGULnOg==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:nblSYUAjuMk=,iv:yu/IToMo3DC9kfI5DcBPvreJE3dkxdFA5x2fy6dUpjE=,tag:NGVTMBXa/STsOCD+g00yaA==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
sops:
|
sops:
|
||||||
lastmodified: "2026-07-25T08:12:52Z"
|
lastmodified: "2026-05-02T16:59:44Z"
|
||||||
mac: ENC[AES256_GCM,data:fyuCFq0hIVP0P8e8vqF/OKjBway2EzDo8HJhLpTQqhIOhOP6PsMszovi7BzG4FuqT0Hbcqo7YrjcVKY2WPGIlxoMVBuuXcUSvNB8Tdu6jv1jgq9KOoB0HNbnqX/l3TzN9ckC6Hr+QrwzLIpTYNefDlNovMCz+zBP6ALfMwADCYM=,iv:EiXUFcWr9iL1qdfzcTiL6LYLLrsShzwNNhE0eyLVYrU=,tag:JyN9WrQWSE/3wFksooRRFA==,type:str]
|
mac: ENC[AES256_GCM,data:H4uRid1Fqx4JzsF43TSGa7QcGjpXLAHiM0N3Kf4z7ab4eMlTy1+RXMV7xVT9BinjZzH6P+ENxo0yVOsdt0Yu467KJhGznNWlb2MC2TElPxZ9/yItJ+hdVGHGWbVGFWUL5NOUQ9fY2NPGw0CGr8qyftLr5Qkx0LO/VUgKWkq6RWM=,iv:9+V/sCBhfWAsIvr4DsWQgkeqQZQyT4Ti3Y+qCEZqU5c=,tag:JCRONb54BpXQzYhhPs7VGA==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-07-25T08:12:52Z"
|
- created_at: "2026-05-02T16:59:43Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiAQ//efLh++Dcra+LFtcgz/BRXdLyE+RhWXpQjABE2PzgOJpQ
|
hQIMA7uy4qQr71wiAQ/9HzeTVqelbvPtluYa5xGvoYNeEEXg43CwrwZ1/z5yFWvx
|
||||||
xubJJDmIV7BtUFyJS2lEjuZ2Be8uYxs2WtWILDktz2IwNQ882NVCWNCQTPuzEpoK
|
DoOCeyro5wFsNC6td7n2HVhtK0ULkfrMHH8OC+7L3bXbnlEnQzITmDggAUvfegCv
|
||||||
DWqwi7/L6iQldx1aeE/VUocyIxYsqS8ZUHqOM8Z95xlQ0/fmhB7reTCXvuEOiRy6
|
b/7ohPkOdLvi6qXbr8bgqCZYFnPq+gUs3UOPh5Tl6wgzRSFXw2Hsb4YmQkvZJUNb
|
||||||
Aapvb2yW9nm7PwBVhJiWQQLGVGUkgPE7HIK1ar3ODl+b4T0FCYqjUzeB78mG2D5i
|
PhPpLIUe/ECE4hmEjO5v9o3X0o7qZ3bahf9mZZlnJnvXT7R/DM8eeWTis/q0WSHE
|
||||||
RI0SRt56w+g9XVWk1tijKL9wx11U9KOBbmbdBuE9fkHuenns5omAzKIK0iwdHQkV
|
XnclhOX4GlMwXxa65sRrShuPcsV3qqX3VWOSWJFBhGx/FDtZTkhlHGQ9YhF2TzbB
|
||||||
cl3rr6m79OAqJglDYLFf8LOgHxuVcnlVxOYgmiHXjG4hlJlt7rGE96+UlRHCemhD
|
xxCrn87mH2W13NH6jQOQYPh1JTTJbgZZMZXgyPNmPDSYZE1kxTdrz4l4mcmCDND0
|
||||||
bgyc7kDR3h4XMagI0OcLzjyvwsymCtZFiE5PLRVLkSCQuyrp5B3QL7Z5hbRZFiKF
|
hY3T8iR8ap2b3HhSNCqC1C0QN/bK217hTs8cJHWRRfa6jfh12imwk2XhJkB3zZxV
|
||||||
UlOziOw8sPOcvjOOJpPYF2IqWAGLSYwo5S0nI0O0bwOiM+T+ehZ5q8p47NzFp04q
|
O1oSb6eiP0ba0CgXu31shmfXuTAeVbTm6E50heYorjQKR5djjnOVwQUdmis1Awae
|
||||||
l6JpHtWdjsxVS38nDb9AWqvoHyf8EtFbJYmKeowmbN1/toPQ1q80at/NtUZIzn/3
|
AQTiWtBBbOgfX5WA5b6wInFr0WEsshG+YuqfB7FhJpo2SHyeFhgk47ssHWSeBpPv
|
||||||
+VhxDP9u38u+lAAuhaBdIolitOi9CWwHqrnRXFa3V4fpQfJqXUc9You5bw/+EABV
|
wa4OAGaMkdGoePQhApZFrBCZHslEhPE+XQlDdyOtXCmxBOcLwe59ikWLV75j0DzS
|
||||||
jTjMpcN7cPWE7SC9R1ZZjvxrMKK0qxdKO5cvXtP/hBd4zOnBqhsQBzr/QB3DycPS
|
NRUNOBYQ8Q1Y6Su/sJWW7TykQkmDirU+oIYxAngZyIyJSWvARPd6fJJvkqqg013S
|
||||||
XAExosGRaKVumsUVYqEnh7ACVtMHGDLvupj1mqSa8oxRJLVDXNFLpEllFqLpoxjD
|
XgH1+LQJWNEJzIaLKCWbkZXnMstsOYrs4ynV4f/QZKU+Md5CgVbjy9KIC/trfNhj
|
||||||
qbCMib+JeL9/Aq83Apk3HQ48WX+4hvtkKIJ7gzeIPC/IvIVJHk0shd49kxBN
|
1t9kkyVVOEO7UmRhMyl8pK2gQDiOBrkhUJ5tSNFEfxM1llZ4GZRV+SUuMC3UzVA=
|
||||||
=Xsas
|
=l7Wo
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
||||||
|
|||||||
@@ -30,9 +30,6 @@ data:
|
|||||||
docker-r740 IN A 10.1.2.212
|
docker-r740 IN A 10.1.2.212
|
||||||
truenas IN A 10.1.2.139
|
truenas IN A 10.1.2.139
|
||||||
|
|
||||||
; P330
|
|
||||||
p330 IN A 10.1.2.132
|
|
||||||
|
|
||||||
; PVE
|
; PVE
|
||||||
pve IN A 10.1.2.10
|
pve IN A 10.1.2.10
|
||||||
docker-homeprod IN A 10.1.2.12
|
docker-homeprod IN A 10.1.2.12
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ storageClass:
|
|||||||
create: true
|
create: true
|
||||||
name: nfs-csi
|
name: nfs-csi
|
||||||
annotations:
|
annotations:
|
||||||
storageclass.kubernetes.io/is-default-class: "false"
|
storageclass.kubernetes.io/is-default-class: "true"
|
||||||
parameters:
|
parameters:
|
||||||
server: truenas.lan
|
server: truenas.lan
|
||||||
share: /mnt/fast_app_data/kube/
|
share: /mnt/fast_app_data/kube/
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ spec:
|
|||||||
path: ./kubernetes/system/cert-manager-issuer
|
path: ./kubernetes/system/cert-manager-issuer
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- name: cert-manager
|
- name: cert-manager
|
||||||
- name: cert-manager-webhook-ovh
|
|
||||||
decryption:
|
decryption:
|
||||||
provider: sops
|
provider: sops
|
||||||
secretRef:
|
secretRef:
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
# Flux Kustomization for cert-manager-webhook-ovh
|
|
||||||
# Depends on cert-manager being fully operational (CRDs installed)
|
|
||||||
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
|
||||||
kind: Kustomization
|
|
||||||
metadata:
|
|
||||||
name: cert-manager-webhook-ovh
|
|
||||||
namespace: flux-system
|
|
||||||
spec:
|
|
||||||
interval: 10m
|
|
||||||
prune: true
|
|
||||||
sourceRef:
|
|
||||||
kind: GitRepository
|
|
||||||
name: homeprod
|
|
||||||
path: ./kubernetes/system/cert-manager-webhook-ovh
|
|
||||||
dependsOn:
|
|
||||||
- name: cert-manager
|
|
||||||
decryption:
|
|
||||||
provider: sops
|
|
||||||
secretRef:
|
|
||||||
name: flux-sops
|
|
||||||
@@ -5,5 +5,4 @@ kind: Kustomization
|
|||||||
resources:
|
resources:
|
||||||
- webhook.yaml
|
- webhook.yaml
|
||||||
- cert-manager.yaml
|
- cert-manager.yaml
|
||||||
- cert-manager-webhook-ovh.yaml
|
|
||||||
- cert-manager-issuer.yaml
|
- cert-manager-issuer.yaml
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
||||||
kind: Kustomization
|
|
||||||
namespace: longhorn-system
|
|
||||||
resources:
|
|
||||||
- namespace.yaml
|
|
||||||
- repository.yaml
|
|
||||||
- release.yaml
|
|
||||||
- recurring-jobs.yaml
|
|
||||||
secretGenerator:
|
|
||||||
- name: longhorn-values
|
|
||||||
files:
|
|
||||||
- values.yaml=values.yaml
|
|
||||||
configurations:
|
|
||||||
- kustomizeconfig.yaml
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
nameReference:
|
|
||||||
- kind: Secret
|
|
||||||
version: v1
|
|
||||||
fieldSpecs:
|
|
||||||
- path: spec/valuesFrom/name
|
|
||||||
kind: HelmRelease
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: longhorn-system
|
|
||||||
labels:
|
|
||||||
pod-security.kubernetes.io/enforce: privileged
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
# Recurring backup and snapshot schedules for Longhorn.
|
|
||||||
apiVersion: longhorn.io/v1beta2
|
|
||||||
kind: RecurringJob
|
|
||||||
metadata:
|
|
||||||
name: daily-snapshot
|
|
||||||
namespace: longhorn-system
|
|
||||||
spec:
|
|
||||||
# Fast local recovery from accidental deletes.
|
|
||||||
name: daily-snapshot
|
|
||||||
task: snapshot
|
|
||||||
cron: "0 2 * * *"
|
|
||||||
retain: 7
|
|
||||||
concurrency: 2
|
|
||||||
labels:
|
|
||||||
type: snapshot
|
|
||||||
groups:
|
|
||||||
- default
|
|
||||||
---
|
|
||||||
apiVersion: longhorn.io/v1beta2
|
|
||||||
kind: RecurringJob
|
|
||||||
metadata:
|
|
||||||
name: daily-backup
|
|
||||||
namespace: longhorn-system
|
|
||||||
spec:
|
|
||||||
# Daily NFS backup for DR if a node is lost.
|
|
||||||
name: daily-backup
|
|
||||||
task: backup
|
|
||||||
cron: "0 3 * * *"
|
|
||||||
retain: 7
|
|
||||||
concurrency: 2
|
|
||||||
labels:
|
|
||||||
type: backup
|
|
||||||
groups:
|
|
||||||
- default
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
|
||||||
kind: HelmRelease
|
|
||||||
metadata:
|
|
||||||
name: longhorn
|
|
||||||
namespace: longhorn-system
|
|
||||||
spec:
|
|
||||||
interval: 1m
|
|
||||||
chart:
|
|
||||||
spec:
|
|
||||||
sourceRef:
|
|
||||||
kind: HelmRepository
|
|
||||||
name: longhorn
|
|
||||||
namespace: longhorn-system
|
|
||||||
chart: longhorn
|
|
||||||
version: '1.12.0'
|
|
||||||
interval: 1m
|
|
||||||
valuesFrom:
|
|
||||||
- kind: Secret
|
|
||||||
name: longhorn-values
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
apiVersion: source.toolkit.fluxcd.io/v1
|
|
||||||
kind: HelmRepository
|
|
||||||
metadata:
|
|
||||||
name: longhorn
|
|
||||||
namespace: longhorn-system
|
|
||||||
spec:
|
|
||||||
interval: 1m
|
|
||||||
url: https://charts.longhorn.io
|
|
||||||
@@ -1,104 +0,0 @@
|
|||||||
# Longhorn Helm Values
|
|
||||||
defaultSettings:
|
|
||||||
# 2 replicas so volumes survive single-node loss
|
|
||||||
defaultReplicaCount: 2
|
|
||||||
# Allow full disk usage on single-node
|
|
||||||
storageOverProvisioningPercentage: 100
|
|
||||||
storageMinimalAvailablePercentage: 10
|
|
||||||
# Auto-salvage on node reboot (single-node)
|
|
||||||
autoSalvage: true
|
|
||||||
# Disable strict flushing for better single-node performance
|
|
||||||
strictSyncReplicas: false
|
|
||||||
# Toleration for system-managed Longhorn pods (instance-manager, engine,
|
|
||||||
# replica, CSI plugin). These pods are created dynamically by
|
|
||||||
# longhorn-manager — NOT from Helm templates — so their tolerations must be
|
|
||||||
# set here via the `taintToleration` setting (semicolon-separated `kubectl
|
|
||||||
# taint` syntax), not via per-component `tolerations` blocks.
|
|
||||||
#
|
|
||||||
# The P330 node is tainted `dedicated=failover:NoSchedule` (see
|
|
||||||
# infra/p330/kube/variables.tf). Tolerating it lets Longhorn schedule
|
|
||||||
# engine/replica pods there so a volume can be failed over to the P330.
|
|
||||||
# The control-plane taint is also tolerated defensively, although with
|
|
||||||
# allowSchedulingOnControlPlanes=true on the R740 it is not actually applied.
|
|
||||||
taintToleration: dedicated=failover:NoSchedule;node-role.kubernetes.io/control-plane:NoSchedule
|
|
||||||
persistence:
|
|
||||||
defaultClass: true
|
|
||||||
defaultClassReplicaCount: 2
|
|
||||||
# Retain volumes on PVC delete — safer during migration
|
|
||||||
reclaimPolicy: Retain
|
|
||||||
# Mount options for ext4
|
|
||||||
fstype: ext4
|
|
||||||
# longhorn-manager is a DaemonSet — it must run on every storage node,
|
|
||||||
# including the P330 failover node. The control-plane toleration is defensive
|
|
||||||
# (allowSchedulingOnControlPlanes=true means it is not actually applied on the
|
|
||||||
# R740, but keeps things correct if that ever changes).
|
|
||||||
longhornManager:
|
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:DDNTXJiwP2LQiOmqgf/L6tLIZiFgqh42dLDXj8xomGv7rlUP9A==,iv:eu6vnl3EiLu1DWWDWlxkQNcN6/uEhSkpufw7L9Ikr14=,tag:DJOMo8LDGmzkqvIEkfCTHg==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
# Tolerate the failover taint so longhorn-manager runs on the P330
|
|
||||||
- key: ENC[AES256_GCM,data:rbWq0sruC6zC,iv:Eq5izQ4LXZ90Bhf1BJ7V9/Xo7HVMULeDHZ6NgItZfGQ=,tag:ixJt7YD4cBy+SrG2WVn0ng==,type:str]
|
|
||||||
value: ENC[AES256_GCM,data:wxGNkS97rg8=,iv:bBGGqcwibhXE0zkH+ZJEVgr20ogu7JwQxxDXqJcMdsQ=,tag:VLBQh8vRl1SiYB9S/vwLeg==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
effect: NoSchedule
|
|
||||||
# longhorn-driver (CSI provisioner/attacher deployer) — tolerate the same
|
|
||||||
# taints so CSI operations work from the failover node.
|
|
||||||
longhornDriver:
|
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:1EBSG4hL4heCnLFJYzTNaQWtFU3v6xwTlG+Y9/H4p5d0TZdFog==,iv:9ILcNXXzxzG5CYA4Ny7bKHBI581B1qJC3OBUObScxbQ=,tag:4B4JaFO0tfyVA6w7ypCY6g==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:ZSC5qg+ChOkI,iv:rIq8j7L7F641kWDzcSV9lrYxhHggT1FTZ8WF53vxvV0=,tag:Hj4RlF3usdIQi0G6Ecmdbg==,type:str]
|
|
||||||
value: ENC[AES256_GCM,data:YfiuCv2EKec=,iv:+6i5CT1ToCKy1gFtVVIFv5FLQaJaKHx4vQk8b0IBy3U=,tag:zHgzNuijbwI1QbvuLnZNvw==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
effect: NoSchedule
|
|
||||||
# longhorn-ui — tolerate the same taints so the UI is reachable even if it
|
|
||||||
# lands on the failover node.
|
|
||||||
longhornUI:
|
|
||||||
replicas: 1
|
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:n4UdwssGYhHQgDTpCpu+WgIPsdNc8uAaZtnURZt0/C3VfeLR4w==,iv:mqy0GqHN0KxtkETS7psu61Mr1oGmtPDhg2vQhVDas6c=,tag:uUd+NY90XK3i0aigc5ndCg==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:isSkUNqax+AU,iv:jWgZyZL9VMmzYqoLCUkIiUuy1iBeOm2RE5CjZGCcXxQ=,tag:714V0YGb7jqebC4IRX/phw==,type:str]
|
|
||||||
value: ENC[AES256_GCM,data:Qbtu1wgV1oI=,iv:RihD43IA1+C3m9OkXACGgd5lY9lDWCyzIcw/MCoSMvg=,tag:WzQtC4rT+uovS6s36DJWUw==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
effect: NoSchedule
|
|
||||||
# Disable ingress for now
|
|
||||||
ingress:
|
|
||||||
enabled: false
|
|
||||||
# Default backup store (NFS target on TrueNAS).
|
|
||||||
defaultBackupStore:
|
|
||||||
# NFS endpoint exposing the TrueNAS dataset as a backup target.
|
|
||||||
backupTarget: nfs://truenas.lan:/mnt/fast_app_data/longhorn-backup
|
|
||||||
# No credentials required for an anonymously-readable NFS export.
|
|
||||||
backupTargetCredentialSecret: ""
|
|
||||||
# Poll the backup target every 5 minutes for new/removed backups.
|
|
||||||
pollInterval: 300
|
|
||||||
sops:
|
|
||||||
lastmodified: "2026-07-26T08:44:08Z"
|
|
||||||
mac: ENC[AES256_GCM,data:4shHlVWcVol/Z8b+5+tz6shT8x6gCZz2xhYv1VT7dHlgcYWWgq2V5mbGUtsVmWFzkGPC5rYvU3dUEiEkl0zb6Q1rP/fD6xQmlyIgH/ioHrfCvjorY5Rv8t4OFH/TyBK9hMwC+iFdAUJOdE9vYQoDmUMTGz6XwWiDY3PxRv1X9D4=,iv:DDDiStImg5qH2QP9lcSyW5+b+1P1mk6F0TWkt9p2syo=,tag:zJnZ455gsXPkE4Lfup2Rcg==,type:str]
|
|
||||||
pgp:
|
|
||||||
- created_at: "2026-07-26T08:44:08Z"
|
|
||||||
enc: |-
|
|
||||||
-----BEGIN PGP MESSAGE-----
|
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiAQ/9FsBtkggrKwHfh5FFRUFkyqCU596d/R7ZEvsMP7zzCH9H
|
|
||||||
VAAYJxl8D6/KY5EavpeZH4s2ZnlzZjlb/qS2CKpSzXuN7ADPnK10cBxxAOQLp6KF
|
|
||||||
pqdkv6x5MyWbfv87IzM8cI0D/jlG2/iZPfBZy/YU4Rg8cefIl82vNgNADW2O68bK
|
|
||||||
w1VS75AYKmUfXZ2vqz+wX46YcjdXkrvRwzM9lzfIm2Q2dKMqBKSYzxMICZ/hWGRj
|
|
||||||
t33KbZLKC1Kg0NmYOY4GCt8hi6Ck4TjKvzxktsEpXYFDhWzXe9nr+axtrfypLrAn
|
|
||||||
fcLCQV1FSovMK+P4JxB/dd0u+F3RR500F3tBJPQ1xs1Rc1f8Cd2Ynr/3LWtTstkq
|
|
||||||
JyOfLFAj4/LG8o7ub/FSvLZZI052iRLZqlIIe0cFTqCz31yVEJOnLJWmME36hDEm
|
|
||||||
rfd3X9IvixfwWVTa3K0TxZta7u0Q0DsqHIt3eLdeTJC3wY4J+A/vUvPFv137YEqp
|
|
||||||
O+/ALTbwK7ViSQIupjr4kEcklBtiu9myNi3u8JNg67/XHwahCh0tfGk4jCevve5S
|
|
||||||
dDk4Ud7469LuDwYSZw0RdwuU89jQivvsp8/mZpQIoSVzl//iEQ2EOAff1gMfiPoj
|
|
||||||
1MrwGtrrMAo+2Uoxacd7LfFn/l1zRNiGw1rX21NzswmzIU84US4Grv9LGealQ8TS
|
|
||||||
XgH+datMRHIAPKcYY0u/B/PfyoKArlPUzQsIQOm02+s1zuvK/dArKxgObKTAr/u4
|
|
||||||
uNuVH3ObUVMb6VX4iwlxfS+VKpjotTbgY2TJfV46kGC3JJ0w1LdjEyJbpYlIz/k=
|
|
||||||
=HWEp
|
|
||||||
-----END PGP MESSAGE-----
|
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
|
||||||
version: 3.10.2
|
|
||||||
@@ -11,48 +11,28 @@ ports:
|
|||||||
# caddy
|
# caddy
|
||||||
- 10.1.2.152/32
|
- 10.1.2.152/32
|
||||||
- 10.0.0.0/8
|
- 10.0.0.0/8
|
||||||
# Tolerate failover node
|
|
||||||
tolerations:
|
|
||||||
- key: ENC[AES256_GCM,data:730ZJScF+2rP,iv:n1QgsKA3w6rv1d2tQddG8FkmADp6tI1gj+p7FnD1uA8=,tag:wtlI+476AdFHSp8I68Qs4Q==,type:str]
|
|
||||||
operator: Equal
|
|
||||||
value: ENC[AES256_GCM,data:uSBDyP1NASA=,iv:wFwuuUWxQKqmb8HMVvbBmMEwuWfxrCVE+soDvM0co6s=,tag:1OZ1KaTKMfMhSZhA1+/zXg==,type:str]
|
|
||||||
effect: NoSchedule
|
|
||||||
- key: ENC[AES256_GCM,data:eWiYi/AytLLefqvh2WeoC557WVtWH7c5wYFZYHH0oaIPHd/UyQ==,iv:zreUmSRjGCYywVO1w7+axPmt1E6WON9k63EWhzN6L5c=,tag:zS/rA1dTwp8QMzdi8g8uLg==,type:str]
|
|
||||||
operator: Exists
|
|
||||||
effect: NoSchedule
|
|
||||||
# Prefer non-failover nodes in normal operation
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- weight: 100
|
|
||||||
preference:
|
|
||||||
matchExpressions:
|
|
||||||
- key: ENC[AES256_GCM,data:1eMq19wPgLa5uYzYlrrN783Ps5U=,iv:WU2PcuCN9YsT3k86TN9347iErqH7s5JiOKlPfiBK2oU=,tag:BWEdA34tVe8FYUjaztPTqw==,type:str]
|
|
||||||
operator: NotIn
|
|
||||||
values:
|
|
||||||
- "true"
|
|
||||||
sops:
|
sops:
|
||||||
lastmodified: "2026-07-25T08:22:16Z"
|
lastmodified: "2026-05-26T11:18:08Z"
|
||||||
mac: ENC[AES256_GCM,data:3L2sGcpCY1DbFib+13cTJ382EB3DgDJyT5nrE6Pz2gJEqDoF867vDYFvl7qxmT0VXaX6a9g/Q0j97EBbq+oiko0t+sYU0dCRRvcnmgbZaY6TA6WhwMzB6STqZW0XhUc6o5mgvIh7YCgCpPl1yFI4Oeffkrd7EQnx66FPxZYtNzg=,iv:PBZSXeYx8ywDR3wsahldquUfUDTNgC+znYdVcV9SDuw=,tag:d48/XYEaIC5I6cZXCRW/kg==,type:str]
|
mac: ENC[AES256_GCM,data:mA5hLNB0rwSiGhnyi24AhZIPJsLpZ6PpbXDyoxZ0q6YjitrClxBEnn2dHtEl2MD6dSLmNMVxnnGyGtl7j4ahfqhuct+oPSepeWT1QX8Xj/mJ2Yrt8UZfGQ1R0Ye+rKGFybluMguCRufioGQpU3TLs2TxB6RxUAiGMI1GyT3JBDY=,iv:Pf617ZQBgYbGEsF7AOtyZBCPUycQ7U/D+Sdl+MCF4y0=,tag:tleTblRukBO0V+zfL05fQw==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-07-25T08:22:16Z"
|
- created_at: "2026-05-26T11:18:08Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiARAAxFUgi7EmKbvClLsuCBT3H40QeXdnEoTYmpVJHhoUp9ex
|
hQIMA7uy4qQr71wiAQ/+PJv3xyn1nqVN4ENsKv1GgMaCrmD+F1bpyCEM6quoOe1V
|
||||||
vw8K49rg1UueJ7E3jenOhsFw7XiuH3JfCu/CjRW4kMdhBm9G7vGQLdoUub0gvW6Q
|
Q3jnfTrHNKQySQFS+56KdWkpvf54jUtl2N+v+mAT+02FkdH+fkFQc0rSfqfpwE7H
|
||||||
OgJLJcpoYaIkTowZLHxyQOVYv23FFHCfoEWHUEidHnDswy6ngtljS9U3aQFq67oR
|
8peu9wY5+nVRp3sUEacJjCgu44dzzIu0MzO9aHZw/JMr1Z+OF3mMeZ1vVEp43i6E
|
||||||
REbqMcaotkAUg921ZA60BrctJFvm5DKt33LbgrI6NQ7ku4cDHnRsJLxW0X5F0srl
|
ZwCd3HYBQVJ8DaSdkrT/a3r69dJZKYq3mL9XLYzc/6C4JFAF3oOO5Xzkx4BAQKrM
|
||||||
vuHfez7wTk/az7H07aPGlNcBc3MiXmpC9EpRj3ZCgi8RsWm58MFO4ErNAF1DGd1A
|
CDyVCJ6RihOyysiexRFGu72wIbiE1gSVqLAYzl8XDJyCcVOX8ZRuMh2ImGyuCXtI
|
||||||
flfpDRyoDxichpKGnNs1vrWOI3ceXj5241HsQne7dqBPO2sn0QhY0tN9imjKteab
|
8dANf39gf57Z3qM9ljNHgtUkFqcpeE66SdNCSeLK7pDl/02k6dPJr98+e0VtZPfv
|
||||||
bn3C3QSh/jePSJYoBE1tIr0b3+7NIUKeEHBZuS250KL3nZGAGHmYRGZubvrLag9u
|
xt/sFUnAppi5dI4I4AZ1upqFWH3zpud+3G+5CYnfn0yqSgysuJyqzSYv7rjJVStY
|
||||||
pnEWZw1yGI2glR/aXFgOk4eHqGfNkBSCQTN/7vErYe1FmUbsaiiJBLpzmNDPrWGy
|
oMdKprkLGcdLc9FJm3yaPluCnTGpPCaBpvx1bUlQSCIHcrbNj98kHjnuSDcUjgBc
|
||||||
d77Zv/GVCQ5Tod0sD714IyEj5j2ZH9nBGXW60VY/indmMoFpWlUzvii5x3g8Ig6G
|
xpcWmknbsZ0SFnU8fhe/p80Ud7h2Ya5Hp+GY+FPV2YDeQf03YKLGXujsVhm0scpo
|
||||||
R0cG20g/x/Q2IgEQuisVfZBq28hJ9SDQNequ+XjARWeO4Bg6VbQvYSiPMamEd1U4
|
KtAALuJo8uP3vniAaY6E1eQVZ09psqR3lFHgaRIyLVbOGkvOoE/sMVcS/odcKhgw
|
||||||
IBBWy+Q/MWMaMXN/igfEptvC89ttqK4ckPjgiN8dQyG97jy+xs0kll7JGvydyK/S
|
Gr6bb2iQ9b0seITxk09HV84uRirzgR+R2A2bxD38ASRzbYwDyA0UnJMSJK+ZttfS
|
||||||
XAGFitVH3lGXSmsDfijXKVP9/dUixM4Z38lxOwlb6cUyyREH6rRjWyqJcM9tTUVo
|
XgERXIWVWlTL77IVifpdu+7EU+ElyCzlTLHIb0uqywVS2o/LzE+OgR+1tSj0SVl0
|
||||||
ArLybrpWYkZ/eVWi2/EXQ7I9nWLoivzrilf80Gh4VPBesuisZdATZUwUY0EG
|
+NvGYouZlrecytaBj8MG9thv9kK/vNShrl0QeAWNch3Qza7Xb8eLOhumqZVFI9U=
|
||||||
=L8ob
|
=JbZl
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
||||||
|
|||||||
@@ -1,38 +1,11 @@
|
|||||||
ingress:
|
ingress:
|
||||||
main:
|
main:
|
||||||
enabled: true
|
enabled: true
|
||||||
hosts:
|
hosts:
|
||||||
- host: dashy.lan
|
- host: dashy.lan
|
||||||
paths:
|
paths:
|
||||||
- path: /
|
- path: /
|
||||||
pathType: ImplementationSpecific
|
pathType: ImplementationSpecific
|
||||||
persistence:
|
persistence:
|
||||||
data:
|
data:
|
||||||
enabled: true
|
enabled: true
|
||||||
storageClass: longhorn
|
|
||||||
sops:
|
|
||||||
lastmodified: "2026-07-18T14:22:16Z"
|
|
||||||
mac: ENC[AES256_GCM,data:Svz0vne+sbEj5wlL4FHUrTPMHlprWnZqR/X3tEmpDIxKBD0C/C9G1LgPYBiHviHEiiD/XbxxgH9nGcJIo4blbWc6xRNyUjnhGoLPIPJlG9LclXVh7dm4w4bETq4VfQZjLpY6bhv0q2d5GgxI6i+Hp16FSk8Y4kReErmQdg/Vh9I=,iv:zt3Rjt9KapI7LMMlpA/MPWK8EgGVFRpLJ4d2r4P74eY=,tag:fo2CgvaoT6bz1xmYA9DvGg==,type:str]
|
|
||||||
pgp:
|
|
||||||
- created_at: "2026-07-18T14:22:16Z"
|
|
||||||
enc: |-
|
|
||||||
-----BEGIN PGP MESSAGE-----
|
|
||||||
|
|
||||||
hQIMA7uy4qQr71wiAQ//RB59ULu3tagTsLKGU+2azz+yTgnRKUsauEhC2trzbpRO
|
|
||||||
Au0RYwQMyDmYwTAvIIRM5gWUGlIFpsiftpK6rZbvJiwb8npYVSF7/shqKzlqYiSi
|
|
||||||
+BHJCSqfk+emN9ULivxmq3i+t4YZ97Ap7uo+pUyBmpz4jis0vdiIDIszLwtJ3U0J
|
|
||||||
t6s2gVl4KE2STyVH+ShERG3yjSBuzvFpJVwSdAfGKeA8K6Umr1LQH/2JSlq8/2fV
|
|
||||||
Zubfu6aGXg564rsbZNs+P9/b5M4FmpSlSOlp6OLWnIosl9CfRVDynnRyLImvQ/8p
|
|
||||||
2Asf6vrAQZJVXHraGMfePNNA9sRxhMa8f1qgHDWGfHh8D8/7JwK5xoFWrNoO7Gb6
|
|
||||||
aex15qielE0N4jpiEC3t+jjRUQLdjMuSlRET/0RVrZRhZ4lUTOOINnw8eUic0vRz
|
|
||||||
OjPj/ffVI4+zqfq7GnopISWBtfMdc23Y+7IhL/8LWRJGLRSqB0fNQxWeS7dtze2o
|
|
||||||
2BWk+DsHiG/1bz2hdezuR+KTRoj7qPDI/eKPc1BpyHfVm8k1y3pFmwWY3rwGAGA0
|
|
||||||
6bB1VSBriE3pcvUiJw4N+Ja/C7gLcUVAtNKGLqxuWr+2bm/ExWItAbnZ/3cZzKtC
|
|
||||||
bULu5ic/zN3O3rRWCS5nFU+nD37pq1Iq3eHXOWygwNOJJcGGHl9+3j01y2iXUl3S
|
|
||||||
XgGKWMKthF+9AD1bASp8tZ1lfNuqyxjbdVyWb7xqRGa2jzWgAcVUaCWWaJU6yASF
|
|
||||||
LdXY6xVKr1DgBs666nv4xAESsgvZ9xP6e+YaxAr3piRuDhzoNFeveOD99tsgZOg=
|
|
||||||
=zi2x
|
|
||||||
-----END PGP MESSAGE-----
|
|
||||||
fp: DC6910268E657FF70BA7EC289974494E76938DDC
|
|
||||||
encrypted_regex: ^(password|value|ssh-key|api-key|user|username|privateKey|clientSecret|clientId|apiKey|extraArgs.*|.*Secret.*|extraEnvVars|.*SECRET.*|.*secret.*|key|.*Password|.*\.ya?ml)$
|
|
||||||
version: 3.10.2
|
|
||||||
|
|||||||
Reference in New Issue
Block a user