Compare commits
442 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
4e816cde7b
|
|||
| 6435c77f32 | |||
|
06b389d207
|
|||
| 225a984f00 | |||
|
dbf80cb825
|
|||
| a3c0068165 | |||
|
29e9c88e72
|
|||
| c4ada1d98d | |||
|
8ccf698463
|
|||
| d30b04b81c | |||
|
388bd6ff21
|
|||
| 95557cb92f | |||
|
1b96d3acf6
|
|||
| 6daa1b4d5a | |||
|
bd7a7cd18f
|
|||
| 1f0470fa1d | |||
|
d893e89fe7
|
|||
| f4a1729f3f | |||
|
18fea18919
|
|||
| 13eb9bd0ef | |||
|
a30814f418
|
|||
| abadc1ebf1 | |||
|
4124010b0f
|
|||
| a662c3a5ad | |||
|
13bf9dd326
|
|||
| 0bb5b5a95e | |||
|
e9de27368a
|
|||
|
36d8ffda43
|
|||
|
639b6b1fd0
|
|||
|
714a61355e
|
|||
|
0a70a3d37b
|
|||
| d721b5e548 | |||
|
c2930220b2
|
|||
| 817e6a5216 | |||
|
7353c21bd3
|
|||
| a595ba4eb5 | |||
|
bedc35201d
|
|||
| a4177c871e | |||
|
bcab63b5da
|
|||
| 93fad921b3 | |||
|
02ad36c465
|
|||
| 970f65f0ba | |||
|
69a30fc946
|
|||
| f292c58256 | |||
|
14beb5da2b
|
|||
| bbf80b3189 | |||
|
5a854855d3
|
|||
| 27b448b5f7 | |||
| 2ab501bf94 | |||
|
75f729b29a
|
|||
|
f7e2e32f9c
|
|||
| 7a3897f3aa | |||
|
8566a78070
|
|||
| 5895c698e2 | |||
|
9a8241feb7
|
|||
| e661b56dc5 | |||
|
657200eb43
|
|||
| f4278286c0 | |||
|
184e5cdba7
|
|||
|
b0f4ed51c6
|
|||
| 11f540ab80 | |||
|
5fe0225ea0
|
|||
| f7c9bd4124 | |||
|
76783d0463
|
|||
| e26e6dc519 | |||
|
c7c28b79b5
|
|||
| 08dfcb87e3 | |||
|
37d4d6cad4
|
|||
| f29c140563 | |||
|
2f3b3104b5
|
|||
|
9a5befb246
|
|||
|
5560cb58bd
|
|||
|
8cf8de18d3
|
|||
|
c9dd02ba56
|
|||
| 2833316b8f | |||
|
98acfc6029
|
|||
| 863fd19674 | |||
|
ea6dfeff84
|
|||
| e97f789b83 | |||
|
83c4e9ac4a
|
|||
| 662e15c3ef | |||
|
e071c1744e
|
|||
| 4821188bee | |||
|
f5df07df08
|
|||
|
44000eba76
|
|||
|
50ca706c5b
|
|||
|
7efdf3eb86
|
|||
| 9abef4a475 | |||
|
2477c1f955
|
|||
| c6cdd5ad22 | |||
|
caa2b0ccd3
|
|||
| 0c9a3db42f | |||
|
fdf2736021
|
|||
| a70e709bb8 | |||
|
f9364b9c6e
|
|||
| 64877d4bc0 | |||
|
abbc8b07d9
|
|||
| c3830f0682 | |||
|
dcaaeba125
|
|||
|
73b4230d7e
|
|||
|
4729708822
|
|||
| a166620d28 | |||
|
7459ed9f70
|
|||
| 89c6c91923 | |||
|
dcdced6499
|
|||
| cf917a57d7 | |||
|
7c3454b439
|
|||
| 7da13df2d9 | |||
|
5a110d718e
|
|||
| dec862a5f4 | |||
| c35f7db43c | |||
|
e3ac881844
|
|||
|
cf61c7609e
|
|||
| 39f321bf5e | |||
|
80cb9788a0
|
|||
| 3b07fec227 | |||
| cd49b8fc66 | |||
|
640f735121
|
|||
|
693ec7efda
|
|||
| d9db0dedb7 | |||
|
4dd7d8550c
|
|||
|
e7f0ad8006
|
|||
| 78c384a8b1 | |||
|
eb4207f8e2
|
|||
|
28ff6422c4
|
|||
|
08634c018c
|
|||
| 3c462bde20 | |||
|
50379a84f1
|
|||
| e8e83d262d | |||
|
16e1870a4b
|
|||
| bc677afea0 | |||
|
d1886043bd
|
|||
| dd1cdd5da4 | |||
|
355093df0c
|
|||
| 9c702b1873 | |||
|
a30f6d4e69
|
|||
| f8c6a2f3e4 | |||
| 8f4d89f3d3 | |||
|
fa0cfd8b67
|
|||
|
2af24792e7
|
|||
| 44246cc4c1 | |||
|
28e5bf90b5
|
|||
| 7f65b1baef | |||
|
4fab22f7f1
|
|||
|
5796307f10
|
|||
|
e3858b302e
|
|||
| b3a093d67d | |||
| c82138d4fe | |||
|
0d8af53572
|
|||
|
79751e2e7f
|
|||
|
28ceaa11be
|
|||
| 18eb6ac82f | |||
|
01fbbcef02
|
|||
| dbf5e02807 | |||
|
379b2d9a2a
|
|||
| 9248d4c35a | |||
|
2f5c7b4c07
|
|||
| 74b24988be | |||
|
2dd4502409
|
|||
| 774cab3173 | |||
|
abeaf0c881
|
|||
| 7e57724ef8 | |||
|
1040199d45
|
|||
| caae6992ee | |||
|
5fcedff675
|
|||
| 88f65aeb67 | |||
|
49f29523c4
|
|||
| c75c56d28e | |||
|
29fa53acc1
|
|||
| 3e48ae6c4d | |||
|
2b4dbac471
|
|||
| ac95705df1 | |||
|
0ae3340140
|
|||
| 2427a823f4 | |||
|
127fdd54cf
|
|||
| 8df1305679 | |||
|
76f9c2e25c
|
|||
| 678e9381bd | |||
|
3966901b75
|
|||
| 8543e4b41f | |||
|
7a85ea4c23
|
|||
| 4eda2129f1 | |||
|
cdc4c39728
|
|||
| e46107ad02 | |||
|
0121927f26
|
|||
| eef0b13ab0 | |||
|
8c30536293
|
|||
| 841bd52da9 | |||
|
51e03a6e08
|
|||
| 6a0074676d | |||
|
dbf1380515
|
|||
| 2504e99cc8 | |||
| c50417c3da | |||
|
50b4f42a6e
|
|||
|
cd32ebd7c9
|
|||
| 3e655ae613 | |||
|
5bd1cdc714
|
|||
| 06e85aac5c | |||
|
dca946aadd
|
|||
| 0627c8d8d5 | |||
|
010eeaf903
|
|||
| 623d9a088e | |||
|
4da51ca17a
|
|||
| f8b3b81e83 | |||
|
30a8e59e35
|
|||
| 5172c5c265 | |||
|
0f638ce01a
|
|||
| 2f495c5cc5 | |||
|
29dab2f81e
|
|||
| c03fb7ffdc | |||
|
9fb678612a
|
|||
| 5ee7466152 | |||
|
452674709a
|
|||
|
99ec607e6d
|
|||
| 96424b124c | |||
|
96937cd358
|
|||
|
373823e565
|
|||
|
d36dd7735f
|
|||
|
1a0aeb0e64
|
|||
|
e6e63b5b2c
|
|||
|
0fcb071122
|
|||
|
e0f4fc71af
|
|||
|
e747bbe519
|
|||
| 067c3cbc59 | |||
| 27fcdd6bac | |||
|
67a7c32675
|
|||
|
c352c07f7b
|
|||
|
3397d80865
|
|||
|
39548b9b31
|
|||
|
9b75b8d4bf
|
|||
|
8d29dd8bd1
|
|||
| 4090830d95 | |||
|
21790a5a41
|
|||
|
4ab5ecdd6f
|
|||
|
c11f7897d7
|
|||
|
8839dd6eb1
|
|||
|
cc57178974
|
|||
| 3d95158244 | |||
|
141f05c6ae
|
|||
|
3651f23c72
|
|||
|
b4cbbd97a6
|
|||
| ede26d9c1d | |||
|
cc14ef66ed
|
|||
|
35b3f6cc42
|
|||
|
033a3b95ad
|
|||
|
f90060e366
|
|||
| 1f074a7087 | |||
|
c6cf3b7d84
|
|||
|
e611c68342
|
|||
|
d828d88078
|
|||
|
8fa00efc16
|
|||
|
fbe2274182
|
|||
|
bf4985040a
|
|||
|
ce3a367ec9
|
|||
|
6006e75db9
|
|||
| db590d1d2c | |||
|
7b6f92646f
|
|||
|
6bbd9748a2
|
|||
|
b22ff17c1d
|
|||
|
96900bea0c
|
|||
|
0f84c335de
|
|||
|
5e1b5dc007
|
|||
| f0f1b45c93 | |||
| 46c4e7b50f | |||
|
dbba05d7b6
|
|||
|
db9aa7c99d
|
|||
|
8f0d73946f
|
|||
|
d0ac6145e0
|
|||
|
b9830a2153
|
|||
|
4f51cc5799
|
|||
|
fe1707d078
|
|||
| df154d3b8b | |||
| 49d6684d0a | |||
|
179cdaffd7
|
|||
|
396c998336
|
|||
|
1829d76a07
|
|||
|
4315074427
|
|||
|
289a51fd7d
|
|||
|
b6f178ef88
|
|||
| eb021c1510 | |||
|
99e7e0ae30
|
|||
|
e80fb62fd7
|
|||
|
b6cf261505
|
|||
| cc2b1825d5 | |||
|
5b15d78da0
|
|||
|
3e54d7c96d
|
|||
|
52d680a143
|
|||
|
a5a604a496
|
|||
|
9194de2325
|
|||
| ce5a5c63e3 | |||
|
6a4c3e2253
|
|||
|
65013f6720
|
|||
|
9426dbeb71
|
|||
|
ca3234cb79
|
|||
| 6d2d895b67 | |||
| c2bd9b23ac | |||
|
0790ccd2ad
|
|||
|
ddcadddaaa
|
|||
|
8fabc526ad
|
|||
|
e285b581f3
|
|||
|
3f614405c8
|
|||
|
079fdd4da2
|
|||
| 6e22223c4b | |||
| 61d5ad7071 | |||
| cd3f663549 | |||
|
f1fd7c6cb1
|
|||
|
175b2c13f9
|
|||
|
a643de1085
|
|||
| e5aab6948d | |||
|
30456b3817
|
|||
|
ab12531084
|
|||
|
b789b7be21
|
|||
|
3a2cfdb84e
|
|||
|
506c034948
|
|||
|
7cbc80906e
|
|||
|
3fd705520c
|
|||
|
94d65decd1
|
|||
|
e06a1be194
|
|||
|
dc926c31de
|
|||
|
af31507e8c
|
|||
|
c0ca549393
|
|||
|
a113c84c9d
|
|||
|
a7cc46ed8a
|
|||
|
54e6a76aab
|
|||
|
33ef2866e9
|
|||
|
b609e87dd3
|
|||
|
e1ffafc161
|
|||
| 4170dfa26c | |||
|
5fcb92ee8b
|
|||
|
c5acc2416f
|
|||
|
87b667b2ab
|
|||
| d68d2db3bc | |||
| ad68a17eb5 | |||
|
b07c7bf3a0
|
|||
|
78fc45ae6c
|
|||
| 2fa1594e99 | |||
| b211327516 | |||
|
6885ec790c
|
|||
|
664cace62e
|
|||
|
dae06b2c05
|
|||
|
583831273d
|
|||
|
f327b23001
|
|||
|
6f2603d3a0
|
|||
| c26ea4e139 | |||
| b521924f00 | |||
|
19f203e374
|
|||
|
bb251462fb
|
|||
|
9a9d108e7c
|
|||
|
70d5ae2e48
|
|||
| e6e25baee1 | |||
| a08e9930d5 | |||
|
94bb98b4ed
|
|||
|
07f863b0a7
|
|||
| 79669aaf16 | |||
| 7237e23151 | |||
| f4cc060de7 | |||
| 15f5cb1cbc | |||
|
373b418601
|
|||
|
95af55533e
|
|||
|
24b29cc9a9
|
|||
|
ba292377ab
|
|||
|
9ee0e419a0
|
|||
|
0ee35ec27c
|
|||
|
9697736ed3
|
|||
|
1dea2edfcc
|
|||
|
ae3d90eb10
|
|||
|
72e16276b8
|
|||
| f1fe246f14 | |||
| afe3aaf866 | |||
| 603b6fdbd3 | |||
|
b4fa24c8d1
|
|||
|
1c344f11c4
|
|||
|
a9f1a7cf69
|
|||
| 335563a895 | |||
| 72df8103f2 | |||
|
22dbbaf64f
|
|||
|
f926df6bea
|
|||
|
ecba2195b6
|
|||
| da770facc5 | |||
|
f0dad1e033
|
|||
| ec154c641f | |||
|
f5405bf44d
|
|||
|
1442802804
|
|||
|
4ca30efa7e
|
|||
|
96ed8909af
|
|||
| dd69b42f26 | |||
|
98c688d4bd
|
|||
| 2bb9cdd402 | |||
|
c0a9301cad
|
|||
|
2104e6c2ad
|
|||
| b24a003397 | |||
| d134b4815e | |||
| f65b07a8f3 | |||
|
79e96ae6ea
|
|||
|
3ba9e5e420
|
|||
|
03a6abe1b8
|
|||
| 97fd5c118e | |||
|
f946189ff6
|
|||
|
e12aebefbc
|
|||
|
d0cf5b9064
|
|||
|
48e4a6aa7d
|
|||
| 25b1e757be | |||
| d6d9c402cf | |||
|
15fedb055f
|
|||
|
0c22389ac4
|
|||
| eba1779962 | |||
| 0a3ced36c7 | |||
|
7f84573f4c
|
|||
|
15544a2186
|
|||
| eda6ba5f28 | |||
|
c672a5cd22
|
|||
|
0fd46e4b75
|
|||
|
caca1c7ec5
|
|||
|
d328f7ff37
|
|||
| 3afb27bb3d | |||
|
e7775aa9dc
|
|||
|
e7cfab1232
|
|||
|
659aa5f1aa
|
|||
|
bab5bbb30b
|
|||
|
ec292a6973
|
|||
|
43c6ca185c
|
|||
|
927d4e6905
|
|||
|
dfaa4e2961
|
|||
|
1716e524a3
|
|||
|
6df782ae99
|
|||
|
6f3ce4f03d
|
|||
|
bc539ce7c3
|
|||
|
adea620df2
|
|||
|
9371f50404
|
|||
|
2a0e5004f0
|
|||
|
e7fb07343c
|
|||
| ae8f0e560a | |||
|
4c87356828
|
|||
| cc858dd8f3 | |||
|
5d71a0f199
|
|||
|
a4d2f870d9
|
|||
|
7136a0f322
|
|||
|
c2d6c0c8bb
|
|||
| f3c3741409 | |||
|
80b7cb2282
|
|||
| bf66dd0818 | |||
|
612dd16d4b
|
@@ -0,0 +1,37 @@
|
|||||||
|
# Main Infrastructure: weyma-talos
|
||||||
|
|
||||||
|
**Production Kubernetes infrastructure with disaster recovery capabilities**
|
||||||
|
|
||||||
|
This repository contains the foundational infrastructure for my Kubernetes homelab, designed with reliability and rapid recovery as core principles.
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
My infrastructure follows a layered "black start" approach - essential services run outside the Kubernetes cluster to enable cluster bootstrapping and recovery from total failures.
|
||||||
|
|
||||||
|
### Black Start Layer
|
||||||
|
Static services (Docker Compose on TrueNAS/Proxmox) that provide cluster dependencies:
|
||||||
|
- Image cache for faster deployments and offline capability
|
||||||
|
- Talos discovery server for node bootstrapping
|
||||||
|
- HashiCorp Vault for secrets management (external to cluster)
|
||||||
|
- Future: Self-hosted Sidero Omni server (migrating from SaaS)
|
||||||
|
|
||||||
|
### System Apps Layer
|
||||||
|
Applications running within Kubernetes that provide core cluster functionality, managed via ArgoCD with GitOps principles.
|
||||||
|
|
||||||
|
## Repository Structure
|
||||||
|
|
||||||
|
- **`black-start/`** - Docker Compose services for cluster dependencies
|
||||||
|
- **`config-patches/`** - Talos Linux configuration patches for cluster and individual machines
|
||||||
|
- **`omni/`** - Sidero Omni [cluster template](https://docs.siderolabs.com/omni/reference/cluster-templates)
|
||||||
|
- **`system-apps/`** - System applications (ArgoCD projects) - monitoring, ingress, certificates, storage
|
||||||
|
|
||||||
|
## Tech Stack
|
||||||
|
|
||||||
|
**OS:** Talos Linux | **Orchestration:** Kubernetes | **GitOps:** ArgoCD | **Secrets:** Vault | **Storage:** Rook-Ceph
|
||||||
|
|
||||||
|
## Recovery Process
|
||||||
|
|
||||||
|
The "black start" architecture enables ~15-20 minute automated recovery from complete infrastructure failure:
|
||||||
|
1. Start black-start services → 2. Bootstrap Talos → 3. Deploy system apps → 4. Deploy core apps
|
||||||
|
|
||||||
|
For application deployments, see [core-apps](https://git.dubyatp.xyz/core-apps).
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
services:
|
|
||||||
prometheus:
|
|
||||||
image: prom/prometheus:v3.7.3
|
|
||||||
command:
|
|
||||||
- '--config.file=/etc/prometheus/prometheus.yaml'
|
|
||||||
- '--web.config.file=/etc/prometheus/web-config.yaml'
|
|
||||||
- '--web.enable-remote-write-receiver'
|
|
||||||
- '--storage.tsdb.retention.size=35GB'
|
|
||||||
ports:
|
|
||||||
- 9090:9090
|
|
||||||
volumes:
|
|
||||||
- ./.basicauthpass:/etc/prometheus/.basicauthpass
|
|
||||||
- ./prometheus.yaml:/etc/prometheus/prometheus.yaml
|
|
||||||
- ./web-config.yaml:/etc/prometheus/web-config.yaml
|
|
||||||
- /mnt/prometheus-data:/prometheus
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
# my global config
|
|
||||||
global:
|
|
||||||
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
|
|
||||||
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
|
|
||||||
# scrape_timeout is set to the global default (10s).
|
|
||||||
|
|
||||||
# Alertmanager configuration
|
|
||||||
alerting:
|
|
||||||
alertmanagers:
|
|
||||||
- static_configs:
|
|
||||||
- targets:
|
|
||||||
# - alertmanager:9093
|
|
||||||
|
|
||||||
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
|
|
||||||
rule_files:
|
|
||||||
# - "first_rules.yml"
|
|
||||||
# - "second_rules.yml"
|
|
||||||
|
|
||||||
# A scrape configuration containing exactly one endpoint to scrape:
|
|
||||||
# Here it's Prometheus itself.
|
|
||||||
scrape_configs:
|
|
||||||
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
|
|
||||||
- job_name: "prometheus"
|
|
||||||
|
|
||||||
# metrics_path defaults to '/metrics'
|
|
||||||
# scheme defaults to 'http'.
|
|
||||||
|
|
||||||
static_configs:
|
|
||||||
- targets: ["localhost:9090"]
|
|
||||||
basic_auth:
|
|
||||||
username: prometheus
|
|
||||||
password_file: /etc/prometheus/.basicauthpass
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
basic_auth_users:
|
|
||||||
prometheus: <redacted>
|
|
||||||
@@ -2,7 +2,7 @@ version: "3.8"
|
|||||||
services:
|
services:
|
||||||
discovery:
|
discovery:
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
image: ghcr.io/siderolabs/discovery-service:v1.0.11
|
image: ghcr.io/siderolabs/discovery-service:v1.1.0
|
||||||
ports:
|
ports:
|
||||||
- 10.105.6.215:3000:3000
|
- 10.105.6.215:3000:3000
|
||||||
- 10.105.6.215:3001:3001
|
- 10.105.6.215:3001:3001
|
||||||
@@ -5,7 +5,7 @@ services:
|
|||||||
command: tunnel run weyma-vault
|
command: tunnel run weyma-vault
|
||||||
env_file: ".env"
|
env_file: ".env"
|
||||||
vault:
|
vault:
|
||||||
image: hashicorp/vault:1.21
|
image: hashicorp/vault:2.0
|
||||||
env_file: ".env.vault"
|
env_file: ".env.vault"
|
||||||
environment:
|
environment:
|
||||||
VAULT_ADDR: "https://weyma-vault.infra.dubyatp.xyz:8200"
|
VAULT_ADDR: "https://weyma-vault.infra.dubyatp.xyz:8200"
|
||||||
|
|||||||
@@ -1,8 +1,213 @@
|
|||||||
cluster:
|
cluster:
|
||||||
extraManifests:
|
extraManifests:
|
||||||
- https://raw.githubusercontent.com/alex1989hu/kubelet-serving-cert-approver/main/deploy/standalone-install.yaml
|
- https://raw.githubusercontent.com/alex1989hu/kubelet-serving-cert-approver/main/deploy/standalone-install.yaml
|
||||||
- https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
|
|
||||||
inlineManifests:
|
inlineManifests:
|
||||||
|
- name: metrics-server
|
||||||
|
contents: |-
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
rbac.authorization.k8s.io/aggregate-to-admin: "true"
|
||||||
|
rbac.authorization.k8s.io/aggregate-to-edit: "true"
|
||||||
|
rbac.authorization.k8s.io/aggregate-to-view: "true"
|
||||||
|
name: system:aggregated-metrics-reader
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- metrics.k8s.io
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
- nodes
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: system:metrics-server
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- nodes/metrics
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
- nodes
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server-auth-reader
|
||||||
|
namespace: kube-system
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: extension-apiserver-authentication-reader
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server:system:auth-delegator
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: system:auth-delegator
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: system:metrics-server
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: system:metrics-server
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- appProtocol: https
|
||||||
|
name: https
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: https
|
||||||
|
selector:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
strategy:
|
||||||
|
rollingUpdate:
|
||||||
|
maxUnavailable: 0
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- args:
|
||||||
|
- --cert-dir=/tmp
|
||||||
|
- --secure-port=10250
|
||||||
|
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
|
||||||
|
- --kubelet-use-node-status-port
|
||||||
|
- --metric-resolution=15s
|
||||||
|
- --kubelet-insecure-tls
|
||||||
|
image: registry.k8s.io/metrics-server/metrics-server:v0.8.0
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
livenessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
path: /livez
|
||||||
|
port: https
|
||||||
|
scheme: HTTPS
|
||||||
|
periodSeconds: 10
|
||||||
|
name: metrics-server
|
||||||
|
ports:
|
||||||
|
- containerPort: 10250
|
||||||
|
name: https
|
||||||
|
protocol: TCP
|
||||||
|
readinessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
path: /readyz
|
||||||
|
port: https
|
||||||
|
scheme: HTTPS
|
||||||
|
initialDelaySeconds: 20
|
||||||
|
periodSeconds: 10
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 200Mi
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 1000
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /tmp
|
||||||
|
name: tmp-dir
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/os: linux
|
||||||
|
priorityClassName: system-cluster-critical
|
||||||
|
serviceAccountName: metrics-server
|
||||||
|
volumes:
|
||||||
|
- emptyDir: {}
|
||||||
|
name: tmp-dir
|
||||||
|
---
|
||||||
|
apiVersion: apiregistration.k8s.io/v1
|
||||||
|
kind: APIService
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: v1beta1.metrics.k8s.io
|
||||||
|
spec:
|
||||||
|
group: metrics.k8s.io
|
||||||
|
groupPriorityMinimum: 100
|
||||||
|
insecureSkipTLSVerify: true
|
||||||
|
service:
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
version: v1beta1
|
||||||
|
versionPriority: 100
|
||||||
|
|
||||||
- name: metrics-lb
|
- name: metrics-lb
|
||||||
contents: |-
|
contents: |-
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
@@ -10,6 +215,8 @@ cluster:
|
|||||||
metadata:
|
metadata:
|
||||||
name: metrics-lb
|
name: metrics-lb
|
||||||
namespace: kube-system
|
namespace: kube-system
|
||||||
|
annotations:
|
||||||
|
metallb.io/ip-allocated-from-pool: test-pool
|
||||||
spec:
|
spec:
|
||||||
type: LoadBalancer
|
type: LoadBalancer
|
||||||
ports:
|
ports:
|
||||||
@@ -19,4 +226,3 @@ cluster:
|
|||||||
targetPort: https
|
targetPort: https
|
||||||
selector:
|
selector:
|
||||||
k8s-app: metrics-server
|
k8s-app: metrics-server
|
||||||
|
|
||||||
@@ -0,0 +1,532 @@
|
|||||||
|
kind: Cluster
|
||||||
|
name: weyma-talos
|
||||||
|
kubernetes:
|
||||||
|
version: v1.35.4
|
||||||
|
talos:
|
||||||
|
version: v1.12.7
|
||||||
|
features:
|
||||||
|
backupConfiguration:
|
||||||
|
interval: 6h0m0s
|
||||||
|
patches:
|
||||||
|
- idOverride: 500-5100c0c3-f72e-45f5-8cde-4a1c3b6f72a8
|
||||||
|
annotations:
|
||||||
|
description: pod-svc-subnets
|
||||||
|
name: User defined patch
|
||||||
|
inline:
|
||||||
|
cluster:
|
||||||
|
network:
|
||||||
|
podSubnets:
|
||||||
|
- 10.244.0.0/16
|
||||||
|
serviceSubnets:
|
||||||
|
- 10.112.0.0/12
|
||||||
|
- idOverride: 500-7c228773-8b44-40b0-8b4c-30f617668af0
|
||||||
|
annotations:
|
||||||
|
description: weyma-image-cache
|
||||||
|
name: User defined patch
|
||||||
|
inline:
|
||||||
|
machine:
|
||||||
|
registries:
|
||||||
|
mirrors:
|
||||||
|
docker.io:
|
||||||
|
endpoints:
|
||||||
|
- http://10.105.6.215:6000
|
||||||
|
factory.talos.dev:
|
||||||
|
endpoints:
|
||||||
|
- http://10.105.6.215:6004
|
||||||
|
gcr.io:
|
||||||
|
endpoints:
|
||||||
|
- http://10.105.6.215:6002
|
||||||
|
ghcr.io:
|
||||||
|
endpoints:
|
||||||
|
- http://10.105.6.215:6003
|
||||||
|
registry.k8s.io:
|
||||||
|
endpoints:
|
||||||
|
- http://10.105.6.215:6001
|
||||||
|
- idOverride: 500-f198cacc-280b-4874-a410-252c160621a7
|
||||||
|
annotations:
|
||||||
|
name: weyma-bind-addr
|
||||||
|
inline:
|
||||||
|
cluster:
|
||||||
|
controllerManager:
|
||||||
|
extraArgs:
|
||||||
|
bind-address: 0.0.0.0
|
||||||
|
proxy:
|
||||||
|
extraArgs:
|
||||||
|
proxy-mode: ipvs
|
||||||
|
metrics-bind-address: 0.0.0.0:10249
|
||||||
|
scheduler:
|
||||||
|
extraArgs:
|
||||||
|
bind-address: 0.0.0.0
|
||||||
|
- idOverride: 500-fc113705-0777-4b52-8df0-7cee67fcc68e
|
||||||
|
annotations:
|
||||||
|
name: weyma-bootstrap-metrics
|
||||||
|
inline:
|
||||||
|
cluster:
|
||||||
|
extraManifests:
|
||||||
|
- https://raw.githubusercontent.com/alex1989hu/kubelet-serving-cert-approver/main/deploy/standalone-install.yaml
|
||||||
|
inlineManifests:
|
||||||
|
- contents: |-
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
rbac.authorization.k8s.io/aggregate-to-admin: "true"
|
||||||
|
rbac.authorization.k8s.io/aggregate-to-edit: "true"
|
||||||
|
rbac.authorization.k8s.io/aggregate-to-view: "true"
|
||||||
|
name: system:aggregated-metrics-reader
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- metrics.k8s.io
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
- nodes
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: system:metrics-server
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- nodes/metrics
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
- nodes
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server-auth-reader
|
||||||
|
namespace: kube-system
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: extension-apiserver-authentication-reader
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server:system:auth-delegator
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: system:auth-delegator
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: system:metrics-server
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: system:metrics-server
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- appProtocol: https
|
||||||
|
name: https
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: https
|
||||||
|
selector:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
strategy:
|
||||||
|
rollingUpdate:
|
||||||
|
maxUnavailable: 0
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- args:
|
||||||
|
- --cert-dir=/tmp
|
||||||
|
- --secure-port=10250
|
||||||
|
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
|
||||||
|
- --kubelet-use-node-status-port
|
||||||
|
- --metric-resolution=15s
|
||||||
|
- --kubelet-insecure-tls
|
||||||
|
image: registry.k8s.io/metrics-server/metrics-server:v0.8.0
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
livenessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
path: /livez
|
||||||
|
port: https
|
||||||
|
scheme: HTTPS
|
||||||
|
periodSeconds: 10
|
||||||
|
name: metrics-server
|
||||||
|
ports:
|
||||||
|
- containerPort: 10250
|
||||||
|
name: https
|
||||||
|
protocol: TCP
|
||||||
|
readinessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
path: /readyz
|
||||||
|
port: https
|
||||||
|
scheme: HTTPS
|
||||||
|
initialDelaySeconds: 20
|
||||||
|
periodSeconds: 10
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 200Mi
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 1000
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /tmp
|
||||||
|
name: tmp-dir
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/os: linux
|
||||||
|
priorityClassName: system-cluster-critical
|
||||||
|
serviceAccountName: metrics-server
|
||||||
|
volumes:
|
||||||
|
- emptyDir: {}
|
||||||
|
name: tmp-dir
|
||||||
|
---
|
||||||
|
apiVersion: apiregistration.k8s.io/v1
|
||||||
|
kind: APIService
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: v1beta1.metrics.k8s.io
|
||||||
|
spec:
|
||||||
|
group: metrics.k8s.io
|
||||||
|
groupPriorityMinimum: 100
|
||||||
|
insecureSkipTLSVerify: true
|
||||||
|
service:
|
||||||
|
name: metrics-server
|
||||||
|
namespace: kube-system
|
||||||
|
version: v1beta1
|
||||||
|
versionPriority: 100
|
||||||
|
name: metrics-server
|
||||||
|
- contents: |-
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: metrics-lb
|
||||||
|
namespace: kube-system
|
||||||
|
annotations:
|
||||||
|
metallb.io/ip-allocated-from-pool: test-pool
|
||||||
|
spec:
|
||||||
|
type: LoadBalancer
|
||||||
|
ports:
|
||||||
|
- name: https
|
||||||
|
port: 443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: https
|
||||||
|
selector:
|
||||||
|
k8s-app: metrics-server
|
||||||
|
name: metrics-lb
|
||||||
|
- contents: |-
|
||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
Corefile: |
|
||||||
|
.:53 {
|
||||||
|
errors
|
||||||
|
health {
|
||||||
|
lameduck 5s
|
||||||
|
}
|
||||||
|
ready
|
||||||
|
log . {
|
||||||
|
class error
|
||||||
|
}
|
||||||
|
prometheus :9153
|
||||||
|
|
||||||
|
kubernetes cluster.local in-addr.arpa ip6.arpa {
|
||||||
|
pods insecure
|
||||||
|
fallthrough in-addr.arpa ip6.arpa
|
||||||
|
ttl 30
|
||||||
|
}
|
||||||
|
|
||||||
|
rewrite name git.dubyatp.xyz traefik-local.traefik.svc.cluster.local
|
||||||
|
|
||||||
|
forward . /etc/resolv.conf {
|
||||||
|
max_concurrent 1000
|
||||||
|
}
|
||||||
|
cache 30 {
|
||||||
|
disable success cluster.local
|
||||||
|
disable denial cluster.local
|
||||||
|
}
|
||||||
|
loop
|
||||||
|
reload
|
||||||
|
loadbalance
|
||||||
|
}
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: coredns
|
||||||
|
namespace: kube-system
|
||||||
|
name: coredns-config
|
||||||
|
---
|
||||||
|
kind: ControlPlane
|
||||||
|
machines:
|
||||||
|
- 20b4c826-e699-43b3-826d-73eb5173680b
|
||||||
|
- 5fdea709-56ad-45f2-966d-5e344dbe4fdf
|
||||||
|
- 30303031-3030-3030-6335-303731636600
|
||||||
|
---
|
||||||
|
kind: Workers
|
||||||
|
machines:
|
||||||
|
- 02c02200-f403-11ef-9372-70f446672600
|
||||||
|
- 03000200-0400-0500-0006-000700080009
|
||||||
|
- 1006b91a-ecbf-11ea-aed4-046ba1ee3700
|
||||||
|
- 5f0cd701-0784-4fcc-8e52-3b3304049972
|
||||||
|
- da507021-8912-4337-86a3-94a05bd1cf05
|
||||||
|
---
|
||||||
|
kind: Machine
|
||||||
|
name: 02c02200-f403-11ef-9372-70f446672600
|
||||||
|
patches:
|
||||||
|
- idOverride: 400-cm-02c02200-f403-11ef-9372-70f446672600
|
||||||
|
annotations:
|
||||||
|
name: ""
|
||||||
|
inline:
|
||||||
|
machine:
|
||||||
|
network:
|
||||||
|
hostname: weyma-talos-w02
|
||||||
|
interfaces:
|
||||||
|
- deviceSelector:
|
||||||
|
driver: igc
|
||||||
|
hardwareAddr: e8:ff:1e:d4:b8:89
|
||||||
|
dhcp: true
|
||||||
|
vlans:
|
||||||
|
- dhcp: false
|
||||||
|
vlanId: 50
|
||||||
|
- deviceSelector:
|
||||||
|
hardwareAddr: e8:ff:1e:d4:b8:8a
|
||||||
|
dhcp: true
|
||||||
|
mtu: 9000
|
||||||
|
- bridge:
|
||||||
|
interfaces:
|
||||||
|
- enp1s0.50
|
||||||
|
dhcp: false
|
||||||
|
interface: br0
|
||||||
|
---
|
||||||
|
kind: Machine
|
||||||
|
name: 03000200-0400-0500-0006-000700080009
|
||||||
|
patches:
|
||||||
|
- idOverride: 400-cm-03000200-0400-0500-0006-000700080009
|
||||||
|
annotations:
|
||||||
|
name: ""
|
||||||
|
inline:
|
||||||
|
machine:
|
||||||
|
network:
|
||||||
|
hostname: weyma-talos-testw01
|
||||||
|
interfaces:
|
||||||
|
- deviceSelector:
|
||||||
|
driver: igc
|
||||||
|
hardwareAddr: e8:ff:1e:d5:f8:22
|
||||||
|
dhcp: true
|
||||||
|
vlans:
|
||||||
|
- dhcp: false
|
||||||
|
vlanId: 50
|
||||||
|
- deviceSelector:
|
||||||
|
hardwareAddr: e8:ff:1e:d5:f8:21
|
||||||
|
dhcp: true
|
||||||
|
mtu: 9000
|
||||||
|
- bridge:
|
||||||
|
interfaces:
|
||||||
|
- enp2s0.50
|
||||||
|
dhcp: false
|
||||||
|
interface: br0
|
||||||
|
---
|
||||||
|
kind: Machine
|
||||||
|
name: 1006b91a-ecbf-11ea-aed4-046ba1ee3700
|
||||||
|
patches:
|
||||||
|
- idOverride: 400-cm-1006b91a-ecbf-11ea-aed4-046ba1ee3700
|
||||||
|
annotations:
|
||||||
|
name: ""
|
||||||
|
inline:
|
||||||
|
machine:
|
||||||
|
network:
|
||||||
|
hostname: weyma-talos-testw04
|
||||||
|
interfaces:
|
||||||
|
- deviceSelector:
|
||||||
|
driver: mlx4_core
|
||||||
|
hardwareAddr: f4:52:14:60:5e:30
|
||||||
|
dhcp: true
|
||||||
|
vlans:
|
||||||
|
- dhcp: false
|
||||||
|
vlanId: 50
|
||||||
|
- deviceSelector:
|
||||||
|
hardwareAddr: f4:52:14:60:5e:31
|
||||||
|
dhcp: true
|
||||||
|
mtu: 9000
|
||||||
|
- bridge:
|
||||||
|
interfaces:
|
||||||
|
- eno1.50
|
||||||
|
dhcp: false
|
||||||
|
interface: br0
|
||||||
|
---
|
||||||
|
kind: Machine
|
||||||
|
name: 30303031-3030-3030-6335-303731636600
|
||||||
|
patches:
|
||||||
|
- idOverride: 400-cm-30303031-3030-3030-6335-303731636600
|
||||||
|
inline:
|
||||||
|
machine:
|
||||||
|
network:
|
||||||
|
hostname: weyma-talos-cp04
|
||||||
|
interfaces:
|
||||||
|
- deviceSelector:
|
||||||
|
hardwareAddr: dc:a6:32:95:0f:cb
|
||||||
|
dhcp: true
|
||||||
|
---
|
||||||
|
kind: Machine
|
||||||
|
name: 20b4c826-e699-43b3-826d-73eb5173680b
|
||||||
|
patches:
|
||||||
|
- idOverride: 400-cm-20b4c826-e699-43b3-826d-73eb5173680b
|
||||||
|
annotations:
|
||||||
|
name: ""
|
||||||
|
inline:
|
||||||
|
machine:
|
||||||
|
network:
|
||||||
|
hostname: weyma-talos-cp02
|
||||||
|
interfaces:
|
||||||
|
- deviceSelector:
|
||||||
|
driver: virtio*
|
||||||
|
hardwareAddr: 00:16:3e:9c:01:27
|
||||||
|
dhcp: true
|
||||||
|
---
|
||||||
|
kind: Machine
|
||||||
|
name: 5f0cd701-0784-4fcc-8e52-3b3304049972
|
||||||
|
patches:
|
||||||
|
- idOverride: 400-cm-5f0cd701-0784-4fcc-8e52-3b3304049972
|
||||||
|
annotations:
|
||||||
|
name: ""
|
||||||
|
inline:
|
||||||
|
machine:
|
||||||
|
network:
|
||||||
|
hostname: weyma-talos-testw05
|
||||||
|
interfaces:
|
||||||
|
- deviceSelector:
|
||||||
|
hardwareAddr: 00:16:3e:b3:dd:f8
|
||||||
|
dhcp: true
|
||||||
|
- deviceSelector:
|
||||||
|
hardwareAddr: 00:16:3e:e5:79:0a
|
||||||
|
dhcp: true
|
||||||
|
mtu: 9000
|
||||||
|
- deviceSelector:
|
||||||
|
hardwareAddr: 00:16:3e:6b:1c:1d
|
||||||
|
dhcp: false
|
||||||
|
- bridge:
|
||||||
|
interfaces:
|
||||||
|
- enx00163e6b1c1d
|
||||||
|
dhcp: false
|
||||||
|
interface: br0
|
||||||
|
---
|
||||||
|
kind: Machine
|
||||||
|
systemExtensions:
|
||||||
|
- siderolabs/nut-client
|
||||||
|
- siderolabs/qemu-guest-agent
|
||||||
|
name: 5fdea709-56ad-45f2-966d-5e344dbe4fdf
|
||||||
|
patches:
|
||||||
|
- idOverride: 400-cm-5fdea709-56ad-45f2-966d-5e344dbe4fdf
|
||||||
|
annotations:
|
||||||
|
name: ""
|
||||||
|
inline:
|
||||||
|
machine:
|
||||||
|
network:
|
||||||
|
hostname: weyma-talos-cp01
|
||||||
|
interfaces:
|
||||||
|
- deviceSelector:
|
||||||
|
driver: virtio*
|
||||||
|
hardwareAddr: bc:24:11:e6:ff:7b
|
||||||
|
dhcp: true
|
||||||
|
---
|
||||||
|
kind: Machine
|
||||||
|
name: da507021-8912-4337-86a3-94a05bd1cf05
|
||||||
|
patches:
|
||||||
|
- idOverride: 400-cm-da507021-8912-4337-86a3-94a05bd1cf05
|
||||||
|
annotations:
|
||||||
|
name: ""
|
||||||
|
inline:
|
||||||
|
machine:
|
||||||
|
network:
|
||||||
|
hostname: weyma-talos-w03
|
||||||
|
interfaces:
|
||||||
|
- deviceSelector:
|
||||||
|
driver: virtio*
|
||||||
|
hardwareAddr: bc:24:11:be:6c:08
|
||||||
|
dhcp: true
|
||||||
|
- deviceSelector:
|
||||||
|
driver: virtio*
|
||||||
|
hardwareAddr: bc:24:11:f8:4a:92
|
||||||
|
dhcp: true
|
||||||
|
mtu: 8996
|
||||||
|
- deviceSelector:
|
||||||
|
driver: virtio*
|
||||||
|
hardwareAddr: bc:24:11:93:02:0e
|
||||||
|
dhcp: false
|
||||||
|
- bridge:
|
||||||
|
interfaces:
|
||||||
|
- enxbc241193020e
|
||||||
|
dhcp: false
|
||||||
|
interface: br0
|
||||||
@@ -14,6 +14,11 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packageRules": [
|
"packageRules": [
|
||||||
|
{
|
||||||
|
"description": "Consolidate patch and minor updates to one PR",
|
||||||
|
"matchUpdateTypes": ["minor", "patch"],
|
||||||
|
"groupName": "all-minor-patch-updates"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"description": "Rook Ceph - auto-update minor and patch versions only",
|
"description": "Rook Ceph - auto-update minor and patch versions only",
|
||||||
"matchDatasources": ["docker"],
|
"matchDatasources": ["docker"],
|
||||||
|
|||||||
@@ -24,5 +24,5 @@ appVersion: "1.0"
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: argo-cd
|
- name: argo-cd
|
||||||
version: 9.1.4
|
version: 10.2.1
|
||||||
repository: https://argoproj.github.io/argo-helm
|
repository: https://argoproj.github.io/argo-helm
|
||||||
@@ -56,18 +56,6 @@ argo-cd:
|
|||||||
Argo CD has not reported any applications data for the past 15 minutes which
|
Argo CD has not reported any applications data for the past 15 minutes which
|
||||||
means that it must be down or not functioning properly. This needs to be
|
means that it must be down or not functioning properly. This needs to be
|
||||||
resolved for this cloud to continue to maintain state.
|
resolved for this cloud to continue to maintain state.
|
||||||
- alert: ArgoAppNotSynced
|
|
||||||
expr: |
|
|
||||||
argocd_app_info{sync_status!="Synced"} == 1
|
|
||||||
for: 12h
|
|
||||||
labels:
|
|
||||||
severity: warning
|
|
||||||
annotations:
|
|
||||||
summary: "[{{`{{$labels.name}}`}}] Application not synchronized"
|
|
||||||
description: >
|
|
||||||
The application [{{`{{$labels.name}}`}} has not been synchronized for over
|
|
||||||
12 hours which means that the state of this cloud has drifted away from the
|
|
||||||
state inside Git.
|
|
||||||
server:
|
server:
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -140,18 +128,34 @@ argo-cd:
|
|||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd
|
key: argo-cd
|
||||||
property: webhook.gitea.secret
|
property: webhook.gitea.secret
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: admin.password
|
- secretKey: admin.password
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd
|
key: argo-cd
|
||||||
property: admin.password
|
property: admin.password
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: admin.passwordMtime
|
- secretKey: admin.passwordMtime
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd
|
key: argo-cd
|
||||||
property: admin.passwordMtime
|
property: admin.passwordMtime
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: dex.authentik.clientSecret
|
- secretKey: dex.authentik.clientSecret
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd
|
key: argo-cd
|
||||||
property: dex.authentik.clientSecret
|
property: dex.authentik.clientSecret
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- apiVersion: external-secrets.io/v1
|
- apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
@@ -172,14 +176,26 @@ argo-cd:
|
|||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd-git
|
key: argo-cd-git
|
||||||
property: sshPrivateKey
|
property: sshPrivateKey
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: type
|
- secretKey: type
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd-git
|
key: argo-cd-git
|
||||||
property: type
|
property: type
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: url
|
- secretKey: url
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd-git
|
key: argo-cd-git
|
||||||
property: url.core-apps
|
property: url.core-apps
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- apiVersion: external-secrets.io/v1
|
- apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
@@ -200,14 +216,26 @@ argo-cd:
|
|||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd-git
|
key: argo-cd-git
|
||||||
property: sshPrivateKey
|
property: sshPrivateKey
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: type
|
- secretKey: type
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd-git
|
key: argo-cd-git
|
||||||
property: type
|
property: type
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: url
|
- secretKey: url
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd-git
|
key: argo-cd-git
|
||||||
property: url.weyma-talos
|
property: url.weyma-talos
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- apiVersion: external-secrets.io/v1
|
- apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
@@ -228,14 +256,26 @@ argo-cd:
|
|||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd-git
|
key: argo-cd-git
|
||||||
property: sshPrivateKey
|
property: sshPrivateKey
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: type
|
- secretKey: type
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd-git
|
key: argo-cd-git
|
||||||
property: type
|
property: type
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: url
|
- secretKey: url
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd-git
|
key: argo-cd-git
|
||||||
property: url.williamp-sites
|
property: url.williamp-sites
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- apiVersion: external-secrets.io/v1
|
- apiVersion: external-secrets.io/v1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
@@ -256,11 +296,23 @@ argo-cd:
|
|||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd-git
|
key: argo-cd-git
|
||||||
property: sshPrivateKey
|
property: sshPrivateKey
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: type
|
- secretKey: type
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd-git
|
key: argo-cd-git
|
||||||
property: type
|
property: type
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: url
|
- secretKey: url
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: argo-cd-git
|
key: argo-cd-git
|
||||||
property: url.db-operators
|
property: url.db-operators
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
@@ -24,5 +24,5 @@ appVersion: "1.0"
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: cert-manager
|
- name: cert-manager
|
||||||
version: v1.19.1
|
version: v1.21.0
|
||||||
repository: https://charts.jetstack.io
|
repository: https://charts.jetstack.io
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: argocd
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: argocd
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: attic
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: attic
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: authentik
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: authentik
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: duby-blog
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: duby-blog
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: dubyatp-xyz
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: dubyatp-xyz
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: frenworld-archive
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: frenworld-archive
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-frenworld-archive-io
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: gitea
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: gitea
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: grafana
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: grafana
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: jellyfin
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: jellyfin
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: kite
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: kite
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: lumfao-dubyatp-xyz
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: lumfao-dubyatp-xyz
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: netmaker
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: netmaker
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: nextcloud
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: nextcloud
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: rook-ceph
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: rook-ceph
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: test-dubyatp-xyz
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: default
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: traefik
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: traefik
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: vaultwarden
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: vaultwarden
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: whatismyip
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: whatismyip
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-dubyatp-xyz
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: ReferenceGrant
|
||||||
|
metadata:
|
||||||
|
name: williamtpeebles-com
|
||||||
|
namespace: cert-manager
|
||||||
|
spec:
|
||||||
|
from:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: Gateway
|
||||||
|
namespace: williamtpeebles-com
|
||||||
|
to:
|
||||||
|
- group: ""
|
||||||
|
kind: Secret
|
||||||
|
name: cert-williamtpeebles-com
|
||||||
@@ -24,5 +24,5 @@ appVersion: "1.0"
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: external-secrets
|
- name: external-secrets
|
||||||
version: 1.1.0
|
version: 2.8.0
|
||||||
repository: https://charts.external-secrets.io
|
repository: https://charts.external-secrets.io
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: guestbook-ui
|
|
||||||
namespace: guestbook-ui
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
revisionHistoryLimit: 3
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: guestbook-ui
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: guestbook-ui
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- image: gcr.io/heptio-images/ks-guestbook-demo:0.2
|
|
||||||
name: guestbook-ui
|
|
||||||
ports:
|
|
||||||
- containerPort: 80
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: guestbook-ui
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: guestbook-ui
|
|
||||||
namespace: guestbook-ui
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
targetPort: 80
|
|
||||||
selector:
|
|
||||||
app: guestbook-ui
|
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: kite
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
|
#
|
||||||
|
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||||
|
# to be deployed.
|
||||||
|
#
|
||||||
|
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||||
|
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||||
|
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
|
# to the chart and its templates, including the app version.
|
||||||
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
# This is the version number of the application being deployed. This version number should be
|
||||||
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
|
appVersion: "1.0"
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: kite
|
||||||
|
version: 0.14.1
|
||||||
|
repository: https://zxh326.github.io/kite
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: kite-secret
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
spec:
|
||||||
|
refreshInterval: 1h
|
||||||
|
secretStoreRef:
|
||||||
|
name: weyma-vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: kite-secret
|
||||||
|
creationPolicy: Owner
|
||||||
|
data:
|
||||||
|
- secretKey: JWT_SECRET
|
||||||
|
remoteRef:
|
||||||
|
key: kite
|
||||||
|
property: JWT_SECRET
|
||||||
|
- secretKey: KITE_ENCRYPT_KEY
|
||||||
|
remoteRef:
|
||||||
|
key: kite
|
||||||
|
property: KITE_ENCRYPT_KEY
|
||||||
|
- secretKey: KITE_PASSWORD
|
||||||
|
remoteRef:
|
||||||
|
key: kite
|
||||||
|
property: KITE_PASSWORD
|
||||||
|
- secretKey: KITE_USERNAME
|
||||||
|
remoteRef:
|
||||||
|
key: kite
|
||||||
|
property: KITE_USERNAME
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
kite:
|
||||||
|
host: "https://weyma-kite.infra.dubyatp.xyz"
|
||||||
|
deploymentStrategy:
|
||||||
|
type: Recreate
|
||||||
|
secret:
|
||||||
|
create: false
|
||||||
|
existingSecret: kite-secret
|
||||||
|
db:
|
||||||
|
sqlite:
|
||||||
|
persistence:
|
||||||
|
pvc:
|
||||||
|
enabled: true
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
className: "traefik"
|
||||||
|
hosts:
|
||||||
|
- host: weyma-kite.infra.dubyatp.xyz
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
podAnnotations:
|
||||||
|
backup.velero.io/backup-volumes: kite-storage
|
||||||
@@ -24,5 +24,5 @@ appVersion: "1.0"
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: kubernetes-replicator
|
- name: kubernetes-replicator
|
||||||
version: 2.12.2
|
version: 2.12.4
|
||||||
repository: https://helm.mittwald.de
|
repository: https://helm.mittwald.de
|
||||||
@@ -24,5 +24,5 @@ appVersion: "1.0"
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: metallb
|
- name: metallb
|
||||||
version: 0.15.2
|
version: 0.16.1
|
||||||
repository: https://metallb.github.io/metallb
|
repository: https://metallb.github.io/metallb
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
metallb:
|
metallb:
|
||||||
|
frrk8s:
|
||||||
|
enabled: false
|
||||||
prometheus:
|
prometheus:
|
||||||
rbacPrometheus: false
|
rbacPrometheus: false
|
||||||
podMonitor:
|
podMonitor:
|
||||||
|
|||||||
@@ -24,5 +24,5 @@ appVersion: "1.0"
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: kube-prometheus-stack
|
- name: kube-prometheus-stack
|
||||||
version: 79.8.2
|
version: 87.19.1
|
||||||
repository: https://prometheus-community.github.io/helm-charts
|
repository: https://prometheus-community.github.io/helm-charts
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: discord-webhook
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
spec:
|
||||||
|
refreshInterval: 1h
|
||||||
|
secretStoreRef:
|
||||||
|
name: weyma-vault
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: discord-webhook
|
||||||
|
creationPolicy: Owner
|
||||||
|
data:
|
||||||
|
- secretKey: webhook
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
|
key: monitoring
|
||||||
|
property: discord_webhook
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
{{- if .Values.discord.enabled }}
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: alertmanager-discord
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: alertmanager-discord
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: alertmanager-discord
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: alertmanager-discord
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: alertmanager-discord
|
||||||
|
image: {{ .Values.discord.image | default "ghcr.io/rogerrum/alertmanager-discord:1.0.7" }}
|
||||||
|
ports:
|
||||||
|
- containerPort: 9094
|
||||||
|
env:
|
||||||
|
- name: LISTEN_ADDRESS
|
||||||
|
value: "0.0.0.0:9094"
|
||||||
|
- name: DISCORD_WEBHOOK
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ .Values.discord.secret.name | quote }}
|
||||||
|
key: {{ .Values.discord.secret.key | quote }}
|
||||||
|
{{- if .Values.discord.username }}
|
||||||
|
- name: DISCORD_USERNAME
|
||||||
|
value: {{ .Values.discord.username | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.discord.avatar_url }}
|
||||||
|
- name: DISCORD_AVATAR_URL
|
||||||
|
value: {{ .Values.discord.avatar_url | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.discord.verbose }}
|
||||||
|
- name: VERBOSE
|
||||||
|
value: "ON"
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
memory: "128Mi"
|
||||||
|
cpu: "500m"
|
||||||
|
limits:
|
||||||
|
memory: "512Mi"
|
||||||
|
cpu: "1"
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: alertmanager-discord
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: alertmanager-discord
|
||||||
|
ports:
|
||||||
|
- port: 9094
|
||||||
|
targetPort: 9094
|
||||||
|
protocol: TCP
|
||||||
|
{{- end }}
|
||||||
@@ -1,5 +1,23 @@
|
|||||||
kube-prometheus-stack:
|
kube-prometheus-stack:
|
||||||
alertmanager:
|
alertmanager:
|
||||||
|
config:
|
||||||
|
route:
|
||||||
|
group_by: ['namespace']
|
||||||
|
group_wait: 30s
|
||||||
|
group_interval: 5m
|
||||||
|
repeat_interval: 12h
|
||||||
|
receiver: 'null'
|
||||||
|
routes:
|
||||||
|
- receiver: "discord_webhook"
|
||||||
|
matchers:
|
||||||
|
- severity = "critical"
|
||||||
|
continue: false
|
||||||
|
- receiver: 'null'
|
||||||
|
receivers:
|
||||||
|
- name: "null"
|
||||||
|
- name: "discord_webhook"
|
||||||
|
webhook_configs:
|
||||||
|
- url: "http://alertmanager-discord:9094"
|
||||||
alertmanagerSpec:
|
alertmanagerSpec:
|
||||||
storage:
|
storage:
|
||||||
volumeClaimTemplate:
|
volumeClaimTemplate:
|
||||||
@@ -9,6 +27,19 @@ kube-prometheus-stack:
|
|||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: 50Gi
|
storage: 50Gi
|
||||||
|
additionalPrometheusRulesMap:
|
||||||
|
rule-name:
|
||||||
|
groups:
|
||||||
|
- name: AdditionalAlerts
|
||||||
|
rules:
|
||||||
|
- alert: ExcessiveWarnings
|
||||||
|
expr: count(ALERTS{severity="warning",alertstate="firing"}) >= 5
|
||||||
|
for: 1m
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
annotations:
|
||||||
|
summary: Excessive 'warning' alerts are firing in the cluster
|
||||||
|
description: "{{ $value }} alerts with 'warning' severity are firing and could be a sign of catastrophic failure in the cluster"
|
||||||
prometheusOperator:
|
prometheusOperator:
|
||||||
admissionWebhooks:
|
admissionWebhooks:
|
||||||
certManager:
|
certManager:
|
||||||
@@ -40,3 +71,10 @@ kube-prometheus-stack:
|
|||||||
storage: 50Gi
|
storage: 50Gi
|
||||||
grafana:
|
grafana:
|
||||||
enabled: false # Grafana is instead deployed in its own namespace in the core-apps repo
|
enabled: false # Grafana is instead deployed in its own namespace in the core-apps repo
|
||||||
|
discord:
|
||||||
|
enabled: true
|
||||||
|
secret:
|
||||||
|
name: discord-webhook
|
||||||
|
key: webhook
|
||||||
|
username: "Alertmanager"
|
||||||
|
verbose: true
|
||||||
@@ -35,10 +35,10 @@ spec:
|
|||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
cpu: "100m"
|
cpu: "100m"
|
||||||
memory: "50Mi"
|
memory: "64Mi"
|
||||||
limits:
|
limits:
|
||||||
cpu: "100m"
|
cpu: "200m"
|
||||||
memory: "50Mi"
|
memory: "256Mi"
|
||||||
securityContext:
|
securityContext:
|
||||||
privileged: true
|
privileged: true
|
||||||
terminationMessagePolicy: FallbackToLogsOnError
|
terminationMessagePolicy: FallbackToLogsOnError
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ spec:
|
|||||||
# versions running within the cluster. See tags available at https://hub.docker.com/r/ceph/ceph/tags/.
|
# versions running within the cluster. See tags available at https://hub.docker.com/r/ceph/ceph/tags/.
|
||||||
# If you want to be more precise, you can always use a timestamp tag such as quay.io/ceph/ceph:v19.2.1-20250202
|
# If you want to be more precise, you can always use a timestamp tag such as quay.io/ceph/ceph:v19.2.1-20250202
|
||||||
# This tag might not contain a new Ceph version, just security fixes from the underlying operating system, which will reduce vulnerabilities
|
# This tag might not contain a new Ceph version, just security fixes from the underlying operating system, which will reduce vulnerabilities
|
||||||
image: quay.io/ceph/ceph:v19.2.3-20250717
|
image: quay.io/ceph/ceph:v20.2.0-20251104
|
||||||
# Whether to allow unsupported versions of Ceph. Currently Reef and Squid are supported.
|
# Whether to allow unsupported versions of Ceph. Currently Reef and Squid are supported.
|
||||||
# Future versions such as Tentacle (v20) would require this to be set to `true`.
|
# Future versions such as Tentacle (v20) would require this to be set to `true`.
|
||||||
# Do not set to true in production.
|
# Do not set to true in production.
|
||||||
|
|||||||
@@ -24,5 +24,8 @@ appVersion: "1.0"
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: rook-ceph
|
- name: rook-ceph
|
||||||
version: v1.18.7
|
version: v1.20.2
|
||||||
repository: https://charts.rook.io/release
|
repository: https://charts.rook.io/release
|
||||||
|
- name: ceph-csi-drivers
|
||||||
|
version: 1.0.4
|
||||||
|
repository: https://ceph.github.io/ceph-csi-operator
|
||||||
@@ -497,61 +497,6 @@ spec:
|
|||||||
oid: "1.3.6.1.4.1.50495.1.2.1.8.1"
|
oid: "1.3.6.1.4.1.50495.1.2.1.8.1"
|
||||||
severity: "critical"
|
severity: "critical"
|
||||||
type: "ceph_default"
|
type: "ceph_default"
|
||||||
- alert: "CephNodeNetworkPacketDrops"
|
|
||||||
annotations:
|
|
||||||
description: "Node {{ "{{" }} $labels.instance {{ "}}" }} experiences packet drop > 0.5% or > 10 packets/s on interface {{ "{{" }} $labels.device {{ "}}" }}."
|
|
||||||
summary: "One or more NICs reports packet drops"
|
|
||||||
expr: |
|
|
||||||
(
|
|
||||||
rate(node_network_receive_drop_total{device!="lo"}[1m]) +
|
|
||||||
rate(node_network_transmit_drop_total{device!="lo"}[1m])
|
|
||||||
) / (
|
|
||||||
rate(node_network_receive_packets_total{device!="lo"}[1m]) +
|
|
||||||
rate(node_network_transmit_packets_total{device!="lo"}[1m])
|
|
||||||
) >= 0.0050000000000000001 and (
|
|
||||||
rate(node_network_receive_drop_total{device!="lo"}[1m]) +
|
|
||||||
rate(node_network_transmit_drop_total{device!="lo"}[1m])
|
|
||||||
) >= 10
|
|
||||||
labels:
|
|
||||||
oid: "1.3.6.1.4.1.50495.1.2.1.8.2"
|
|
||||||
severity: "warning"
|
|
||||||
type: "ceph_default"
|
|
||||||
- alert: "CephNodeNetworkPacketErrors"
|
|
||||||
annotations:
|
|
||||||
description: "Node {{ "{{" }} $labels.instance {{ "}}" }} experiences packet errors > 0.01% or > 10 packets/s on interface {{ "{{" }} $labels.device {{ "}}" }}."
|
|
||||||
summary: "One or more NICs reports packet errors"
|
|
||||||
expr: |
|
|
||||||
(
|
|
||||||
rate(node_network_receive_errs_total{device!="lo"}[1m]) +
|
|
||||||
rate(node_network_transmit_errs_total{device!="lo"}[1m])
|
|
||||||
) / (
|
|
||||||
rate(node_network_receive_packets_total{device!="lo"}[1m]) +
|
|
||||||
rate(node_network_transmit_packets_total{device!="lo"}[1m])
|
|
||||||
) >= 0.0001 or (
|
|
||||||
rate(node_network_receive_errs_total{device!="lo"}[1m]) +
|
|
||||||
rate(node_network_transmit_errs_total{device!="lo"}[1m])
|
|
||||||
) >= 10
|
|
||||||
labels:
|
|
||||||
oid: "1.3.6.1.4.1.50495.1.2.1.8.3"
|
|
||||||
severity: "warning"
|
|
||||||
type: "ceph_default"
|
|
||||||
- alert: "CephNodeNetworkBondDegraded"
|
|
||||||
annotations:
|
|
||||||
description: "Bond {{ "{{" }} $labels.master {{ "}}" }} is degraded on Node {{ "{{" }} $labels.instance {{ "}}" }}."
|
|
||||||
summary: "Degraded Bond on Node {{ "{{" }} $labels.instance {{ "}}" }}"
|
|
||||||
expr: |
|
|
||||||
node_bonding_slaves - node_bonding_active != 0
|
|
||||||
labels:
|
|
||||||
severity: "warning"
|
|
||||||
type: "ceph_default"
|
|
||||||
- alert: "CephNodeInconsistentMTU"
|
|
||||||
annotations:
|
|
||||||
description: "Node {{ "{{" }} $labels.instance {{ "}}" }} has a different MTU size ({{ "{{" }} $value {{ "}}" }}) than the median of devices named {{ "{{" }} $labels.device {{ "}}" }}."
|
|
||||||
summary: "MTU settings across Ceph hosts are inconsistent"
|
|
||||||
expr: "node_network_mtu_bytes * (node_network_up{device!=\"lo\"} > 0) == scalar( max by (device) (node_network_mtu_bytes * (node_network_up{device!=\"lo\"} > 0)) != quantile by (device) (.5, node_network_mtu_bytes * (node_network_up{device!=\"lo\"} > 0)) )or node_network_mtu_bytes * (node_network_up{device!=\"lo\"} > 0) == scalar( min by (device) (node_network_mtu_bytes * (node_network_up{device!=\"lo\"} > 0)) != quantile by (device) (.5, node_network_mtu_bytes * (node_network_up{device!=\"lo\"} > 0)) )"
|
|
||||||
labels:
|
|
||||||
severity: "warning"
|
|
||||||
type: "ceph_default"
|
|
||||||
- name: "pools"
|
- name: "pools"
|
||||||
rules:
|
rules:
|
||||||
- alert: "CephPoolGrowthWarning"
|
- alert: "CephPoolGrowthWarning"
|
||||||
|
|||||||
@@ -1,2 +1,12 @@
|
|||||||
monitoring:
|
monitoring:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
ceph-csi-drivers:
|
||||||
|
drivers:
|
||||||
|
rbd:
|
||||||
|
name: rook-ceph.rbd.csi.ceph.com
|
||||||
|
cephfs:
|
||||||
|
name: rook-ceph.cephfs.csi.ceph.com
|
||||||
|
nvmeof:
|
||||||
|
enabled: false
|
||||||
|
nfs:
|
||||||
|
enabled: false
|
||||||
@@ -24,5 +24,5 @@ appVersion: "1.0"
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: traefik
|
- name: traefik
|
||||||
version: 37.4.0
|
version: 41.0.2
|
||||||
repository: https://traefik.github.io/charts
|
repository: https://traefik.github.io/charts
|
||||||
@@ -4,18 +4,17 @@ traefik:
|
|||||||
- --entryPoints.websecure.transport.respondingTimeouts.readTimeout=0
|
- --entryPoints.websecure.transport.respondingTimeouts.readTimeout=0
|
||||||
ports:
|
ports:
|
||||||
web:
|
web:
|
||||||
redirections:
|
http:
|
||||||
entryPoint:
|
redirections:
|
||||||
to: websecure
|
entryPoint:
|
||||||
scheme: https
|
to: websecure
|
||||||
permanent: true
|
scheme: https
|
||||||
|
permanent: true
|
||||||
gitssh:
|
gitssh:
|
||||||
port: 2222
|
port: 2222
|
||||||
exposedPort: 22
|
exposedPort: 22
|
||||||
expose:
|
expose:
|
||||||
default: true
|
default: true
|
||||||
tls:
|
|
||||||
passthrough: true
|
|
||||||
metrics:
|
metrics:
|
||||||
prometheus:
|
prometheus:
|
||||||
service:
|
service:
|
||||||
@@ -30,7 +29,7 @@ traefik:
|
|||||||
for: 5m
|
for: 5m
|
||||||
labels:
|
labels:
|
||||||
context: traefik
|
context: traefik
|
||||||
severity: warning
|
severity: critical
|
||||||
annotations:
|
annotations:
|
||||||
summary: "Traefik Down"
|
summary: "Traefik Down"
|
||||||
description: "{{ $labels.pod }} on {{ $labels.nodename }} is down"
|
description: "{{ $labels.pod }} on {{ $labels.nodename }} is down"
|
||||||
@@ -38,7 +37,7 @@ traefik:
|
|||||||
kind: DaemonSet
|
kind: DaemonSet
|
||||||
additionalContainers:
|
additionalContainers:
|
||||||
- name: cloudflared
|
- name: cloudflared
|
||||||
image: cloudflare/cloudflared:2025.11.1
|
image: cloudflare/cloudflared:2026.7.3
|
||||||
command:
|
command:
|
||||||
- cloudflared
|
- cloudflared
|
||||||
- tunnel
|
- tunnel
|
||||||
@@ -70,10 +69,12 @@ traefik:
|
|||||||
dashboard:
|
dashboard:
|
||||||
enabled: true
|
enabled: true
|
||||||
providers:
|
providers:
|
||||||
|
kubernetesGateway:
|
||||||
|
enabled: true
|
||||||
file:
|
file:
|
||||||
enabled: true
|
enabled: true
|
||||||
watch: true
|
watch: true
|
||||||
content: |
|
content:
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
cloudflarewarp:
|
cloudflarewarp:
|
||||||
@@ -81,6 +82,19 @@ traefik:
|
|||||||
traefik-real-ip:
|
traefik-real-ip:
|
||||||
excludednets:
|
excludednets:
|
||||||
- "1.1.1.1/24"
|
- "1.1.1.1/24"
|
||||||
|
routers:
|
||||||
|
dispatcharr:
|
||||||
|
entryPoints:
|
||||||
|
- websecure
|
||||||
|
service: dispatcharr
|
||||||
|
tls:
|
||||||
|
options: default
|
||||||
|
rule: 'Host(`dispatcharr.dubyatp.xyz`) && PathPrefix(`/`)'
|
||||||
|
services:
|
||||||
|
dispatcharr:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: http://10.105.15.20:9191
|
||||||
service:
|
service:
|
||||||
spec:
|
spec:
|
||||||
externalTrafficPolicy: Local
|
externalTrafficPolicy: Local
|
||||||
@@ -117,3 +131,26 @@ traefik:
|
|||||||
data:
|
data:
|
||||||
tls.crt: ""
|
tls.crt: ""
|
||||||
tls.key: ""
|
tls.key: ""
|
||||||
|
- apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: traefik-local
|
||||||
|
spec:
|
||||||
|
sessionAffinity: ClientIP
|
||||||
|
sessionAffinityConfig:
|
||||||
|
clientIP:
|
||||||
|
timeoutSeconds: 3600
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/name: traefik
|
||||||
|
app.kubernetes.io/instance: traefik-traefik
|
||||||
|
ports:
|
||||||
|
- name: gitssh
|
||||||
|
port: 22
|
||||||
|
targetPort: gitssh
|
||||||
|
- name: web
|
||||||
|
port: 80
|
||||||
|
targetPort: web
|
||||||
|
- name: websecure
|
||||||
|
port: 443
|
||||||
|
targetPort: websecure
|
||||||
|
type: ClusterIP
|
||||||
@@ -24,5 +24,5 @@ appVersion: "1.0"
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: velero
|
- name: velero
|
||||||
version: 11.2.0
|
version: 12.1.0
|
||||||
repository: https://vmware-tanzu.github.io/helm-charts
|
repository: https://vmware-tanzu.github.io/helm-charts
|
||||||
@@ -2,8 +2,48 @@ velero:
|
|||||||
backupsEnabled: true
|
backupsEnabled: true
|
||||||
snapshotsEnabled: false
|
snapshotsEnabled: false
|
||||||
metrics:
|
metrics:
|
||||||
labels:
|
serviceMonitor:
|
||||||
metrics_enabled: "true"
|
enabled: true
|
||||||
|
prometheusRule:
|
||||||
|
enabled: true
|
||||||
|
spec:
|
||||||
|
- alert: VeleroBackupFailed
|
||||||
|
annotations:
|
||||||
|
message: Velero backup {{ $labels.schedule }} has failed
|
||||||
|
expr: |-
|
||||||
|
velero_backup_last_status{schedule!=""} != 1
|
||||||
|
for: 15m
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
|
- alert: VeleroBackupFailing
|
||||||
|
annotations:
|
||||||
|
message: Velero backup {{ $labels.schedule }} has been failing for the last 12h
|
||||||
|
expr: |-
|
||||||
|
velero_backup_last_status{schedule!=""} != 1
|
||||||
|
for: 12h
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
- alert: VeleroNoNewBackup
|
||||||
|
annotations:
|
||||||
|
message: Velero backup {{ $labels.schedule }} has not run successfully in the last 25h
|
||||||
|
expr: |-
|
||||||
|
(
|
||||||
|
(time() - velero_backup_last_successful_timestamp{schedule!=""}) >bool (25 * 3600)
|
||||||
|
or
|
||||||
|
absent(velero_backup_last_successful_timestamp{schedule!=""})
|
||||||
|
) == 1
|
||||||
|
for: 1h
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
- alert: VeleroBackupPartialFailures
|
||||||
|
annotations:
|
||||||
|
message: Velero backup {{ $labels.schedule }} has {{ $value | humanizePercentage }} partialy failed backups
|
||||||
|
expr: |-
|
||||||
|
rate(velero_backup_partial_failure_total{schedule!=""}[25m])
|
||||||
|
/ rate(velero_backup_attempt_total{schedule!=""}[25m]) > 0.5
|
||||||
|
for: 15m
|
||||||
|
labels:
|
||||||
|
severity: warning
|
||||||
configuration:
|
configuration:
|
||||||
backupStorageLocation:
|
backupStorageLocation:
|
||||||
- name: weyma-truenas
|
- name: weyma-truenas
|
||||||
@@ -19,7 +59,7 @@ velero:
|
|||||||
insecureSkipTLSVerify: "true"
|
insecureSkipTLSVerify: "true"
|
||||||
initContainers:
|
initContainers:
|
||||||
- name: velero-plugin-for-aws
|
- name: velero-plugin-for-aws
|
||||||
image: velero/velero-plugin-for-aws:v1.13.1
|
image: velero/velero-plugin-for-aws:v1.14.2
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: /target
|
- mountPath: /target
|
||||||
|
|||||||
Reference in New Issue
Block a user