Compare commits
47 commits
a15c1daebd
...
7d863973b8
| Author | SHA1 | Date | |
|---|---|---|---|
| 7d863973b8 | |||
| 845aea8b13 | |||
| bf6098e676 | |||
| a97783ed0b | |||
| a5a63ee4cd | |||
| b01b6a8987 | |||
| c40ccabcbb | |||
| b1a30eaf1d | |||
| 36f4bbc98a | |||
| e8df03cd18 | |||
| 856e86fd51 | |||
| 486542e783 | |||
| 47a110d564 | |||
| e7fe39a55c | |||
| 3d7580dc3a | |||
| 26d989fc03 | |||
| 029c916c92 | |||
| df5c58690e | |||
| d863b7e339 | |||
| 35b2c83865 | |||
| 00ff293759 | |||
| 2a4805b349 | |||
| 631143f9f8 | |||
| 0633deb983 | |||
| cd0c3724c6 | |||
| 775a28e4bb | |||
| edef9e4497 | |||
| 8851641147 | |||
| 2497dc06b6 | |||
| c44bae1323 | |||
| 77bbba3552 | |||
| 931a30d053 | |||
| 68822950c9 | |||
| bd306516ed | |||
| 22db0e5f5b | |||
| ae87765c4b | |||
| 5f258cd68a | |||
| aac5c5e182 | |||
| e1c2e09a98 | |||
| 69a5ecb317 | |||
| 2b9630eb04 | |||
| bdeec6d819 | |||
| 8c75b869f1 | |||
| 9d55315f4b | |||
| 5c1a74db0e | |||
| bd7d2794d4 | |||
| 184049745f |
41 changed files with 547 additions and 188 deletions
|
|
@ -6,6 +6,11 @@ metadata:
|
||||||
data:
|
data:
|
||||||
config.alloy: |-
|
config.alloy: |-
|
||||||
prometheus.exporter.unix "node" {
|
prometheus.exporter.unix "node" {
|
||||||
|
set_collectors = [
|
||||||
|
"cpu", "diskstats", "filesystem", "loadavg",
|
||||||
|
"meminfo", "netdev", "netstat", "os",
|
||||||
|
"pressure", "processes", "stat", "uname", "vmstat",
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
discovery.kubernetes "kubernetes_apiservers" {
|
discovery.kubernetes "kubernetes_apiservers" {
|
||||||
|
|
@ -141,6 +146,11 @@ data:
|
||||||
source_labels = ["__meta_kubernetes_pod_node_name"]
|
source_labels = ["__meta_kubernetes_pod_node_name"]
|
||||||
target_label = "node"
|
target_label = "node"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rule {
|
||||||
|
regex = "pod_template_hash|controller_revision_hash|deployment_kubernetes_io_revision"
|
||||||
|
action = "labeldrop"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
discovery.relabel "kubernetes_services" {
|
discovery.relabel "kubernetes_services" {
|
||||||
|
|
@ -249,6 +259,11 @@ data:
|
||||||
source_labels = ["__meta_kubernetes_pod_node_name"]
|
source_labels = ["__meta_kubernetes_pod_node_name"]
|
||||||
target_label = "node"
|
target_label = "node"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rule {
|
||||||
|
regex = "pod_template_hash|controller_revision_hash|deployment_kubernetes_io_revision"
|
||||||
|
action = "labeldrop"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
discovery.relabel "pod_logs" {
|
discovery.relabel "pod_logs" {
|
||||||
|
|
@ -298,6 +313,11 @@ data:
|
||||||
target_label = "__path__"
|
target_label = "__path__"
|
||||||
replacement = "/var/log/pods/*$1/*.log"
|
replacement = "/var/log/pods/*$1/*.log"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rule {
|
||||||
|
regex = "pod_template_hash|controller_revision_hash|deployment_kubernetes_io_revision"
|
||||||
|
action = "labeldrop"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
local.file_match "pod_logs" {
|
local.file_match "pod_logs" {
|
||||||
|
|
@ -352,9 +372,19 @@ data:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prometheus.relabel "cadvisor" {
|
||||||
|
forward_to = [prometheus.remote_write.default.receiver]
|
||||||
|
|
||||||
|
rule {
|
||||||
|
source_labels = ["__name__"]
|
||||||
|
regex = "container_(cpu_usage_seconds_total|memory_usage_bytes|memory_working_set_bytes|memory_rss|memory_cache|memory_swap|network_receive_bytes_total|network_transmit_bytes_total|network_receive_packets_total|network_transmit_packets_total|fs_reads_bytes_total|fs_writes_bytes_total|spec_cpu_quota|spec_cpu_period|spec_memory_limit_bytes|last_seen)"
|
||||||
|
action = "keep"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
prometheus.scrape "kubernetes_nodes_cadvisor" {
|
prometheus.scrape "kubernetes_nodes_cadvisor" {
|
||||||
targets = discovery.relabel.kubernetes_nodes_cadvisor.output
|
targets = discovery.relabel.kubernetes_nodes_cadvisor.output
|
||||||
forward_to = [prometheus.remote_write.default.receiver]
|
forward_to = [prometheus.relabel.cadvisor.receiver]
|
||||||
job_name = "kubernetes-nodes-cadvisor"
|
job_name = "kubernetes-nodes-cadvisor"
|
||||||
scheme = "https"
|
scheme = "https"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,5 +11,5 @@ helmCharts:
|
||||||
repo: https://argoproj.github.io/argo-helm
|
repo: https://argoproj.github.io/argo-helm
|
||||||
namespace: argo-workflows
|
namespace: argo-workflows
|
||||||
releaseName: argo-workflows
|
releaseName: argo-workflows
|
||||||
version: 1.0.7
|
version: 1.0.13
|
||||||
valuesFile: values.yaml
|
valuesFile: values.yaml
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ spec:
|
||||||
conversionStrategy: Default
|
conversionStrategy: Default
|
||||||
decodingStrategy: None
|
decodingStrategy: None
|
||||||
metadataPolicy: None
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: client-secret
|
- secretKey: client-secret
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: secrets/managed/argo-workflows/authentik-sso
|
key: secrets/managed/argo-workflows/authentik-sso
|
||||||
|
|
@ -29,3 +30,4 @@ spec:
|
||||||
conversionStrategy: Default
|
conversionStrategy: Default
|
||||||
decodingStrategy: None
|
decodingStrategy: None
|
||||||
metadataPolicy: None
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
|
|
|
||||||
|
|
@ -99,3 +99,22 @@ spec:
|
||||||
selfHeal: true
|
selfHeal: true
|
||||||
syncOptions:
|
syncOptions:
|
||||||
- ServerSideApply=true
|
- ServerSideApply=true
|
||||||
|
---
|
||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: renovate-operator
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://code.peterg.nl/wheatley/kubernetes.git
|
||||||
|
path: k8s-peterg/renovate-operator
|
||||||
|
targetRevision: HEAD
|
||||||
|
destination:
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
namespace: renovate-operator
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,25 @@ spec:
|
||||||
---
|
---
|
||||||
apiVersion: argoproj.io/v1alpha1
|
apiVersion: argoproj.io/v1alpha1
|
||||||
kind: Application
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: lidarr
|
||||||
|
namespace: argocd
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://code.peterg.nl/wheatley/kubernetes.git
|
||||||
|
path: k8s-wheatley/lidarr
|
||||||
|
targetRevision: HEAD
|
||||||
|
destination:
|
||||||
|
server: https://10.13.37.10:6443
|
||||||
|
namespace: lidarr
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
---
|
||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
metadata:
|
metadata:
|
||||||
name: prowlarr
|
name: prowlarr
|
||||||
namespace: argocd
|
namespace: argocd
|
||||||
|
|
|
||||||
|
|
@ -27,28 +27,3 @@ spec:
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: secrets/managed/argocd/authentik-oidc-credentials
|
key: secrets/managed/argocd/authentik-oidc-credentials
|
||||||
property: clientSecret
|
property: clientSecret
|
||||||
---
|
|
||||||
apiVersion: external-secrets.io/v1
|
|
||||||
kind: ExternalSecret
|
|
||||||
metadata:
|
|
||||||
name: argo-workflows-sso
|
|
||||||
namespace: argocd
|
|
||||||
spec:
|
|
||||||
secretStoreRef:
|
|
||||||
name: vault-wheatley
|
|
||||||
kind: ClusterSecretStore
|
|
||||||
target:
|
|
||||||
name: argo-workflows-sso
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/part-of: argo-workflows
|
|
||||||
data:
|
|
||||||
- secretKey: client-id
|
|
||||||
remoteRef:
|
|
||||||
key: secrets/managed/argo-workflows/dex-sso
|
|
||||||
property: client-id
|
|
||||||
- secretKey: client-secret
|
|
||||||
remoteRef:
|
|
||||||
key: secrets/managed/argo-workflows/dex-sso
|
|
||||||
property: client-secret
|
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ spec:
|
||||||
conversionStrategy: Default
|
conversionStrategy: Default
|
||||||
decodingStrategy: None
|
decodingStrategy: None
|
||||||
metadataPolicy: None
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: key
|
- secretKey: key
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: secrets/provisioned/tls-wildcard-peterg-nl
|
key: secrets/provisioned/tls-wildcard-peterg-nl
|
||||||
|
|
@ -34,3 +35,4 @@ spec:
|
||||||
conversionStrategy: Default
|
conversionStrategy: Default
|
||||||
decodingStrategy: None
|
decodingStrategy: None
|
||||||
metadataPolicy: None
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
|
|
|
||||||
|
|
@ -12,4 +12,4 @@ helmCharts:
|
||||||
repo: https://charts.external-secrets.io
|
repo: https://charts.external-secrets.io
|
||||||
namespace: external-secrets
|
namespace: external-secrets
|
||||||
releaseName: external-secrets
|
releaseName: external-secrets
|
||||||
version: 2.3.0
|
version: 2.4.0
|
||||||
|
|
|
||||||
20
k8s-peterg/renovate-operator/configmap.yaml
Normal file
20
k8s-peterg/renovate-operator/configmap.yaml
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: renovate-config
|
||||||
|
namespace: renovate-operator
|
||||||
|
data:
|
||||||
|
config.js: |-
|
||||||
|
module.exports = {
|
||||||
|
platform: 'forgejo',
|
||||||
|
endpoint: 'https://code.peterg.nl/api/v1/',
|
||||||
|
gitAuthor: 'Renovate <renovate@peterg.nl>',
|
||||||
|
username: 'renovate',
|
||||||
|
onboardingConfig: {
|
||||||
|
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
|
||||||
|
extends: ['config:recommended'],
|
||||||
|
},
|
||||||
|
optimizeForDisabled: true,
|
||||||
|
persistRepoData: true,
|
||||||
|
};
|
||||||
19
k8s-peterg/renovate-operator/kustomization.yaml
Normal file
19
k8s-peterg/renovate-operator/kustomization.yaml
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: renovate-operator
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- configmap.yaml
|
||||||
|
- namespace.yaml
|
||||||
|
- policies.yaml
|
||||||
|
- renovate-job.yaml
|
||||||
|
- secrets.yaml
|
||||||
|
|
||||||
|
helmCharts:
|
||||||
|
- name: renovate-operator
|
||||||
|
repo: https://helm.mogenius.com/public
|
||||||
|
namespace: renovate-operator
|
||||||
|
releaseName: renovate-operator
|
||||||
|
version: "4.7.0"
|
||||||
|
valuesFile: values.yaml
|
||||||
5
k8s-peterg/renovate-operator/namespace.yaml
Normal file
5
k8s-peterg/renovate-operator/namespace.yaml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: renovate-operator
|
||||||
37
k8s-peterg/renovate-operator/policies.yaml
Normal file
37
k8s-peterg/renovate-operator/policies.yaml
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
---
|
||||||
|
kind: NetworkPolicy
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
metadata:
|
||||||
|
name: allow-internet-only
|
||||||
|
spec:
|
||||||
|
podSelector: {}
|
||||||
|
policyTypes:
|
||||||
|
- Egress
|
||||||
|
egress:
|
||||||
|
- to:
|
||||||
|
- ipBlock:
|
||||||
|
cidr: 0.0.0.0/0
|
||||||
|
except:
|
||||||
|
- 10.0.0.0/8
|
||||||
|
- 192.168.0.0/16
|
||||||
|
- 172.16.0.0/12
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: kubernetes-egress
|
||||||
|
spec:
|
||||||
|
podSelector: {}
|
||||||
|
policyTypes:
|
||||||
|
- Egress
|
||||||
|
egress:
|
||||||
|
- to:
|
||||||
|
- namespaceSelector:
|
||||||
|
matchLabels:
|
||||||
|
kubernetes.io/metadata.name: kube-system
|
||||||
|
- podSelector:
|
||||||
|
matchLabels:
|
||||||
|
k8s-app: kube-apiserver
|
||||||
|
- ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 6443
|
||||||
27
k8s-peterg/renovate-operator/renovate-job.yaml
Normal file
27
k8s-peterg/renovate-operator/renovate-job.yaml
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
---
|
||||||
|
apiVersion: renovate-operator.mogenius.com/v1alpha1
|
||||||
|
kind: RenovateJob
|
||||||
|
metadata:
|
||||||
|
name: renovate
|
||||||
|
namespace: renovate-operator
|
||||||
|
spec:
|
||||||
|
schedule: "0 * * * *"
|
||||||
|
provider:
|
||||||
|
name: forgejo
|
||||||
|
endpoint: https://code.peterg.nl/api/v1/
|
||||||
|
image: ghcr.io/renovatebot/renovate:43.161.0
|
||||||
|
secretRef: renovate-operator-secrets
|
||||||
|
parallelism: 1
|
||||||
|
skipForks: true
|
||||||
|
extraVolumes:
|
||||||
|
- name: renovate-config
|
||||||
|
configMap:
|
||||||
|
name: renovate-config
|
||||||
|
extraVolumeMounts:
|
||||||
|
- name: renovate-config
|
||||||
|
mountPath: /config
|
||||||
|
extraEnv:
|
||||||
|
- name: LOG_LEVEL
|
||||||
|
value: debug
|
||||||
|
- name: RENOVATE_CONFIG_FILE
|
||||||
|
value: /config/config.js
|
||||||
22
k8s-peterg/renovate-operator/secrets.yaml
Normal file
22
k8s-peterg/renovate-operator/secrets.yaml
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
apiVersion: external-secrets.io/v1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: renovate-operator-secrets
|
||||||
|
namespace: renovate-operator
|
||||||
|
spec:
|
||||||
|
refreshInterval: "15s"
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault-wheatley
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: renovate-operator-secrets
|
||||||
|
data:
|
||||||
|
- secretKey: RENOVATE_TOKEN
|
||||||
|
remoteRef:
|
||||||
|
key: /secrets/managed/renovate/token
|
||||||
|
property: RENOVATE_TOKEN
|
||||||
|
- secretKey: GITHUB_COM_TOKEN
|
||||||
|
remoteRef:
|
||||||
|
key: /secrets/managed/renovate/token
|
||||||
|
property: GITHUB_COM_TOKEN
|
||||||
20
k8s-peterg/renovate-operator/values.yaml
Normal file
20
k8s-peterg/renovate-operator/values.yaml
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
fullnameOverride: "renovate-operator"
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
serviceMonitor:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
crd:
|
||||||
|
install: true
|
||||||
|
mode: template
|
||||||
|
|
||||||
|
rbac:
|
||||||
|
ownNamespaceOnly: true
|
||||||
|
|
||||||
|
route:
|
||||||
|
enabled: true
|
||||||
|
hostnames:
|
||||||
|
parentRefs:
|
||||||
|
- name: internal
|
||||||
|
namespace: kube-system
|
||||||
|
sectionName: https
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
apiVersion: v1
|
|
||||||
data:
|
|
||||||
approle_id: MDE5YTdjOWQtMTYxOC0yZjg0LWE2NzUtOWQ5NmVkZWFiNzEyCg==
|
|
||||||
approle_secret: ZDZkOWU0MmUtZmVhNi05MGIzLWNlODktYzJlY2E2YWIxMjc3Cg==
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: vault-wheatley-approle
|
|
||||||
namespace: external-secrets
|
|
||||||
type: Opaque
|
|
||||||
|
|
@ -5,7 +5,13 @@ metadata:
|
||||||
name: alloy-config
|
name: alloy-config
|
||||||
data:
|
data:
|
||||||
config.alloy: |-
|
config.alloy: |-
|
||||||
prometheus.exporter.unix "node" {}
|
prometheus.exporter.unix "node" {
|
||||||
|
set_collectors = [
|
||||||
|
"cpu", "diskstats", "filesystem", "loadavg",
|
||||||
|
"meminfo", "netdev", "netstat", "os",
|
||||||
|
"pressure", "processes", "stat", "uname", "vmstat",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
discovery.kubernetes "kubernetes_apiservers" {
|
discovery.kubernetes "kubernetes_apiservers" {
|
||||||
role = "endpoints"
|
role = "endpoints"
|
||||||
|
|
@ -152,6 +158,11 @@ data:
|
||||||
source_labels = ["__meta_kubernetes_pod_node_name"]
|
source_labels = ["__meta_kubernetes_pod_node_name"]
|
||||||
target_label = "node"
|
target_label = "node"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rule {
|
||||||
|
regex = "pod_template_hash|controller_revision_hash|deployment_kubernetes_io_revision"
|
||||||
|
action = "labeldrop"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
discovery.relabel "kubernetes_services" {
|
discovery.relabel "kubernetes_services" {
|
||||||
|
|
@ -260,6 +271,11 @@ data:
|
||||||
source_labels = ["__meta_kubernetes_pod_node_name"]
|
source_labels = ["__meta_kubernetes_pod_node_name"]
|
||||||
target_label = "node"
|
target_label = "node"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rule {
|
||||||
|
regex = "pod_template_hash|controller_revision_hash|deployment_kubernetes_io_revision"
|
||||||
|
action = "labeldrop"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
discovery.relabel "pod_logs" {
|
discovery.relabel "pod_logs" {
|
||||||
|
|
@ -309,6 +325,11 @@ data:
|
||||||
target_label = "__path__"
|
target_label = "__path__"
|
||||||
replacement = "/var/log/pods/*$1/*.log"
|
replacement = "/var/log/pods/*$1/*.log"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rule {
|
||||||
|
regex = "pod_template_hash|controller_revision_hash|deployment_kubernetes_io_revision"
|
||||||
|
action = "labeldrop"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
local.file_match "pod_logs" {
|
local.file_match "pod_logs" {
|
||||||
|
|
@ -369,9 +390,19 @@ data:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prometheus.relabel "cadvisor" {
|
||||||
|
forward_to = [prometheus.remote_write.default.receiver]
|
||||||
|
|
||||||
|
rule {
|
||||||
|
source_labels = ["__name__"]
|
||||||
|
regex = "container_(cpu_usage_seconds_total|memory_usage_bytes|memory_working_set_bytes|memory_rss|memory_cache|memory_swap|network_receive_bytes_total|network_transmit_bytes_total|network_receive_packets_total|network_transmit_packets_total|fs_reads_bytes_total|fs_writes_bytes_total|spec_cpu_quota|spec_cpu_period|spec_memory_limit_bytes|last_seen)"
|
||||||
|
action = "keep"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
prometheus.scrape "kubernetes_nodes_cadvisor" {
|
prometheus.scrape "kubernetes_nodes_cadvisor" {
|
||||||
targets = discovery.relabel.kubernetes_nodes_cadvisor.output
|
targets = discovery.relabel.kubernetes_nodes_cadvisor.output
|
||||||
forward_to = [prometheus.remote_write.default.receiver]
|
forward_to = [prometheus.relabel.cadvisor.receiver]
|
||||||
job_name = "kubernetes-nodes-cadvisor"
|
job_name = "kubernetes-nodes-cadvisor"
|
||||||
scheme = "https"
|
scheme = "https"
|
||||||
clustering {
|
clustering {
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ spec:
|
||||||
conversionStrategy: Default
|
conversionStrategy: Default
|
||||||
decodingStrategy: None
|
decodingStrategy: None
|
||||||
metadataPolicy: None
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
- secretKey: key
|
- secretKey: key
|
||||||
remoteRef:
|
remoteRef:
|
||||||
key: secrets/provisioned/tls-wildcard-wheatley-in
|
key: secrets/provisioned/tls-wildcard-wheatley-in
|
||||||
|
|
@ -34,3 +35,4 @@ spec:
|
||||||
conversionStrategy: Default
|
conversionStrategy: Default
|
||||||
decodingStrategy: None
|
decodingStrategy: None
|
||||||
metadataPolicy: None
|
metadataPolicy: None
|
||||||
|
nullBytePolicy: Ignore
|
||||||
|
|
|
||||||
|
|
@ -12,4 +12,4 @@ helmCharts:
|
||||||
repo: https://charts.external-secrets.io
|
repo: https://charts.external-secrets.io
|
||||||
namespace: external-secrets
|
namespace: external-secrets
|
||||||
releaseName: external-secrets
|
releaseName: external-secrets
|
||||||
version: 2.3.0
|
version: 2.4.0
|
||||||
|
|
|
||||||
9
k8s-wheatley/lidarr/configmap.yaml
Normal file
9
k8s-wheatley/lidarr/configmap.yaml
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: lidarr-envs
|
||||||
|
data:
|
||||||
|
PUID: "1000"
|
||||||
|
PGID: "1000"
|
||||||
|
TZ: Europe/Amsterdam
|
||||||
50
k8s-wheatley/lidarr/deployments.yaml
Normal file
50
k8s-wheatley/lidarr/deployments.yaml
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: lidarr
|
||||||
|
labels:
|
||||||
|
app: lidarr
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
serviceName: lidarr
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: lidarr
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: lidarr
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: lidarr
|
||||||
|
image: linuxserver/lidarr
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- containerPort: 8686
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: lidarr-envs
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /config
|
||||||
|
name: lidarr-config
|
||||||
|
- mountPath: /shared/media
|
||||||
|
name: nfs-media
|
||||||
|
securityContext:
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- "ALL"
|
||||||
|
add:
|
||||||
|
- "CHOWN"
|
||||||
|
- "SETUID"
|
||||||
|
- "SETGID"
|
||||||
|
volumes:
|
||||||
|
- name: lidarr-config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: lidarr-storage
|
||||||
|
- name: nfs-media
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: nfs-media
|
||||||
16
k8s-wheatley/lidarr/ingress.yaml
Normal file
16
k8s-wheatley/lidarr/ingress.yaml
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: HTTPRoute
|
||||||
|
metadata:
|
||||||
|
name: lidarr-route
|
||||||
|
spec:
|
||||||
|
parentRefs:
|
||||||
|
- name: internal
|
||||||
|
namespace: kube-system
|
||||||
|
sectionName: https
|
||||||
|
hostnames:
|
||||||
|
- "lidarr.wheatley.in"
|
||||||
|
rules:
|
||||||
|
- backendRefs:
|
||||||
|
- name: lidarr
|
||||||
|
port: 80
|
||||||
33
k8s-wheatley/lidarr/kustomization.yaml
Normal file
33
k8s-wheatley/lidarr/kustomization.yaml
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: lidarr
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- ../../kustomize-bases/nfs-media
|
||||||
|
- configmap.yaml
|
||||||
|
- deployments.yaml
|
||||||
|
- ingress.yaml
|
||||||
|
- pvc.yaml
|
||||||
|
- services.yaml
|
||||||
|
- namespace.yaml
|
||||||
|
|
||||||
|
patches:
|
||||||
|
- target:
|
||||||
|
kind: PersistentVolume
|
||||||
|
name: nfs-media
|
||||||
|
patch: |
|
||||||
|
- op: replace
|
||||||
|
path: /metadata/name
|
||||||
|
value: nfs-media-lidarr
|
||||||
|
- target:
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
name: nfs-media
|
||||||
|
patch: |
|
||||||
|
- op: replace
|
||||||
|
path: /spec/volumeName
|
||||||
|
value: nfs-media-lidarr
|
||||||
|
|
||||||
|
images:
|
||||||
|
- name: linuxserver/lidarr
|
||||||
|
newTag: 3.1.0@sha256:d2f944115de2ca6754ad142ee92f9db481b1574c7bc030974d624584106b78d7
|
||||||
5
k8s-wheatley/lidarr/namespace.yaml
Normal file
5
k8s-wheatley/lidarr/namespace.yaml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: lidarr
|
||||||
12
k8s-wheatley/lidarr/pvc.yaml
Normal file
12
k8s-wheatley/lidarr/pvc.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: lidarr-storage
|
||||||
|
spec:
|
||||||
|
storageClassName: piraeus-lvmthin
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 5Gi
|
||||||
12
k8s-wheatley/lidarr/services.yaml
Normal file
12
k8s-wheatley/lidarr/services.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: lidarr
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: lidarr
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8686
|
||||||
|
|
@ -4,6 +4,7 @@ kind: Kustomization
|
||||||
namespace: plex
|
namespace: plex
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
|
- ../../kustomize-bases/nfs-media
|
||||||
- configmap.yaml
|
- configmap.yaml
|
||||||
- deployments.yaml
|
- deployments.yaml
|
||||||
- ingress.yaml
|
- ingress.yaml
|
||||||
|
|
@ -12,6 +13,28 @@ resources:
|
||||||
- services.yaml
|
- services.yaml
|
||||||
- namespace.yaml
|
- namespace.yaml
|
||||||
|
|
||||||
|
patches:
|
||||||
|
- target:
|
||||||
|
kind: PersistentVolume
|
||||||
|
name: nfs-media
|
||||||
|
patch: |
|
||||||
|
- op: replace
|
||||||
|
path: /metadata/name
|
||||||
|
value: nfs-media-plex
|
||||||
|
- op: replace
|
||||||
|
path: /spec/accessModes/0
|
||||||
|
value: ReadOnlyMany
|
||||||
|
- target:
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
name: nfs-media
|
||||||
|
patch: |
|
||||||
|
- op: replace
|
||||||
|
path: /spec/volumeName
|
||||||
|
value: nfs-media-plex
|
||||||
|
- op: replace
|
||||||
|
path: /spec/accessModes/0
|
||||||
|
value: ReadOnlyMany
|
||||||
|
|
||||||
images:
|
images:
|
||||||
- name: plexinc/pms-docker
|
- name: plexinc/pms-docker
|
||||||
newTag: 1.43.1.10611-1e34174b1@sha256:8b5bcdf7b506fe051aa1a0a0d464efdb3ad8c0fb1f8a4dfb27a8c489b609920c
|
newTag: 1.43.1.10611-1e34174b1@sha256:8b5bcdf7b506fe051aa1a0a0d464efdb3ad8c0fb1f8a4dfb27a8c489b609920c
|
||||||
|
|
|
||||||
|
|
@ -10,36 +10,3 @@ spec:
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: 20Gi
|
storage: 20Gi
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: nfs-media
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadOnlyMany
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 40Ti
|
|
||||||
volumeName: nfs-media-plex
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
name: nfs-media-plex
|
|
||||||
spec:
|
|
||||||
capacity:
|
|
||||||
storage: 40Ti
|
|
||||||
accessModes:
|
|
||||||
- ReadOnlyMany
|
|
||||||
nfs:
|
|
||||||
server: 10.0.69.10
|
|
||||||
path: /tank/media
|
|
||||||
mountOptions:
|
|
||||||
- vers=4.1
|
|
||||||
- rsize=1048576
|
|
||||||
- wsize=1048576
|
|
||||||
- hard
|
|
||||||
- timeo=600
|
|
||||||
- noatime
|
|
||||||
persistentVolumeReclaimPolicy: Retain
|
|
||||||
|
|
|
||||||
|
|
@ -16,4 +16,4 @@ images:
|
||||||
- name: flaresolverr/flaresolverr
|
- name: flaresolverr/flaresolverr
|
||||||
newTag: v3.4.6@sha256:7962759d99d7e125e108e0f5e7f3cdbcd36161776d058d1d9b7153b92ef1af9e
|
newTag: v3.4.6@sha256:7962759d99d7e125e108e0f5e7f3cdbcd36161776d058d1d9b7153b92ef1af9e
|
||||||
- name: linuxserver/prowlarr
|
- name: linuxserver/prowlarr
|
||||||
newTag: 2.3.5@sha256:35f48abb3e976fcf077fae756866c582e4a90f8b24810ae4067b3558f7cdbbdf
|
newTag: 2.3.5@sha256:c5de2a8758a05594319263e7691c1dce56899442ed1720d6eca216c0958f4caf
|
||||||
|
|
|
||||||
|
|
@ -9,22 +9,26 @@ data:
|
||||||
VPN_TYPE: "wireguard"
|
VPN_TYPE: "wireguard"
|
||||||
VPN_PORT_FORWARDING: on
|
VPN_PORT_FORWARDING: on
|
||||||
VPN_PORT_FORWARDING_PROVIDER: protonvpn
|
VPN_PORT_FORWARDING_PROVIDER: protonvpn
|
||||||
VPN_PORT_FORWARDING_UP_COMMAND: |
|
VPN_PORT_FORWARDING_UP_COMMAND: "/scripts/port-up.sh"
|
||||||
/bin/sh -c '
|
VPN_PORT_FORWARDING_DOWN_COMMAND: "/scripts/port-down.sh"
|
||||||
|
FIREWALL_OUTBOUND_SUBNETS: 10.244.0.0/16,10.96.0.0/12
|
||||||
|
FIREWALL_INPUT_PORTS: "8112"
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: gluetun-scripts
|
||||||
|
data:
|
||||||
|
port-up.sh: |
|
||||||
|
#!/bin/sh
|
||||||
wget -O- --retry-connrefused \
|
wget -O- --retry-connrefused \
|
||||||
--post-data "json={\"listen_port\":{{PORTS}},\"current_network_interface\":\"tun0\",\"random_port\":false,\"upnp\":false}" \
|
--post-data "json={\"listen_port\":{{PORTS}},\"current_network_interface\":\"tun0\",\"random_port\":false,\"upnp\":false}" \
|
||||||
http://127.0.0.1:8112/api/v2/app/setPreferences 2>&1
|
http://127.0.0.1:8112/api/v2/app/setPreferences 2>&1
|
||||||
'
|
port-down.sh: |
|
||||||
VPN_PORT_FORWARDING_DOWN_COMMAND: |
|
#!/bin/sh
|
||||||
/bin/sh -c '
|
|
||||||
wget -O- --retry-connrefused \
|
wget -O- --retry-connrefused \
|
||||||
--post-data "json={\"listen_port\":0,\"current_network_interface\":\"lo\"}" \
|
--post-data "json={\"listen_port\":0,\"current_network_interface\":\"lo\"}" \
|
||||||
http://127.0.0.1:8112/api/v2/app/setPreferences 2>&1
|
http://127.0.0.1:8112/api/v2/app/setPreferences 2>&1
|
||||||
'
|
|
||||||
FIREWALL_OUTBOUND_SUBNETS: 10.244.0.0/16,10.96.0.0/12
|
|
||||||
FIREWALL_INPUT_PORTS: "8112"
|
|
||||||
DNS_KEEP_NAMESERVER: on
|
|
||||||
DOT: off
|
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,8 @@ spec:
|
||||||
- mountPath: "/gluetun/wireguard"
|
- mountPath: "/gluetun/wireguard"
|
||||||
name: gluetun-wgconfig
|
name: gluetun-wgconfig
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
- name: gluetun-scripts
|
||||||
|
mountPath: /scripts
|
||||||
- name: gluetun-tmp
|
- name: gluetun-tmp
|
||||||
mountPath: /tmp/gluetun
|
mountPath: /tmp/gluetun
|
||||||
restartPolicy: Always
|
restartPolicy: Always
|
||||||
|
|
@ -128,6 +130,10 @@ spec:
|
||||||
- name: gluetun-wgconfig
|
- name: gluetun-wgconfig
|
||||||
secret:
|
secret:
|
||||||
secretName: gluetun-wgconfig
|
secretName: gluetun-wgconfig
|
||||||
|
- name: gluetun-scripts
|
||||||
|
configMap:
|
||||||
|
name: gluetun-scripts
|
||||||
|
defaultMode: 0755
|
||||||
- name: gluetun-tmp
|
- name: gluetun-tmp
|
||||||
emptyDir: {}
|
emptyDir: {}
|
||||||
- name: nfs-media
|
- name: nfs-media
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ kind: Kustomization
|
||||||
namespace: qbittorrent
|
namespace: qbittorrent
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
|
- ../../kustomize-bases/nfs-media
|
||||||
- configmap.yaml
|
- configmap.yaml
|
||||||
- deployments.yaml
|
- deployments.yaml
|
||||||
- ingress.yaml
|
- ingress.yaml
|
||||||
|
|
@ -12,6 +13,25 @@ resources:
|
||||||
- services.yaml
|
- services.yaml
|
||||||
- namespace.yaml
|
- namespace.yaml
|
||||||
|
|
||||||
|
patches:
|
||||||
|
- target:
|
||||||
|
kind: PersistentVolume
|
||||||
|
name: nfs-media
|
||||||
|
patch: |
|
||||||
|
- op: replace
|
||||||
|
path: /metadata/name
|
||||||
|
value: nfs-media-qbittorrent
|
||||||
|
- op: replace
|
||||||
|
path: /spec/nfs/path
|
||||||
|
value: /tank/media/downloads
|
||||||
|
- target:
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
name: nfs-media
|
||||||
|
patch: |
|
||||||
|
- op: replace
|
||||||
|
path: /spec/volumeName
|
||||||
|
value: nfs-media-qbittorrent
|
||||||
|
|
||||||
images:
|
images:
|
||||||
- name: ghcr.io/qdm12/gluetun
|
- name: ghcr.io/qdm12/gluetun
|
||||||
newTag: v3.41.1@sha256:1a5bf4b4820a879cdf8d93d7ef0d2d963af56670c9ebff8981860b6804ebc8ab
|
newTag: v3.41.1@sha256:1a5bf4b4820a879cdf8d93d7ef0d2d963af56670c9ebff8981860b6804ebc8ab
|
||||||
|
|
|
||||||
|
|
@ -10,36 +10,3 @@ spec:
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: 5Gi
|
storage: 5Gi
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: nfs-media
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteMany
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 40Ti
|
|
||||||
volumeName: nfs-media-qbittorrent
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
name: nfs-media-qbittorrent
|
|
||||||
spec:
|
|
||||||
capacity:
|
|
||||||
storage: 40Ti
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteMany
|
|
||||||
nfs:
|
|
||||||
server: 10.0.69.10
|
|
||||||
path: /tank/media/downloads
|
|
||||||
mountOptions:
|
|
||||||
- vers=4.1
|
|
||||||
- rsize=1048576
|
|
||||||
- wsize=1048576
|
|
||||||
- hard
|
|
||||||
- timeo=600
|
|
||||||
- noatime
|
|
||||||
persistentVolumeReclaimPolicy: Retain
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ kind: Kustomization
|
||||||
namespace: radarr
|
namespace: radarr
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
|
- ../../kustomize-bases/nfs-media
|
||||||
- configmap.yaml
|
- configmap.yaml
|
||||||
- deployments.yaml
|
- deployments.yaml
|
||||||
- ingress.yaml
|
- ingress.yaml
|
||||||
|
|
@ -12,6 +13,22 @@ resources:
|
||||||
- services.yaml
|
- services.yaml
|
||||||
- namespace.yaml
|
- namespace.yaml
|
||||||
|
|
||||||
|
patches:
|
||||||
|
- target:
|
||||||
|
kind: PersistentVolume
|
||||||
|
name: nfs-media
|
||||||
|
patch: |
|
||||||
|
- op: replace
|
||||||
|
path: /metadata/name
|
||||||
|
value: nfs-media-radarr
|
||||||
|
- target:
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
name: nfs-media
|
||||||
|
patch: |
|
||||||
|
- op: replace
|
||||||
|
path: /spec/volumeName
|
||||||
|
value: nfs-media-radarr
|
||||||
|
|
||||||
images:
|
images:
|
||||||
- name: linuxserver/radarr
|
- name: linuxserver/radarr
|
||||||
newTag: 6.1.1@sha256:6f1dda18354ea7f28cead8f6d099fc8222498c3ae165f567d504ed04d70980d7
|
newTag: 6.1.1@sha256:b01097ad2d948c9f5eca39eb60bb529e2e55b0738c4bf7db09383bef0abab59d
|
||||||
|
|
|
||||||
|
|
@ -10,36 +10,3 @@ spec:
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: 5Gi
|
storage: 5Gi
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: nfs-media
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteMany
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 40Ti
|
|
||||||
volumeName: nfs-media-radarr
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
name: nfs-media-radarr
|
|
||||||
spec:
|
|
||||||
capacity:
|
|
||||||
storage: 40Ti
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteMany
|
|
||||||
nfs:
|
|
||||||
server: 10.0.69.10
|
|
||||||
path: /tank/media
|
|
||||||
mountOptions:
|
|
||||||
- vers=4.1
|
|
||||||
- rsize=1048576
|
|
||||||
- wsize=1048576
|
|
||||||
- hard
|
|
||||||
- timeo=600
|
|
||||||
- noatime
|
|
||||||
persistentVolumeReclaimPolicy: Retain
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ kind: Kustomization
|
||||||
namespace: sonarr
|
namespace: sonarr
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
|
- ../../kustomize-bases/nfs-media
|
||||||
- configmap.yaml
|
- configmap.yaml
|
||||||
- deployments.yaml
|
- deployments.yaml
|
||||||
- ingress.yaml
|
- ingress.yaml
|
||||||
|
|
@ -12,6 +13,22 @@ resources:
|
||||||
- services.yaml
|
- services.yaml
|
||||||
- namespace.yaml
|
- namespace.yaml
|
||||||
|
|
||||||
|
patches:
|
||||||
|
- target:
|
||||||
|
kind: PersistentVolume
|
||||||
|
name: nfs-media
|
||||||
|
patch: |
|
||||||
|
- op: replace
|
||||||
|
path: /metadata/name
|
||||||
|
value: nfs-media-sonarr
|
||||||
|
- target:
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
name: nfs-media
|
||||||
|
patch: |
|
||||||
|
- op: replace
|
||||||
|
path: /spec/volumeName
|
||||||
|
value: nfs-media-sonarr
|
||||||
|
|
||||||
images:
|
images:
|
||||||
- name: linuxserver/sonarr
|
- name: linuxserver/sonarr
|
||||||
newTag: 4.0.17@sha256:6854df9de20b8c82e1982604f39473d64dbb4c4584b1013f18f9ade1ee92af13
|
newTag: 4.0.17@sha256:3580aec3802c915f0f819a88d5099abce61734b925732b8393d176b5dc561020
|
||||||
|
|
|
||||||
|
|
@ -10,36 +10,3 @@ spec:
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
storage: 5Gi
|
storage: 5Gi
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: nfs-media
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteMany
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 40Ti
|
|
||||||
volumeName: nfs-media-sonarr
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolume
|
|
||||||
metadata:
|
|
||||||
name: nfs-media-sonarr
|
|
||||||
spec:
|
|
||||||
capacity:
|
|
||||||
storage: 40Ti
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteMany
|
|
||||||
nfs:
|
|
||||||
server: 10.0.69.10
|
|
||||||
path: /tank/media
|
|
||||||
mountOptions:
|
|
||||||
- vers=4.1
|
|
||||||
- rsize=1048576
|
|
||||||
- wsize=1048576
|
|
||||||
- hard
|
|
||||||
- timeo=600
|
|
||||||
- noatime
|
|
||||||
persistentVolumeReclaimPolicy: Retain
|
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,12 @@ resources:
|
||||||
helmCharts:
|
helmCharts:
|
||||||
- name: alloy
|
- name: alloy
|
||||||
repo: https://grafana.github.io/helm-charts
|
repo: https://grafana.github.io/helm-charts
|
||||||
version: "1.7.0"
|
version: "1.8.0"
|
||||||
releaseName: alloy
|
releaseName: alloy
|
||||||
valuesFile: values.yaml
|
valuesFile: values.yaml
|
||||||
- name: kube-state-metrics
|
- name: kube-state-metrics
|
||||||
repo: https://prometheus-community.github.io/helm-charts
|
repo: https://prometheus-community.github.io/helm-charts
|
||||||
version: "7.2.2"
|
version: "7.3.0"
|
||||||
releaseName: kube-state-metrics
|
releaseName: kube-state-metrics
|
||||||
- name: prometheus-operator-crds
|
- name: prometheus-operator-crds
|
||||||
repo: https://prometheus-community.github.io/helm-charts
|
repo: https://prometheus-community.github.io/helm-charts
|
||||||
|
|
|
||||||
|
|
@ -13,5 +13,5 @@ helmCharts:
|
||||||
repo: https://helm.cilium.io
|
repo: https://helm.cilium.io
|
||||||
namespace: kube-system
|
namespace: kube-system
|
||||||
releaseName: cilium
|
releaseName: cilium
|
||||||
version: 1.18.6
|
version: 1.19.3
|
||||||
valuesFile: values.yaml
|
valuesFile: values.yaml
|
||||||
|
|
|
||||||
6
kustomize-bases/nfs-media/kustomization.yaml
Normal file
6
kustomize-bases/nfs-media/kustomization.yaml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- pvc.yaml
|
||||||
40
kustomize-bases/nfs-media/pvc.yaml
Normal file
40
kustomize-bases/nfs-media/pvc.yaml
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
# Shared NFS media storage template — used by plex, sonarr, radarr, and qbittorrent.
|
||||||
|
# All apps on k8s-wheatley mount the same NFS server: 10.0.69.10
|
||||||
|
#
|
||||||
|
# Each app overlays this base with JSON patches in its kustomization.yaml:
|
||||||
|
# - Always: rename PV (metadata.name) and update PVC volumeName to match
|
||||||
|
# - plex only: patch accessModes to ReadOnlyMany on both PV and PVC
|
||||||
|
# - qbittorrent only: patch nfs.path to /tank/media/downloads
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: nfs-media # renamed per-app via JSON patch
|
||||||
|
spec:
|
||||||
|
capacity:
|
||||||
|
storage: 40Ti
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
nfs:
|
||||||
|
server: 10.0.69.10
|
||||||
|
path: /tank/media
|
||||||
|
mountOptions:
|
||||||
|
- vers=4.1
|
||||||
|
- rsize=1048576
|
||||||
|
- wsize=1048576
|
||||||
|
- hard
|
||||||
|
- timeo=600
|
||||||
|
- noatime
|
||||||
|
persistentVolumeReclaimPolicy: Retain
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: nfs-media
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 40Ti
|
||||||
|
volumeName: nfs-media # patched per-app to match PV name
|
||||||
Loading…
Add table
Add a link
Reference in a new issue