mirror of
https://github.com/vhaudiquet/homeprod.git
synced 2026-02-02 15:15:57 +00:00
Compare commits
45 Commits
4339a9b1bb
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a7cb52d724 | ||
| 397e0f8f11 | |||
| 8f56c5e273 | |||
| 42d077daf5 | |||
| ae3cb878ae | |||
| ec1f651cda | |||
| 2e0a75782e | |||
| 8a9692dd8a | |||
| e66bf36f01 | |||
| 28fc603f33 | |||
| 35772d5332 | |||
| dc49fe7375 | |||
|
|
d8cea24c6d | ||
|
|
83b674f8b3 | ||
|
|
fd37f8bdff | ||
|
2469562492
|
|||
| b4ddf3d2b5 | |||
|
05b967f517
|
|||
|
|
3465ae7798 | ||
|
|
2664dae2ba | ||
| 87b7d7f6ae | |||
|
|
0167c4ff65 | ||
| bea0cfbfe3 | |||
| 6c8a270c7d | |||
| 751e918e0a | |||
| 6faefd8942 | |||
| 77f8357091 | |||
| 844e599d1e | |||
| 159a22503d | |||
|
|
98149233fd | ||
|
|
dc336dbf17 | ||
|
|
ff97f089b6 | ||
|
|
32fc76c9cc | ||
|
|
dd0dff747b | ||
| 76c2abdfc5 | |||
| b2c9aae0bd | |||
| f183b1f37a | |||
| e6813e91d9 | |||
| a255866074 | |||
|
|
6677fd065e | ||
|
|
458a9ac124 | ||
|
583519cde9
|
|||
|
|
751a23340b | ||
|
|
9f8de91285 | ||
|
|
ef6a07dd05 |
3
.github/dependabot.yml
vendored
3
.github/dependabot.yml
vendored
@@ -5,7 +5,6 @@ updates:
|
||||
schedule:
|
||||
interval: weekly
|
||||
directories:
|
||||
- "/docker/gitea-actions"
|
||||
- "/docker/home/esphome"
|
||||
- "/docker/home/matter-server"
|
||||
- "/docker/home/mosquitto-mqtt"
|
||||
@@ -46,7 +45,6 @@ updates:
|
||||
- "/kubernetes/code/gitea"
|
||||
- "/kubernetes/code/harbor"
|
||||
- "/kubernetes/home/home-assisant"
|
||||
- "/kubernetes/home/zigbee2mqtt"
|
||||
- "/kubernetes/infrastructure/authentik"
|
||||
- "/kubernetes/personal/linkwarden"
|
||||
- "/kubernetes/personal/notesnook"
|
||||
@@ -55,4 +53,5 @@ updates:
|
||||
- "/kubernetes/system/csi-driver-nfs"
|
||||
- "/kubernetes/system/external-dns"
|
||||
- "/kubernetes/system/traefik"
|
||||
- "/kubernetes/tools/dashy"
|
||||
- "/kubernetes/tools/glance"
|
||||
|
||||
@@ -1,10 +1,3 @@
|
||||
gitea-actions:
|
||||
repo: homeprod
|
||||
branch: main
|
||||
compose_file: docker/gitea-actions/docker-compose.yml
|
||||
sops_files:
|
||||
- docker/gitea-actions/.env
|
||||
|
||||
esphome:
|
||||
repo: homeprod
|
||||
branch: main
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
GITEA_INSTANCE_URL=ENC[AES256_GCM,data:PYjmpgDEvPEC1S7MrN6d91IUBnGbFA9Xag==,iv:m7YQOMnuEoT5wDyy47aaTqjJG+dhqTJKf5i3hQs6GwY=,tag:2ldKTNRqdJEXTxr3uAyLLQ==,type:str]
|
||||
GITEA_RUNNER_REGISTRATION_TOKEN=ENC[AES256_GCM,data:RDnENtxQw80C7SwmMZV2DTlEx4+uvzVMy95leGb/1RR6egc6S4xWnQ==,iv:wThZ2+qukJqC+ApvXC9GBdneXJ00jkkTyq+2VXSDG+w=,tag:KygPnxauOpaI1goZ4+uf3g==,type:str]
|
||||
GITEA_RUNNER_NAME=ENC[AES256_GCM,data:HvNmmQyKxk16WQV8dRfPOfCO39w=,iv:z1YuNWvglBYaXQwZXjMzXD4ZN2d7c3eD9GdSaG1maNY=,tag:FtX6wG47uTGjTQ8UNvGfcg==,type:str]
|
||||
GITEA_RUNNER_LABELS=
|
||||
sops_lastmodified=2025-09-16T19:22:00Z
|
||||
sops_mac=ENC[AES256_GCM,data:JIp7wyaIsy2Jg9p3ybHAljkDn8vpDRHtf7Zm2/M4exe6CbWCRn1jGMle+SnKBv2DKVciquQ9B9cKtKnVCpEAQOceZ1WakwS/mCmjYTIHqcvm8/vst1BYiL1Ovbw2dDstzWo8g+UTKAmVC7E0TJ01vAbsOab+fVacKLHF97pBqW8=,iv:5tcuJntPXrWCeNTGQbXzLaGZnCc8rr+gKG+UTRBNUaY=,tag:g7EYMAaOmwjKFYfz1ID5xQ==,type:str]
|
||||
sops_pgp__list_0__map_created_at=2025-09-16T19:22:00Z
|
||||
sops_pgp__list_0__map_enc=-----BEGIN PGP MESSAGE-----\n\nhQIMA7uy4qQr71wiAQ//c0J+b0XwnMbLlQku3tAEutXuEkQPMMrdOpPYwrua9nNu\nSVPBSiamnTeoaP2kM5lcaQ7HUaRLiS1qjXNVPsnAdkGPPID3SxUJzUo7Ca/JOq7e\n39ihqetWAcn9dNDofTxVKyvKXhXKGaDFy2LhaKugj4tkx6qdMA/XAldvRD6ik1jK\nAZjl2xGYTvZ+XgTGtFs6u3Z9ugD6Q3yPjKRSfeIO8NPT5OFFzY70wqlZflxcpupD\npnsvXQkAK1Rnz6F9+dh6jJYYijTdEe9Q0i+0Uy3q+wMsf8KRWs4ARD05DpgIOnUA\nG0s2kdOOlvqoJ/m2fSV7vkIcCvCwhEirn5kfrdUGi3ENazh0g3vpppAfE0ynZdSo\nDiXI7dzCwMxYi8edieOhK3RrOn8bx7B8F1WE+mHL6StQmD2G+xfvgtKlsEJGY2Ed\n1CpMZSQ0TwFx58fYiK+HsZrwAw/3YVzPWryaYvJ6P8QnY3oJOJihSYGRMmyH5WRo\nle1Rxd+Lrt1UnWyZQ7rpqMsYiIzihsNgNix/2wS1R9R1wRFXPdNDfzjrv1BGm/aJ\nOOqUFo6Hd3jEwYcSsG7mbe+hCAAXoJjZSU43dVzeZ0k5ls/lpOjqjQrZZLgz33uF\nNVNRAKTYD2y+/mQ4vpDUsHhu5rtjxh8u1CJf0++q1W/w+Z4ooq5hcNm3ud3DHYjS\nXgF1JA9ThTS+Hs1fV5SFzGMyFMFGeiTVJeww26R+1Vws7fFwbyAYugOqAgkiNkIf\nS2dsxlH1TRjBq1XD4GYk6P3VDUU5UyxG/5XiOexGEVSxBL/wg6TwpyL1hjvgc9k=\n=fmOe\n-----END PGP MESSAGE-----
|
||||
sops_pgp__list_0__map_fp=DC6910268E657FF70BA7EC289974494E76938DDC
|
||||
sops_unencrypted_suffix=_unencrypted
|
||||
sops_version=3.10.2
|
||||
@@ -1,6 +0,0 @@
|
||||
services:
|
||||
runner:
|
||||
image: docker.io/gitea/act_runner:nightly
|
||||
env_file: .env
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
@@ -1,6 +1,6 @@
|
||||
services:
|
||||
esphome:
|
||||
image: ghcr.io/esphome/esphome:2025.12.3
|
||||
image: ghcr.io/esphome/esphome:2026.1.0
|
||||
ports:
|
||||
- "6052"
|
||||
networks:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
services:
|
||||
n8n:
|
||||
image: docker.n8n.io/n8nio/n8n:2.1.4
|
||||
image: docker.n8n.io/n8nio/n8n:2.4.6
|
||||
environment:
|
||||
- TZ=Europe/Paris
|
||||
- N8N_SECURE_COOKIE=false
|
||||
|
||||
@@ -2,7 +2,7 @@ services:
|
||||
zigbee2mqtt:
|
||||
container_name: zigbee2mqtt
|
||||
restart: unless-stopped
|
||||
image: koenkk/zigbee2mqtt:2.7.1
|
||||
image: koenkk/zigbee2mqtt:2.7.2
|
||||
networks:
|
||||
- default
|
||||
- proxy
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
services:
|
||||
stalwart:
|
||||
image: stalwartlabs/stalwart:v0.15.3
|
||||
image: stalwartlabs/stalwart:v0.15.4
|
||||
container_name: stalwart
|
||||
networks:
|
||||
- default
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
services:
|
||||
jackett:
|
||||
container_name: jackett
|
||||
image: ghcr.io/hotio/jackett:release-0.24.622
|
||||
image: ghcr.io/hotio/jackett:release-0.24.900
|
||||
ports:
|
||||
- "9117"
|
||||
networks:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
services:
|
||||
jellyfin:
|
||||
image: jellyfin/jellyfin:2025122905
|
||||
image: jellyfin/jellyfin:2026011205
|
||||
container_name: jellyfin
|
||||
networks:
|
||||
- default
|
||||
|
||||
@@ -16,7 +16,7 @@ services:
|
||||
POSTGRES_DB: paperless
|
||||
|
||||
paperless-webserver:
|
||||
image: ghcr.io/paperless-ngx/paperless-ngx:2.20.3
|
||||
image: ghcr.io/paperless-ngx/paperless-ngx:2.20.5
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- default
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
services:
|
||||
radicale:
|
||||
image: tomsquest/docker-radicale:3.5.10.0
|
||||
image: tomsquest/docker-radicale:3.6.0.0
|
||||
container_name: radicale
|
||||
ports:
|
||||
- 5232
|
||||
|
||||
@@ -10,7 +10,7 @@ services:
|
||||
env_file: .env
|
||||
|
||||
patch_detector:
|
||||
image: git.vhaudiquet.fr/vhaudiquet/lolstats-patch_detector:de9406a583835dc0840da8586a6d539abdfb603f
|
||||
image: git.vhaudiquet.fr/vhaudiquet/lolstats-patch_detector:e0a39dab0a5130d8f98e956e3a1c5676410b2d25
|
||||
build: ./patch_detector
|
||||
restart: "no"
|
||||
deploy:
|
||||
@@ -22,7 +22,7 @@ services:
|
||||
|
||||
|
||||
match_collector:
|
||||
image: git.vhaudiquet.fr/vhaudiquet/lolstats-match_collector:de9406a583835dc0840da8586a6d539abdfb603f
|
||||
image: git.vhaudiquet.fr/vhaudiquet/lolstats-match_collector:e0a39dab0a5130d8f98e956e3a1c5676410b2d25
|
||||
build: ./match_collector
|
||||
restart: "no"
|
||||
deploy:
|
||||
@@ -33,7 +33,7 @@ services:
|
||||
env_file: .env
|
||||
|
||||
frontend:
|
||||
image: git.vhaudiquet.fr/vhaudiquet/lolstats-frontend:de9406a583835dc0840da8586a6d539abdfb603f
|
||||
image: git.vhaudiquet.fr/vhaudiquet/lolstats-frontend:e0a39dab0a5130d8f98e956e3a1c5676410b2d25
|
||||
build: ./frontend
|
||||
restart: always
|
||||
networks:
|
||||
|
||||
49
infra/r740/docker/main.tf
Normal file
49
infra/r740/docker/main.tf
Normal file
@@ -0,0 +1,49 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
docker = {
|
||||
source = "kreuzwerker/docker"
|
||||
version = "3.6.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Docker configuration
|
||||
provider "docker" {
|
||||
host = "ssh://root@${var.docker_host}"
|
||||
}
|
||||
|
||||
resource "docker_image" "swarm-cd" {
|
||||
name = "swarm-cd:latest"
|
||||
# For now, custom-built image based on custom development branch
|
||||
# Once this reaches upstream, back to upstream tag, like:
|
||||
# ghcr.io/m-adawi/swarm-cd:1.9.0
|
||||
}
|
||||
|
||||
resource "docker_container" "swarm-cd" {
|
||||
name = "swarm-cd"
|
||||
image = docker_image.swarm-cd.image_id
|
||||
volumes {
|
||||
host_path = "/var/run/docker.sock"
|
||||
container_path = "/var/run/docker.sock"
|
||||
read_only = true
|
||||
}
|
||||
volumes {
|
||||
host_path = "/root/homeprod/.swarmcd/repos.yaml"
|
||||
container_path = "/app/repos.yaml"
|
||||
read_only = true
|
||||
}
|
||||
volumes {
|
||||
host_path = "/root/homeprod/.swarmcd/stacks.yaml"
|
||||
container_path = "/app/stacks.yaml"
|
||||
read_only = true
|
||||
}
|
||||
volumes {
|
||||
host_path = "/app/swarm-cd/data"
|
||||
container_path = "/data"
|
||||
}
|
||||
env = [
|
||||
"SOPS_GPG_PRIVATE_KEY=${var.sops_private_key}"
|
||||
]
|
||||
|
||||
depends_on = [ docker_image.swarm-cd ]
|
||||
}
|
||||
8
infra/r740/docker/variables.tf
Normal file
8
infra/r740/docker/variables.tf
Normal file
@@ -0,0 +1,8 @@
|
||||
variable "sops_private_key" {
|
||||
description = "Private SOPS GPG key for SwarmCD to decrypt secrets"
|
||||
type = string
|
||||
}
|
||||
variable "docker_host" {
|
||||
description = "Docker machine hostname"
|
||||
type = string
|
||||
}
|
||||
311
infra/r740/kube/main.tf
Normal file
311
infra/r740/kube/main.tf
Normal file
@@ -0,0 +1,311 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
talos = {
|
||||
source = "siderolabs/talos"
|
||||
version = "0.9.0"
|
||||
}
|
||||
kubernetes = {
|
||||
source = "hashicorp/kubernetes"
|
||||
version = "2.36.0"
|
||||
}
|
||||
helm = {
|
||||
source = "hashicorp/helm"
|
||||
version = "2.17.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Talos configuration
|
||||
provider "talos" {}
|
||||
|
||||
# Kubernetes configuration
|
||||
provider "kubernetes" {
|
||||
config_path = "${path.module}/kubeconfig"
|
||||
}
|
||||
# Helm configuration
|
||||
provider "helm" {
|
||||
kubernetes {
|
||||
config_path = "${path.module}/kubeconfig"
|
||||
}
|
||||
}
|
||||
|
||||
resource "talos_machine_secrets" "kube" {}
|
||||
|
||||
data "talos_machine_configuration" "kube" {
|
||||
cluster_name = "kube-${var.physical_hostname}"
|
||||
machine_type = "controlplane"
|
||||
cluster_endpoint = "https://${var.kube_host}:6443"
|
||||
machine_secrets = talos_machine_secrets.kube.machine_secrets
|
||||
config_patches = [
|
||||
yamlencode({
|
||||
machine = {
|
||||
install = {
|
||||
image = "factory.talos.dev/installer/ce4c980550dd2ab1b17bbf2b08801c7eb59418eafe8f279833297925d67c7515:v1.11.5"
|
||||
}
|
||||
network = {
|
||||
nameservers = [
|
||||
"10.1.2.3"
|
||||
]
|
||||
}
|
||||
certSANs = [
|
||||
"${var.kube_host}", "${var.kube_hostname}"
|
||||
]
|
||||
}
|
||||
cluster = {
|
||||
clusterName = "kube-${var.physical_hostname}"
|
||||
allowSchedulingOnControlPlanes = true
|
||||
apiServer = {
|
||||
certSANs = [
|
||||
"${var.kube_host}", "${var.kube_hostname}"
|
||||
]
|
||||
}
|
||||
network = {
|
||||
dnsDomain = "cluster.local"
|
||||
cni = {
|
||||
name: "none"
|
||||
}
|
||||
}
|
||||
proxy = {
|
||||
disabled = true
|
||||
}
|
||||
}
|
||||
})
|
||||
]
|
||||
}
|
||||
|
||||
data "talos_client_configuration" "kube" {
|
||||
cluster_name = "kube-${var.physical_hostname}"
|
||||
client_configuration = talos_machine_secrets.kube.client_configuration
|
||||
nodes = ["${var.kube_host}"]
|
||||
}
|
||||
|
||||
resource "talos_machine_configuration_apply" "kube" {
|
||||
client_configuration = talos_machine_secrets.kube.client_configuration
|
||||
machine_configuration_input = data.talos_machine_configuration.kube.machine_configuration
|
||||
node = var.kube_host
|
||||
depends_on = [ talos_machine_secrets.kube ]
|
||||
}
|
||||
|
||||
resource "talos_machine_bootstrap" "kube" {
|
||||
node = var.kube_host
|
||||
client_configuration = talos_machine_secrets.kube.client_configuration
|
||||
depends_on = [ talos_machine_configuration_apply.kube, talos_machine_secrets.kube ]
|
||||
}
|
||||
|
||||
resource "talos_cluster_kubeconfig" "kube" {
|
||||
node = var.kube_host
|
||||
depends_on = [ talos_machine_bootstrap.kube ]
|
||||
client_configuration = talos_machine_secrets.kube.client_configuration
|
||||
}
|
||||
|
||||
output "kubeconfig" {
|
||||
sensitive = true
|
||||
value = talos_cluster_kubeconfig.kube.kubeconfig_raw
|
||||
}
|
||||
|
||||
resource "local_file" "kubeconfig" {
|
||||
content = "${talos_cluster_kubeconfig.kube.kubeconfig_raw}"
|
||||
filename = "${path.module}/kubeconfig"
|
||||
depends_on = [ talos_cluster_kubeconfig.kube ]
|
||||
}
|
||||
|
||||
data "talos_client_configuration" "talosconfig" {
|
||||
cluster_name = "kube-${var.physical_hostname}"
|
||||
client_configuration = talos_machine_secrets.kube.client_configuration
|
||||
nodes = [var.kube_host]
|
||||
}
|
||||
|
||||
resource "local_file" "talosconfig" {
|
||||
content = "${data.talos_client_configuration.talosconfig.talos_config}"
|
||||
filename = "${path.module}/talosconfig"
|
||||
depends_on = [ data.talos_client_configuration.talosconfig ]
|
||||
}
|
||||
|
||||
# TODO : Wait for talos_cluster_kubeconfig...
|
||||
resource "helm_release" "cilium" {
|
||||
name = "cilium"
|
||||
namespace = "kube-system"
|
||||
repository = "https://helm.cilium.io/"
|
||||
chart = "cilium"
|
||||
wait = false
|
||||
depends_on = [ local_file.kubeconfig, talos_cluster_kubeconfig.kube ]
|
||||
|
||||
set {
|
||||
name = "ipam.mode"
|
||||
value = "kubernetes"
|
||||
}
|
||||
set {
|
||||
name = "kubeProxyReplacement"
|
||||
value = true
|
||||
}
|
||||
set {
|
||||
name = "securityContext.capabilities.ciliumAgent"
|
||||
value = "{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}"
|
||||
}
|
||||
set {
|
||||
name = "securityContext.capabilities.cleanCiliumState"
|
||||
value = "{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}"
|
||||
}
|
||||
set {
|
||||
name = "cgroup.autoMount.enabled"
|
||||
value = false
|
||||
}
|
||||
set {
|
||||
name = "cgroup.hostRoot"
|
||||
value = "/sys/fs/cgroup"
|
||||
}
|
||||
set {
|
||||
name = "k8sServiceHost"
|
||||
value = "localhost"
|
||||
}
|
||||
set {
|
||||
name = "k8sServicePort"
|
||||
value = 7445
|
||||
}
|
||||
set {
|
||||
name = "etcd.clusterDomain"
|
||||
value = "cluster.local"
|
||||
}
|
||||
set {
|
||||
name = "hubble.relay.enabled"
|
||||
value = true
|
||||
}
|
||||
# Enable hubble ui
|
||||
set {
|
||||
name = "hubble.ui.enabled"
|
||||
value = true
|
||||
}
|
||||
# Gateway API support
|
||||
set {
|
||||
name = "gatewayAPI.enabled"
|
||||
value = true
|
||||
}
|
||||
set {
|
||||
name = "gatewayAPI.enableAlpn"
|
||||
value = true
|
||||
}
|
||||
set {
|
||||
name = "gatewayAPI.enableAppProtocol"
|
||||
value = true
|
||||
}
|
||||
# Gateway API trusted hops : for reverse proxy
|
||||
set {
|
||||
name = "gatewayAPI.xffNumTrustedHops"
|
||||
value = 1
|
||||
}
|
||||
# Single-node cluster, so 1 operator only
|
||||
set {
|
||||
name = "operator.replicas"
|
||||
value = 1
|
||||
}
|
||||
# L2 announcements
|
||||
set {
|
||||
name = "l2announcements.enabled"
|
||||
value = true
|
||||
}
|
||||
set {
|
||||
name = "externalIPs.enabled"
|
||||
value = true
|
||||
}
|
||||
# Disable ingress controller (traefik will be used for now)
|
||||
set {
|
||||
name = "ingressController.enabled"
|
||||
value = false
|
||||
}
|
||||
set {
|
||||
name = "ingressController.loadbalancerMode"
|
||||
value = "shared"
|
||||
}
|
||||
# Ingress controller for external : behind reverse proxy, trust 1 hop
|
||||
set {
|
||||
name = "envoy.xffNumTrustedHopsL7PolicyIngress"
|
||||
value = 1
|
||||
}
|
||||
# Set cilium as default ingress controller
|
||||
set {
|
||||
name = "ingressController.default"
|
||||
value = true
|
||||
}
|
||||
set {
|
||||
name = "ingressController.service.externalTrafficPolicy"
|
||||
value = "Local"
|
||||
}
|
||||
}
|
||||
|
||||
resource "kubernetes_namespace" "flux-system" {
|
||||
metadata {
|
||||
name = "flux-system"
|
||||
}
|
||||
|
||||
lifecycle {
|
||||
ignore_changes = [ metadata[0].annotations, metadata[0].labels ]
|
||||
}
|
||||
|
||||
depends_on = [ talos_cluster_kubeconfig.kube, local_file.kubeconfig, helm_release.cilium ]
|
||||
}
|
||||
|
||||
resource "kubernetes_secret" "flux-sops" {
|
||||
metadata {
|
||||
name = "flux-sops"
|
||||
namespace = "flux-system"
|
||||
}
|
||||
|
||||
type = "generic"
|
||||
|
||||
data = {
|
||||
"sops.asc"=var.sops_private_key
|
||||
}
|
||||
|
||||
depends_on = [ kubernetes_namespace.flux-system ]
|
||||
}
|
||||
|
||||
resource "helm_release" "flux-operator" {
|
||||
name = "flux-operator"
|
||||
namespace = "flux-system"
|
||||
repository = "oci://ghcr.io/controlplaneio-fluxcd/charts"
|
||||
chart = "flux-operator"
|
||||
wait = true
|
||||
depends_on = [ kubernetes_secret.flux-sops ]
|
||||
}
|
||||
|
||||
resource "helm_release" "flux-instance" {
|
||||
name = "flux"
|
||||
namespace = "flux-system"
|
||||
repository = "oci://ghcr.io/controlplaneio-fluxcd/charts"
|
||||
chart = "flux-instance"
|
||||
|
||||
values = [
|
||||
file("values/components.yaml")
|
||||
]
|
||||
set {
|
||||
name = "instance.distribution.version"
|
||||
value = "2.x"
|
||||
}
|
||||
set {
|
||||
name = "instance.distribution.registry"
|
||||
value = "ghcr.io/fluxcd"
|
||||
}
|
||||
set {
|
||||
name = "instance.sync.name"
|
||||
value = "homeprod"
|
||||
}
|
||||
set {
|
||||
name = "instance.sync.kind"
|
||||
value = "GitRepository"
|
||||
}
|
||||
set {
|
||||
name = "instance.sync.url"
|
||||
value = "https://github.com/vhaudiquet/homeprod"
|
||||
}
|
||||
set {
|
||||
name = "instance.sync.path"
|
||||
value = "kubernetes/"
|
||||
}
|
||||
set {
|
||||
name = "instance.sync.ref"
|
||||
value = "refs/heads/main"
|
||||
}
|
||||
|
||||
|
||||
depends_on = [ helm_release.flux-operator ]
|
||||
}
|
||||
16
infra/r740/kube/variables.tf
Normal file
16
infra/r740/kube/variables.tf
Normal file
@@ -0,0 +1,16 @@
|
||||
variable "sops_private_key" {
|
||||
description = "Private SOPS GPG key for flux/kubernetes to decrypt secrets"
|
||||
type = string
|
||||
}
|
||||
variable "kube_hostname" {
|
||||
description = "Kubernetes cluster hostname"
|
||||
type = string
|
||||
}
|
||||
variable "kube_host" {
|
||||
description = "Kubernetes cluster host"
|
||||
type = string
|
||||
}
|
||||
variable "physical_hostname" {
|
||||
description = "Host name of the physical host for the kubernetes VM"
|
||||
type = string
|
||||
}
|
||||
@@ -24,6 +24,7 @@ resource "proxmox_virtual_environment_file" "docker-machine-cloud-config" {
|
||||
- qemu-guest-agent
|
||||
- nfs-common
|
||||
runcmd:
|
||||
- systemctl mask tmp.mount
|
||||
- systemctl enable --now qemu-guest-agent
|
||||
- install -m 0755 -d /etc/apt/keyrings
|
||||
- curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
|
||||
|
||||
13
kubernetes/tools/dashy/kustomization.yaml
Normal file
13
kubernetes/tools/dashy/kustomization.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: dashy
|
||||
resources:
|
||||
- namespace.yaml
|
||||
- repository.yaml
|
||||
- release.yaml
|
||||
secretGenerator:
|
||||
- name: dashy-values
|
||||
files:
|
||||
- values.yaml=values.yaml
|
||||
configurations:
|
||||
- kustomizeconfig.yaml
|
||||
6
kubernetes/tools/dashy/kustomizeconfig.yaml
Normal file
6
kubernetes/tools/dashy/kustomizeconfig.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
nameReference:
|
||||
- kind: Secret
|
||||
version: v1
|
||||
fieldSpecs:
|
||||
- path: spec/valuesFrom/name
|
||||
kind: HelmRelease
|
||||
4
kubernetes/tools/dashy/namespace.yaml
Normal file
4
kubernetes/tools/dashy/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: dashy
|
||||
19
kubernetes/tools/dashy/release.yaml
Normal file
19
kubernetes/tools/dashy/release.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: dashy
|
||||
namespace: dashy
|
||||
spec:
|
||||
interval: 1m
|
||||
chart:
|
||||
spec:
|
||||
reconcileStrategy: Revision
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: dashy
|
||||
namespace: dashy
|
||||
chart: dashy
|
||||
interval: 1m
|
||||
valuesFrom:
|
||||
- kind: Secret
|
||||
name: dashy-values
|
||||
8
kubernetes/tools/dashy/repository.yaml
Normal file
8
kubernetes/tools/dashy/repository.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: dashy
|
||||
namespace: dashy
|
||||
spec:
|
||||
interval: 1m
|
||||
url: https://ivanwongtf.github.io/nas-helm-charts/
|
||||
11
kubernetes/tools/dashy/values.yaml
Normal file
11
kubernetes/tools/dashy/values.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
ingress:
|
||||
main:
|
||||
enabled: true
|
||||
hosts:
|
||||
- host: dashy.lan
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
persistence:
|
||||
data:
|
||||
enabled: true
|
||||
Reference in New Issue
Block a user