Compare commits
9 Commits
4553d7dcfb
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
951198ffa8
|
|||
|
7f78d71d42
|
|||
|
23690f01db
|
|||
|
53ce8d4343
|
|||
|
5a027ea7e0
|
|||
|
6cbd2fca75
|
|||
|
5c3a245dc5
|
|||
|
0c7dc1a3de
|
|||
|
499b302cee
|
@@ -21,7 +21,9 @@ repos:
|
||||
hooks:
|
||||
- id: kubeconform
|
||||
|
||||
- repo: https://github.com/tarioch/flux-check-hook
|
||||
rev: v0.8.0
|
||||
hooks:
|
||||
- id: check-flux-helm-values
|
||||
# Linting does not work with external values.yaml
|
||||
# TODO: Include url to schema in values.yaml and validate based on that?
|
||||
# - repo: https://github.com/tarioch/flux-check-hook
|
||||
# rev: v0.8.0
|
||||
# hooks:
|
||||
# - id: check-flux-helm-values
|
||||
|
||||
@@ -65,6 +65,12 @@ spec:
|
||||
enabled: true
|
||||
existingSecret: grafana-ldap-toml
|
||||
|
||||
sidecar:
|
||||
datasources:
|
||||
enabled: true
|
||||
searchNamespace: ALL
|
||||
labelValue: "1"
|
||||
|
||||
extraSecretMounts:
|
||||
- name: postgres-app-mount
|
||||
secretName: postgres-app
|
||||
|
||||
14
clusters/titan.lan.huizinga.dev/alerts/alert-flux-infra.yaml
Normal file
14
clusters/titan.lan.huizinga.dev/alerts/alert-flux-infra.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
apiVersion: notification.toolkit.fluxcd.io/v1beta3
|
||||
kind: Alert
|
||||
metadata:
|
||||
name: flux-infra
|
||||
namespace: flux-system
|
||||
spec:
|
||||
providerRef:
|
||||
name: flux-infra
|
||||
eventSeverity: info
|
||||
eventSources:
|
||||
- kind: Kustomization
|
||||
name: "*"
|
||||
matchLabels:
|
||||
alert: flux-infra
|
||||
12
clusters/titan.lan.huizinga.dev/alerts/alert-telegram.yaml
Normal file
12
clusters/titan.lan.huizinga.dev/alerts/alert-telegram.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
apiVersion: notification.toolkit.fluxcd.io/v1beta3
|
||||
kind: Alert
|
||||
metadata:
|
||||
name: telegram
|
||||
namespace: flux-system
|
||||
spec:
|
||||
providerRef:
|
||||
name: telegram
|
||||
eventSeverity: error
|
||||
eventSources:
|
||||
- kind: Kustomization
|
||||
name: "*"
|
||||
@@ -0,0 +1,10 @@
|
||||
apiVersion: notification.toolkit.fluxcd.io/v1beta3
|
||||
kind: Provider
|
||||
metadata:
|
||||
name: flux-infra
|
||||
namespace: flux-system
|
||||
spec:
|
||||
type: gitea
|
||||
address: https://git.huizinga.dev/dreaded_x/flux-infra
|
||||
secretRef:
|
||||
name: gitea
|
||||
@@ -0,0 +1,11 @@
|
||||
apiVersion: notification.toolkit.fluxcd.io/v1beta3
|
||||
kind: Provider
|
||||
metadata:
|
||||
name: telegram
|
||||
namespace: flux-system
|
||||
spec:
|
||||
type: telegram
|
||||
address: https://api.telegram.org
|
||||
channel: "-4748034121"
|
||||
secretRef:
|
||||
name: telegram
|
||||
54
clusters/titan.lan.huizinga.dev/alerts/secret-telegram.yaml
Normal file
54
clusters/titan.lan.huizinga.dev/alerts/secret-telegram.yaml
Normal file
@@ -0,0 +1,54 @@
|
||||
apiVersion: v1
|
||||
stringData:
|
||||
token: ENC[AES256_GCM,data:GgQ/uMKwKKxkEaqVlqH6RlhNTXE+9iM9C5seH0Vjsv/Rwb4aonM6Fy9lQUtiwg==,iv:xKKiRxMu0myMmT73XvUy69qt216TNbeJ4Y/0oUAK87s=,tag:ib0nLm2HkaB91vSllRPSWg==,type:str]
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: telegram
|
||||
namespace: flux-system
|
||||
sops:
|
||||
lastmodified: "2025-04-22T14:43:42Z"
|
||||
mac: ENC[AES256_GCM,data:wiq7VPKe+PBXLbiL9VVJ0gjtAb0g0f5qJgZaDkFaeIn5KfXYauzX1MyoXxy0qSi5rBesKCmhhDhLHRW/SA7KJyaWO1GIdP9Obppm+l83zJ6FVn2XvDZQkP+IoEBCPUgooT4RBvvJUJJeA9BDuPV3ig43sYZM+47Vc/WFZrx1238=,iv:KqDkIbKqrv1087PQC10jNUfkeGvzaC9ZvwYwhLd3CcA=,tag:Tb6mKFaK3+3BmiuFfEXgQw==,type:str]
|
||||
pgp:
|
||||
- created_at: "2025-04-22T11:56:49Z"
|
||||
enc: |-
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
hQIMA7pKPTYH5bqOARAAioWyCnKFGD/5XeH++ulmfannJcwuFbiJ+jyoYxbmbxZK
|
||||
egOXaOg9jkw+FuKy+u/5QNFZAgL4Ju3dMOyeBuZXGAgchVoDuqFANj7sXMhUnBkc
|
||||
BuKLs/ob5U2KUD2YU+fFQd4XZfOepPGZF9qNwl4wttUxhawzQ66G49j23B8bxe1E
|
||||
0Isddm7SCzF0OJOogaJ1rh9ylfzwlBW0PaBhBaIlNs+PIUJW7URWouDJnWh+jBvE
|
||||
qT8brYP7gb+Tl9lNihJdPLG32jiYhQxueIkm6BqSUQlU+yW/q8RUhp4+hLAaSOvC
|
||||
vTx1qqhn9ipZWG+EgPatUtV2gW0U9jOPRAstC1/zUe6UljIuQAEDx844j1sfmKxl
|
||||
1bPdl1790V2bDDvDX4zeRAR6N6lzNkfYd02ZvWVKkUr3dTCfn/dJ6LM39tfZNeh2
|
||||
WKnIN/PoxPL2srD9QRQmVPBqoLJrBKs1v1jWBEfMdT75H8e4CHu69o0FCzxLi/Ty
|
||||
/2Hz9zIyBlPsyUA6EHjmccnjE2dVkmgRcaQbhEaYMtM7pyECoCfixGdpgV+7iM6L
|
||||
PnYVusFueMVX80HYoNl4/ZXf+1U5/aW3mnSgK8+4uX8m4/MqGi4tvYT/QdOUkEvS
|
||||
kXSsfok5yBcYdoqUJl6N/gfP9Z9R6WqrCL4p98t2BiLpcu6TZnsP0ruJlRlzTjLU
|
||||
ZgEJAhATXTi3So37vsc8TqTDXqkJjrwxk9k4cGfwd8PWFvuS+xzdKGA/vcU6jXCD
|
||||
CQrTnQ2i6jZBi0L5FLunhG86BOSLs5GEhuO6PPjkyyJNbcX/Uh6hjzgwdElr14Qo
|
||||
P7QnueJTiw==
|
||||
=AMPG
|
||||
-----END PGP MESSAGE-----
|
||||
fp: 1E0CF38FF7C9ADAED58B436ABA4A3D3607E5BA8E
|
||||
- created_at: "2025-04-22T11:56:49Z"
|
||||
enc: |-
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
hQIMA51kG++kLewoAQ//b3JTskIOENHA1W8uE5jqsyxPDVMJuXQNoHe2u0264kS8
|
||||
i2sC7SZa/Le98J9Gsl97CpA7xXVIcOWhma+6PTzrsaonn//nJyuh8YOfWAb/ZF4o
|
||||
ijtd7etTLcA9Hb1iRUek5oD7tXWiGhl+ROR3xd7Al+nzQmTpvHju+HFWJboWA7RC
|
||||
6PkusF1UAe39ZhZwxX2Hh8XdFfQdcrtFNIp7+TjMCO2Im54aBTRKLrz7aHlrjrgN
|
||||
tie1RAdDwEqZ0Zoh3jezpkQW+9aKtkTtiG5BLmQYhVPUN5GTKMMwKoiYNMEdNUWx
|
||||
s9SXiepDc9ZbdjiwGUig9pmuaKrPTSRh6kbmAWHyMKfwG4WZSgbh9gW0sU69rLdQ
|
||||
onaGRkIS87If6AgE0dCxOgcNZEiUQE1Rj8Ie/XtR6ufKNUdSAsbJSoKIja4MQdKl
|
||||
1BM2YJ5eD52e2J0XJJgLchW0nf7C+3Sil/wIRvU0k/lMniMHvXjWGfY5/v2TUF3Y
|
||||
R3Ng6KsaaIRGW5pWzAA5vBDjOlDaPdWYvWd+ZZ96cd0ToxgMpEDLGOBAOhBZGP95
|
||||
knqqsVTKswD3vy5h5bwevTxRdrPsmD+g26SbLZDYllRklNasGgfcf0CBydcftUHo
|
||||
ePHC1ThKpC0Eb80fxLvAyyW+O8LjqjGWK+q7pVGE8eZ7B5XGQRSfzQRuNmc1aIjS
|
||||
XAGtAlz0mJffgqHnOW++8CZjiUKWb5iSJuMqBcGPMuqz9nLBAP/n4/vw6nH4irAF
|
||||
qL1fkj4yurE7yMmBjYEWi+I+D66g6xpKvEWTyDGeiiqUD8nZXGojT7bWz072
|
||||
=zIA5
|
||||
-----END PGP MESSAGE-----
|
||||
fp: 49F10679C425233EFB4B1B6F9D641BEFA42DEC28
|
||||
encrypted_regex: ^(data|stringData)$
|
||||
version: 3.10.1
|
||||
@@ -3,6 +3,8 @@ kind: Kustomization
|
||||
metadata:
|
||||
name: apps
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
dependsOn:
|
||||
- name: traefik
|
||||
|
||||
@@ -4,7 +4,7 @@ metadata:
|
||||
name: siranga
|
||||
namespace: flux-system
|
||||
spec:
|
||||
interval: 1m0s
|
||||
interval: 15m0s
|
||||
url: oci://git.huizinga.dev/dreaded_x/siranga/manifests
|
||||
ref:
|
||||
tag: latest
|
||||
@@ -36,6 +36,20 @@ spec:
|
||||
secretRef:
|
||||
name: sops-gpg
|
||||
---
|
||||
apiVersion: notification.toolkit.fluxcd.io/v1
|
||||
kind: Receiver
|
||||
metadata:
|
||||
name: siranga
|
||||
namespace: flux-system
|
||||
spec:
|
||||
type: generic
|
||||
secretRef:
|
||||
name: receiver
|
||||
resources:
|
||||
- apiVersion: source.toolkit.fluxcd.io/v1beta2
|
||||
kind: OCIRepository
|
||||
name: siranga
|
||||
---
|
||||
apiVersion: notification.toolkit.fluxcd.io/v1beta3
|
||||
kind: Provider
|
||||
metadata:
|
||||
|
||||
23
clusters/titan.lan.huizinga.dev/flux-system/ingress.yaml
Normal file
23
clusters/titan.lan.huizinga.dev/flux-system/ingress.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: flux-webhook
|
||||
namespace: flux-system
|
||||
annotations:
|
||||
traefik.ingress.kubernetes.io/router.entryPoints: websecure
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: flux.${domain}
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: webhook-receiver
|
||||
port:
|
||||
number: 80
|
||||
path: /
|
||||
pathType: Prefix
|
||||
tls:
|
||||
- secretName: ${domain//./-}-tls
|
||||
@@ -1,7 +1,11 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- gotk-components.yaml
|
||||
- gotk-sync.yaml
|
||||
- ./gotk-components.yaml
|
||||
- ./gotk-sync.yaml
|
||||
- ./config-map-domain-vars.yaml
|
||||
- ./ingress.yaml
|
||||
- ./secret-receiver.yaml
|
||||
- ./receiver.yaml
|
||||
patches:
|
||||
- path: sops-overlay.yaml
|
||||
- path: patches.yaml
|
||||
|
||||
@@ -3,8 +3,14 @@ kind: Kustomization
|
||||
metadata:
|
||||
name: flux-system
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
decryption:
|
||||
provider: sops
|
||||
secretRef:
|
||||
name: sops-gpg
|
||||
postBuild:
|
||||
substituteFrom:
|
||||
- kind: ConfigMap
|
||||
name: domain-vars
|
||||
16
clusters/titan.lan.huizinga.dev/flux-system/receiver.yaml
Normal file
16
clusters/titan.lan.huizinga.dev/flux-system/receiver.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
apiVersion: notification.toolkit.fluxcd.io/v1
|
||||
kind: Receiver
|
||||
metadata:
|
||||
name: flux-infra
|
||||
namespace: flux-system
|
||||
spec:
|
||||
type: github
|
||||
events:
|
||||
- "ping"
|
||||
- "push"
|
||||
secretRef:
|
||||
name: receiver
|
||||
resources:
|
||||
- apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: GitRepository
|
||||
name: flux-system
|
||||
@@ -0,0 +1,54 @@
|
||||
apiVersion: v1
|
||||
data:
|
||||
token: ENC[AES256_GCM,data:Nd4t7LkkCe9pd/ilITlwZpmpF+oRmMfIbgbEiAzTK+OWUb4q37bBzGvhc3V70soS7XmpU13lJwo=,iv:qMoW9dsDauSEsw7GjuCSmsCy3k54jt5x/nngSdGiErg=,tag:ZTkP8IGT+DOJLfO+gIX2xg==,type:str]
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: receiver
|
||||
namespace: flux-system
|
||||
sops:
|
||||
lastmodified: "2025-04-23T17:01:23Z"
|
||||
mac: ENC[AES256_GCM,data:blRYui9FBvet9nuOUEPaMLLzD6CvX7pDZQEtQV5jLfKqLWEBFXUA13zqTrxtH1slGOzif1xshGqjOgsxREvEdb4Y8uSfoWSPuhkPI4WuRESjyYsVHUlP0fOIdE/CNc/xT4wTxxsvZ46ShGCMZ/QN29XsQ04nwHaEsTmYMqtgsBM=,iv:Km0FIruKN+N0Hsat4QaTBCCAHMQz5IiYkTKG2IGILUI=,tag:A1v4kEs46vz2Cm9ZN5Qw1g==,type:str]
|
||||
pgp:
|
||||
- created_at: "2025-04-23T17:01:23Z"
|
||||
enc: |-
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
hQIMA7pKPTYH5bqOARAAwZ69AwI2iTOboLpzZmW41EngGkhPKGghGFssiyfWbXqR
|
||||
dtNG+wG371TF9nUMoLagJEqTUGRVX8xznG7R68QhVd85C1iswrNJjZ55nnJKf0IN
|
||||
aRcLp3xsZuWPefOFadaJglRtgLnmCtPNur1TmPXR4V94ycOe1wBTSbvheTs73h6M
|
||||
LBfRBruv2ttJsrcmI2az57KgOrIQnPu/z/NSEbc2GM3CU7/Z9ChWt+b5WEyv/7Sp
|
||||
Sp0ohmC9HputBFGueC6Hw08+152C8yn3BpJhMhiWcCEryNiwKawf/n2UFJ8gk86/
|
||||
5CkRX1CWRtz8nRIfmiwU5IBd5aMXhK684/1lTtdshHGEhSbaGA9N6lK70vdrfVl+
|
||||
euaQkqyCy2sFkhz0EvcK+PTGxnueQ4UuO01l5yRG/ZUdjzYVh9fpx3RoMnJaBctx
|
||||
l63LUG+xXSwR0xy4JIkrWyFDwIyGAebxbtQ8QUeLkmMzHyUx8tOL0qfKd8qkEFwg
|
||||
eJWh0guYllSldgP5h7bJXOTej3ZrP9yC1WY3z2wHu+415/eCpwucFCu/A5QnJXnA
|
||||
YLTE2CIwdDpj5XjjwQwmTNpBgfQ/csHJua40CURJbsYhk4HfqbHNdjEc5kkem/3L
|
||||
PrtA/d59iwy3Vjkn1xmrcX+od3qXRFVDwMjaCleAXi3dnsfN619j8PrZh2bkUyHU
|
||||
aAEJAhD1hSP/yZbfctLVNBCXT3HE8bLlAp82zYsqwx7UJWOhv4saodU1Zm13CWdk
|
||||
nlbN8v3w5o19Xo85rt4YB091dGliTAAQ2CfvsCLRO4ZjO6N2F4KSCSTO0jLSJkce
|
||||
hly9/ZsJAtXB
|
||||
=GCZA
|
||||
-----END PGP MESSAGE-----
|
||||
fp: 1E0CF38FF7C9ADAED58B436ABA4A3D3607E5BA8E
|
||||
- created_at: "2025-04-23T17:01:23Z"
|
||||
enc: |-
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
hQIMA51kG++kLewoARAA5IO7TXG5xkv+mlSwFBDbldn5jPy9E1+HbZHp+4CmRquI
|
||||
ONPEeDZgh3n+Fr87OMUKMKfgdEpjdE+l80rCmF7zgaVNqLscRcLJ17k14XfbpsrG
|
||||
wsp5gsvymGh6sllUopetugvzd6gdxEianuhKU6DYJMM+X/nPTDsa5wHazRzPQxS/
|
||||
8zp9tlPWt0HkZelBKXmLoYofZBakZOqZstQvhB0SSjC0BVpQN5WIfh1ES6uoBxhY
|
||||
ddA0R34r1jwXWDE2UqD1Rx12H3TzUxdPGGw5rQKsEZSuEwxfxqjUAsn29ARR88qU
|
||||
FlvSsy+FW7/6HeTcxwS1IMyZfNwRKQYLkzcwqf+OsrrjqTSBPCt8rcMoDVH3vxdf
|
||||
wazu/vqoM1mwkUlogEF/M/SITEO9nJzrkAihAr6OJgfTJqi8RJffxoXQ8gAfan2J
|
||||
wYMkcTxPNnskyZMUr2onotdnqdVSMgR2vwnsvIfSWUSx4eMpK8wO2xQm60hAXNHx
|
||||
QCVcTz7sMDu6nD3xsvJs5D67YnkrLuqnuNeHQqSsREPv132kKIpEhAZop0MYk8ld
|
||||
798jafK8xCzasbIZqDRzSqUUK/Z/J4EN8A4zRY5EtcbXdKHpKkUYuX/Sb7y2FAQR
|
||||
JMV3uqLxJoz4mqUM0VJBt77Del5YQ5LeqE8aHMBDNtfjAdmK/2xg7BuGuromZYzS
|
||||
XgFxwGfX791vSkUJ/z+7Nf3QmAKBXOuEYaYJbcZ5pFbKKdcfI8iEfL7utVQ59U2k
|
||||
4BLB7aChrp8J795YQna+YgPybK5NR00FX6qLJiZAp56MdcvncJ8s42/epRWRusk=
|
||||
=8ak0
|
||||
-----END PGP MESSAGE-----
|
||||
fp: 49F10679C425233EFB4B1B6F9D641BEFA42DEC28
|
||||
encrypted_regex: ^(data|stringData)$
|
||||
version: 3.10.1
|
||||
21
clusters/titan.lan.huizinga.dev/infra/kustomization.yaml
Normal file
21
clusters/titan.lan.huizinga.dev/infra/kustomization.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
resources:
|
||||
- ./../../../infra/akri
|
||||
- ./../../../infra/authelia
|
||||
- ./../../../infra/cert-manager
|
||||
- ./../../../infra/cnpg
|
||||
- ./../../../infra/descheduler.yaml
|
||||
- ./../../../infra/dragonflydb.yaml
|
||||
- ./../../../infra/external-snapshotter.yaml
|
||||
- ./../../../infra/intel-device-plugins.yaml
|
||||
- ./../../../infra/kube-vip
|
||||
- ./../../../infra/kyverno
|
||||
- ./../../../infra/lldap
|
||||
- ./../../../infra/loki
|
||||
- ./../../../infra/node-feature-discovery
|
||||
- ./../../../infra/rook-ceph
|
||||
- ./../../../infra/topolvm
|
||||
- ./../../../infra/traefik
|
||||
- ./../../../infra/velero
|
||||
@@ -3,9 +3,11 @@ kind: Kustomization
|
||||
metadata:
|
||||
name: akri
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
interval: 15m
|
||||
path: ./infra/akri
|
||||
path: ./infra/akri/akri
|
||||
prune: true
|
||||
timeout: 2m
|
||||
sourceRef:
|
||||
15
infra/akri/akri/kustomization.yaml
Normal file
15
infra/akri/akri/kustomization.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: akri
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./helm-repository.yaml
|
||||
- ./helm-release.yaml
|
||||
|
||||
configurations:
|
||||
- ../../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: akri-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
@@ -1,15 +1,4 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: akri
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./helm-repository.yaml
|
||||
- ./helm-release.yaml
|
||||
|
||||
configurations:
|
||||
- ../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: akri-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
- ./akri.yaml
|
||||
|
||||
@@ -4,7 +4,7 @@ metadata:
|
||||
name: authelia-controller
|
||||
namespace: flux-system
|
||||
spec:
|
||||
interval: 1m0s
|
||||
interval: 15m0s
|
||||
url: oci://git.huizinga.dev/dreaded_x/authelia-controller/manifests
|
||||
ref:
|
||||
tag: edge
|
||||
@@ -23,6 +23,20 @@ spec:
|
||||
name: authelia-controller
|
||||
wait: true
|
||||
---
|
||||
apiVersion: notification.toolkit.fluxcd.io/v1
|
||||
kind: Receiver
|
||||
metadata:
|
||||
name: authelia-controller
|
||||
namespace: flux-system
|
||||
spec:
|
||||
type: generic
|
||||
secretRef:
|
||||
name: receiver
|
||||
resources:
|
||||
- apiVersion: source.toolkit.fluxcd.io/v1beta2
|
||||
kind: OCIRepository
|
||||
name: authelia-controller
|
||||
---
|
||||
apiVersion: notification.toolkit.fluxcd.io/v1beta3
|
||||
kind: Provider
|
||||
metadata:
|
||||
@@ -3,9 +3,11 @@ kind: Kustomization
|
||||
metadata:
|
||||
name: authelia
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
interval: 15m
|
||||
path: ./infra/authelia
|
||||
path: ./infra/authelia/authelia
|
||||
dependsOn:
|
||||
- name: traefik
|
||||
- name: cnpg
|
||||
18
infra/authelia/authelia/kustomization.yaml
Normal file
18
infra/authelia/authelia/kustomization.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: authelia
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./helm-repository.yaml
|
||||
- ./helm-release.yaml
|
||||
- ./service-user.yaml
|
||||
- ../../../common/postgres
|
||||
- ../../../common/dragonflydb
|
||||
|
||||
configurations:
|
||||
- ../../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: authelia-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
@@ -1,18 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: authelia
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./helm-repository.yaml
|
||||
- ./helm-release.yaml
|
||||
- ./service-user.yaml
|
||||
- ../../common/postgres
|
||||
- ../../common/dragonflydb
|
||||
|
||||
configurations:
|
||||
- ../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: authelia-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
- ./authelia-controller.yaml
|
||||
- ./authelia.yaml
|
||||
|
||||
@@ -3,9 +3,11 @@ kind: Kustomization
|
||||
metadata:
|
||||
name: cert-manager
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
interval: 15m
|
||||
path: ./infra/cert-manager
|
||||
path: ./infra/cert-manager/cert-manager
|
||||
prune: true
|
||||
timeout: 2m
|
||||
sourceRef:
|
||||
15
infra/cert-manager/cert-manager/kustomization.yaml
Normal file
15
infra/cert-manager/cert-manager/kustomization.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: cert-manager
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./helm-repository.yaml
|
||||
- ./helm-release.yaml
|
||||
|
||||
configurations:
|
||||
- ../../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: cert-manager-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
@@ -1,15 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: cert-manager
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./helm-repository.yaml
|
||||
- ./helm-release.yaml
|
||||
|
||||
configurations:
|
||||
- ../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: cert-manager-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
- ./cert-manager.yaml
|
||||
- ./letsencrypt.yaml
|
||||
|
||||
@@ -3,9 +3,11 @@ kind: Kustomization
|
||||
metadata:
|
||||
name: letsencrypt
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
interval: 15m
|
||||
path: ./infra/letsencrypt
|
||||
path: ./infra/cert-manager/letsencrypt
|
||||
dependsOn:
|
||||
- name: cert-manager
|
||||
prune: true
|
||||
@@ -3,9 +3,11 @@ kind: Kustomization
|
||||
metadata:
|
||||
name: cnpg
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
interval: 15m
|
||||
path: ./infra/cnpg
|
||||
path: ./infra/cnpg/cnpg
|
||||
dependsOn:
|
||||
- name: topolvm
|
||||
prune: true
|
||||
14
infra/cnpg/cnpg/kustomization.yaml
Normal file
14
infra/cnpg/cnpg/kustomization.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: cnpg-system
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./helm-repository.yaml
|
||||
- ./helm-release.yaml
|
||||
configurations:
|
||||
- ../../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: cnpg-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
@@ -1,14 +1,4 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: cnpg-system
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./helm-repository.yaml
|
||||
- ./helm-release.yaml
|
||||
configurations:
|
||||
- ../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: cnpg-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
- ./cnpg.yaml
|
||||
|
||||
@@ -3,9 +3,11 @@ kind: Kustomization
|
||||
metadata:
|
||||
name: kube-vip
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
interval: 15m
|
||||
path: ./infra/kube-vip
|
||||
path: ./infra/kube-vip/kube-vip
|
||||
dependsOn:
|
||||
- name: kyverno-policies
|
||||
prune: true
|
||||
11
infra/kube-vip/kube-vip/kustomization.yaml
Normal file
11
infra/kube-vip/kube-vip/kustomization.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kube-system
|
||||
resources:
|
||||
- ./service-account.yaml
|
||||
- ./cluster-role.yaml
|
||||
- ./cluster-role-binding.yaml
|
||||
- ./daemon-set.yaml
|
||||
|
||||
- https://raw.githubusercontent.com/kube-vip/kube-vip-cloud-provider/refs/tags/v0.0.11/manifest/kube-vip-cloud-controller.yaml
|
||||
- ./config-map-kubevip.yaml
|
||||
@@ -1,11 +1,4 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kube-system
|
||||
resources:
|
||||
- ./service-account.yaml
|
||||
- ./cluster-role.yaml
|
||||
- ./cluster-role-binding.yaml
|
||||
- ./daemon-set.yaml
|
||||
|
||||
- https://raw.githubusercontent.com/kube-vip/kube-vip-cloud-provider/refs/tags/v0.0.11/manifest/kube-vip-cloud-controller.yaml
|
||||
- ./config-map-kubevip.yaml
|
||||
- ./kube-vip.yaml
|
||||
|
||||
@@ -1,15 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kyverno
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./helm-repository.yaml
|
||||
- ./helm-release.yaml
|
||||
|
||||
configurations:
|
||||
- ../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: kyverno-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
- ./kyverno-policies.yaml
|
||||
- ./kyverno.yaml
|
||||
|
||||
@@ -3,9 +3,11 @@ kind: Kustomization
|
||||
metadata:
|
||||
name: kyverno-policies
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
interval: 15m
|
||||
path: ./infra/kyverno-policies
|
||||
path: ./infra/kyverno/kyverno-policies
|
||||
dependsOn:
|
||||
- name: kyverno
|
||||
prune: true
|
||||
@@ -3,9 +3,11 @@ kind: Kustomization
|
||||
metadata:
|
||||
name: kyverno
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
interval: 15m
|
||||
path: ./infra/kyverno
|
||||
path: ./infra/kyverno/kyverno
|
||||
prune: true
|
||||
timeout: 2m
|
||||
sourceRef:
|
||||
15
infra/kyverno/kyverno/kustomization.yaml
Normal file
15
infra/kyverno/kyverno/kustomization.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kyverno
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./helm-repository.yaml
|
||||
- ./helm-release.yaml
|
||||
|
||||
configurations:
|
||||
- ../../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: kyverno-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
@@ -1,10 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: lldap
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./secret-lldap-credentials.yaml
|
||||
- ./deployment.yaml
|
||||
- ./service.yaml
|
||||
- ./ingress-route.yaml
|
||||
- ../../common/postgres
|
||||
- ./lldap-controller.yaml
|
||||
- ./lldap.yaml
|
||||
|
||||
@@ -4,7 +4,7 @@ metadata:
|
||||
name: lldap-controller
|
||||
namespace: flux-system
|
||||
spec:
|
||||
interval: 1m0s
|
||||
interval: 15m0s
|
||||
url: oci://git.huizinga.dev/dreaded_x/lldap-controller/manifests
|
||||
ref:
|
||||
tag: edge
|
||||
@@ -23,6 +23,20 @@ spec:
|
||||
name: lldap-controller
|
||||
wait: true
|
||||
---
|
||||
apiVersion: notification.toolkit.fluxcd.io/v1
|
||||
kind: Receiver
|
||||
metadata:
|
||||
name: lldap-controller
|
||||
namespace: flux-system
|
||||
spec:
|
||||
type: generic
|
||||
secretRef:
|
||||
name: receiver
|
||||
resources:
|
||||
- apiVersion: source.toolkit.fluxcd.io/v1beta2
|
||||
kind: OCIRepository
|
||||
name: lldap-controller
|
||||
---
|
||||
apiVersion: notification.toolkit.fluxcd.io/v1beta3
|
||||
kind: Provider
|
||||
metadata:
|
||||
@@ -3,9 +3,11 @@ kind: Kustomization
|
||||
metadata:
|
||||
name: lldap
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
interval: 15m
|
||||
path: ./infra/lldap
|
||||
path: ./infra/lldap/lldap
|
||||
dependsOn:
|
||||
- name: traefik
|
||||
- name: cnpg
|
||||
10
infra/lldap/lldap/kustomization.yaml
Normal file
10
infra/lldap/lldap/kustomization.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: lldap
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./secret-lldap-credentials.yaml
|
||||
- ./deployment.yaml
|
||||
- ./service.yaml
|
||||
- ./ingress-route.yaml
|
||||
- ../../../common/postgres
|
||||
5
infra/loki/kustomization.yaml
Normal file
5
infra/loki/kustomization.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- ./loki.yaml
|
||||
- ./promtail.yaml
|
||||
18
infra/loki/loki.yaml
Normal file
18
infra/loki/loki.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||
kind: Kustomization
|
||||
metadata:
|
||||
name: loki
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
interval: 15m
|
||||
path: ./infra/loki/loki
|
||||
dependsOn:
|
||||
- name: rook-ceph
|
||||
prune: true
|
||||
timeout: 2m
|
||||
sourceRef:
|
||||
kind: GitRepository
|
||||
name: flux-system
|
||||
wait: true
|
||||
18
infra/loki/loki/helm-release.yaml
Normal file
18
infra/loki/loki/helm-release.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: loki
|
||||
spec:
|
||||
chart:
|
||||
spec:
|
||||
chart: loki
|
||||
reconcileStrategy: ChartVersion
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: grafana
|
||||
version: 6.29.0
|
||||
interval: 15m
|
||||
timeout: 5m
|
||||
valuesFrom:
|
||||
- kind: ConfigMap
|
||||
name: loki-values
|
||||
7
infra/loki/loki/helm-repository.yaml
Normal file
7
infra/loki/loki/helm-repository.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
apiVersion: source.toolkit.fluxcd.io/v1
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: grafana
|
||||
spec:
|
||||
interval: 15m
|
||||
url: https://grafana.github.io/helm-charts
|
||||
22
infra/loki/loki/kustomization.yaml
Normal file
22
infra/loki/loki/kustomization.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: loki
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./object-bucket-claim.yaml
|
||||
- ./helm-repository.yaml
|
||||
- ./helm-release.yaml
|
||||
|
||||
configurations:
|
||||
- ../../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: loki-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
- name: grafana-datasource
|
||||
options:
|
||||
labels:
|
||||
grafana_datasource: "1"
|
||||
files:
|
||||
- ./loki-datasource.yaml
|
||||
8
infra/loki/loki/loki-datasource.yaml
Normal file
8
infra/loki/loki/loki-datasource.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
apiVersion: 1
|
||||
datasources:
|
||||
- name: Loki
|
||||
type: loki
|
||||
access: proxy
|
||||
url: http://loki-gateway.loki.svc.cluster.local
|
||||
uid: "loki"
|
||||
jsonData: {}
|
||||
4
infra/loki/loki/namespace.yaml
Normal file
4
infra/loki/loki/namespace.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: loki
|
||||
7
infra/loki/loki/object-bucket-claim.yaml
Normal file
7
infra/loki/loki/object-bucket-claim.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
apiVersion: objectbucket.io/v1alpha1
|
||||
kind: ObjectBucketClaim
|
||||
metadata:
|
||||
name: loki-bucket
|
||||
spec:
|
||||
generateBucketName: loki
|
||||
storageClassName: ceph-bucket
|
||||
75
infra/loki/loki/values.yaml
Normal file
75
infra/loki/loki/values.yaml
Normal file
@@ -0,0 +1,75 @@
|
||||
loki:
|
||||
auth_enabled: false
|
||||
|
||||
schemaConfig:
|
||||
configs:
|
||||
- from: "2024-04-01"
|
||||
store: tsdb
|
||||
object_store: s3
|
||||
schema: v13
|
||||
index:
|
||||
prefix: index_
|
||||
period: 24h
|
||||
|
||||
limits_config:
|
||||
split_queries_by_interval: "1h"
|
||||
retention_period: 672h # 28 days retention
|
||||
query_scheduler:
|
||||
max_outstanding_requests_per_tenant: 2048
|
||||
|
||||
storage:
|
||||
type: s3
|
||||
bucketNames:
|
||||
chunks: "${BUCKET_NAME}"
|
||||
ruler: "${BUCKET_NAME}"
|
||||
admin: "${BUCKET_NAME}"
|
||||
s3:
|
||||
# s3 URL can be used to specify the endpoint, access key, secret key, and bucket name this works well for S3 compatible storages or if you are hosting Loki on-premises and want to use S3 as the storage backend. Either use the s3 URL or the individual fields below (AWS endpoint, region, secret).
|
||||
# s3: s3://access_key:secret_access_key@custom_endpoint/bucket_name
|
||||
# AWS endpoint URL
|
||||
endpoint: "${BUCKET_HOST}"
|
||||
# AWS region where the S3 bucket is located
|
||||
region: "${BUCKET_REGION}"
|
||||
# AWS secret access key
|
||||
secretAccessKey: "${AWS_SECRET_ACCESS_KEY}"
|
||||
# AWS access key ID
|
||||
accessKeyId: "${AWS_ACCESS_KEY_ID}"
|
||||
# AWS signature version (e.g., v2 or v4)
|
||||
# signatureVersion: <your-signature-version>
|
||||
# Forces the path style for S3 (true/false)
|
||||
s3ForcePathStyle: true
|
||||
# Allows insecure (HTTP) connections (true/false)
|
||||
insecure: true
|
||||
# HTTP configuration settings
|
||||
# http_config: {}
|
||||
|
||||
backend:
|
||||
replicas: 2
|
||||
|
||||
extraArgs:
|
||||
- -config.expand-env=true
|
||||
extraEnvFrom:
|
||||
- secretRef:
|
||||
name: loki-bucket
|
||||
- configMapRef:
|
||||
name: loki-bucket
|
||||
read:
|
||||
replicas: 2
|
||||
|
||||
extraArgs:
|
||||
- -config.expand-env=true
|
||||
extraEnvFrom:
|
||||
- secretRef:
|
||||
name: loki-bucket
|
||||
- configMapRef:
|
||||
name: loki-bucket
|
||||
write:
|
||||
replicas: 2
|
||||
|
||||
extraArgs:
|
||||
- -config.expand-env=true
|
||||
extraEnvFrom:
|
||||
- secretRef:
|
||||
name: loki-bucket
|
||||
- configMapRef:
|
||||
name: loki-bucket
|
||||
18
infra/loki/promtail.yaml
Normal file
18
infra/loki/promtail.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||
kind: Kustomization
|
||||
metadata:
|
||||
name: promtail
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
interval: 15m
|
||||
path: ./infra/loki/promtail
|
||||
dependsOn:
|
||||
- name: loki
|
||||
prune: true
|
||||
timeout: 2m
|
||||
sourceRef:
|
||||
kind: GitRepository
|
||||
name: flux-system
|
||||
wait: true
|
||||
18
infra/loki/promtail/helm-release.yaml
Normal file
18
infra/loki/promtail/helm-release.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: promtail
|
||||
spec:
|
||||
chart:
|
||||
spec:
|
||||
chart: promtail
|
||||
reconcileStrategy: ChartVersion
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: grafana
|
||||
version: 6.16.6
|
||||
interval: 15m
|
||||
timeout: 5m
|
||||
valuesFrom:
|
||||
- kind: ConfigMap
|
||||
name: promtail-values
|
||||
13
infra/loki/promtail/kustomization.yaml
Normal file
13
infra/loki/promtail/kustomization.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: loki
|
||||
resources:
|
||||
- ./helm-release.yaml
|
||||
|
||||
configurations:
|
||||
- ../../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: promtail-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
14
infra/loki/promtail/values.yaml
Normal file
14
infra/loki/promtail/values.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
initContainer:
|
||||
# -- Specifies whether the init container for setting inotify max user instances is to be enabled
|
||||
- name: init
|
||||
# -- Docker registry, image and tag for the init container image
|
||||
image: docker.io/busybox:1.33
|
||||
# -- Docker image pull policy for the init container image
|
||||
imagePullPolicy: IfNotPresent
|
||||
# -- The inotify max user instances to configure
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- sysctl -w fs.inotify.max_user_instances=512
|
||||
securityContext:
|
||||
privileged: true
|
||||
@@ -1,15 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: node-feature-discovery
|
||||
resources:
|
||||
- ./namespace.yaml
|
||||
- ./helm-repository.yaml
|
||||
- ./helm-release.yaml
|
||||
|
||||
configurations:
|
||||
- ../../common/name-reference/helm-release.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: nfd-values
|
||||
files:
|
||||
- ./values.yaml
|
||||
- ./node-feature-discovery-rules.yaml
|
||||
- ./node-feature-discovery.yaml
|
||||
|
||||
@@ -3,9 +3,11 @@ kind: Kustomization
|
||||
metadata:
|
||||
name: node-feature-discovery-rules
|
||||
namespace: flux-system
|
||||
labels:
|
||||
alert: flux-infra
|
||||
spec:
|
||||
interval: 15m
|
||||
path: ./infra/node-feature-discovery-rules
|
||||
path: ./infra/node-feature-discovery/node-feature-discovery-rules
|
||||
prune: true
|
||||
timeout: 2m
|
||||
sourceRef:
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user