Compare commits

..

1 Commits

Author SHA1 Message Date
renovate-bot bd984ce240 chore(deps): update azure/setup-helm action to v5
Validate / validate-coredns (push) Successful in 21s
Validate / validate-node-lables (push) Successful in 21s
Validate / validate-traefik (push) Successful in 28s
renovate/stability-days Updates have met minimum release age requirement
Validate / validate-crowdsec (push) Successful in 12s
2026-03-27 17:50:01 +00:00
6 changed files with 139 additions and 53 deletions
+48 -11
View File
@@ -13,6 +13,7 @@ jobs:
node-labels: ${{ steps.filter.outputs.node-labels }} node-labels: ${{ steps.filter.outputs.node-labels }}
coredns: ${{ steps.filter.outputs.coredns }} coredns: ${{ steps.filter.outputs.coredns }}
traefik: ${{ steps.filter.outputs.traefik }} traefik: ${{ steps.filter.outputs.traefik }}
crowdsec: ${{ steps.filter.outputs.crowdsec }}
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with: with:
@@ -27,6 +28,8 @@ jobs:
- 'coredns/**' - 'coredns/**'
traefik: traefik:
- 'traefik/**' - 'traefik/**'
crowdsec:
- 'crowdsec/**'
deploy-node-labels: deploy-node-labels:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -34,8 +37,8 @@ jobs:
if: ${{ needs.check-changes.outputs.node-labels == 'true' || github.event_name == 'workflow_dispatch' }} if: ${{ needs.check-changes.outputs.node-labels == 'true' || github.event_name == 'workflow_dispatch' }}
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: azure/setup-kubectl@829323503d1be3d00ca8346e5391ca0b07a9ab0d # v5.1.0 - uses: azure/setup-kubectl@15650b3ad78fff148532a140b8a4c821796b2d7b # v5.0.0
- uses: azure/k8s-set-context@89b837d75b40a7bd2ddafde837473c212db8b313 # v5.0.0 - uses: azure/k8s-set-context@ae59a723ba9abe7a9655538854a025448dbab4aa # v4.0.2
with: with:
method: kubeconfig method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }} kubeconfig: ${{ secrets.KUBECONFIG }}
@@ -49,8 +52,8 @@ jobs:
if: ${{ needs.check-changes.outputs.coredns == 'true' || github.event_name == 'workflow_dispatch' }} if: ${{ needs.check-changes.outputs.coredns == 'true' || github.event_name == 'workflow_dispatch' }}
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: azure/setup-kubectl@829323503d1be3d00ca8346e5391ca0b07a9ab0d # v5.1.0 - uses: azure/setup-kubectl@15650b3ad78fff148532a140b8a4c821796b2d7b # v5.0.0
- uses: azure/k8s-set-context@89b837d75b40a7bd2ddafde837473c212db8b313 # v5.0.0 - uses: azure/k8s-set-context@ae59a723ba9abe7a9655538854a025448dbab4aa # v4.0.2
with: with:
method: kubeconfig method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }} kubeconfig: ${{ secrets.KUBECONFIG }}
@@ -67,13 +70,13 @@ jobs:
if: ${{ needs.check-changes.outputs.traefik == 'true' || github.event_name == 'workflow_dispatch' }} if: ${{ needs.check-changes.outputs.traefik == 'true' || github.event_name == 'workflow_dispatch' }}
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: azure/setup-kubectl@829323503d1be3d00ca8346e5391ca0b07a9ab0d # v5.1.0 - uses: azure/setup-kubectl@15650b3ad78fff148532a140b8a4c821796b2d7b # v5.0.0
- uses: azure/k8s-set-context@89b837d75b40a7bd2ddafde837473c212db8b313 # v5.0.0 - uses: azure/k8s-set-context@ae59a723ba9abe7a9655538854a025448dbab4aa # v4.0.2
with: with:
method: kubeconfig method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }} kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Set ionos api credentials - name: Set ionos api credentials
uses: azure/k8s-create-secret@5e49ad902ac755e0815974a44904c728da961747 # v6.0.0 uses: azure/k8s-create-secret@6e0ba8047235646753f2a3a3b359b4d0006ff218 # v5.0.1
with: with:
namespace: kube-system namespace: kube-system
secret-name: ionos-api-credentials secret-name: ionos-api-credentials
@@ -83,7 +86,7 @@ jobs:
"apiKey": "${{ secrets.IONOS_API_KEY }}" "apiKey": "${{ secrets.IONOS_API_KEY }}"
} }
- name: Set admin basic auth credentials - name: Set admin basic auth credentials
uses: azure/k8s-create-secret@5e49ad902ac755e0815974a44904c728da961747 # v6.0.0 uses: azure/k8s-create-secret@6e0ba8047235646753f2a3a3b359b4d0006ff218 # v5.0.1
with: with:
namespace: kube-system namespace: kube-system
secret-name: admin-basic-auth-credentials secret-name: admin-basic-auth-credentials
@@ -92,21 +95,55 @@ jobs:
{ {
"auth": "${{ secrets.ADMIN_BASIC_AUTH_CREDENTIALS }}" "auth": "${{ secrets.ADMIN_BASIC_AUTH_CREDENTIALS }}"
} }
- name: Set crowdsec bouncer api key
uses: azure/k8s-create-secret@6e0ba8047235646753f2a3a3b359b4d0006ff218 # v5.0.1
with:
namespace: kube-system
secret-name: crowdsec-bouncer-api-key
secret-type: generic
data: |
{
"api-key": "${{ secrets.CROWDSEC_BOUNCER_API_KEY }}"
}
- name: Deploy - name: Deploy
uses: azure/k8s-deploy@c7ebd0d5f39477a23f1b5dea0f52e6db04adf28e # v6.0.0 uses: azure/k8s-deploy@c8cfec839dc09896b3b8cc40cd13d04792680771 # v5.1.0
with: with:
action: deploy action: deploy
manifests: "traefik/" manifests: "traefik/"
strategy: basic strategy: basic
namespace: kube-system namespace: kube-system
deploy-crowdsec:
runs-on: ubuntu-latest
needs: check-changes
if: ${{ needs.check-changes.outputs.crowdsec == 'true' || github.event_name == 'workflow_dispatch' }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: https://gitea.t000-n.de/t.behrendt/k_deploy_workflows/.gitea/actions/extract-namespace-from-repo-name@c373c34c836716e663e2d6379e686997bfd7746c # 0.0.6
id: namespace
with:
repo: ${{ github.repository }}
- uses: azure/setup-kubectl@15650b3ad78fff148532a140b8a4c821796b2d7b # v5.0.0
- uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5
with:
version: "3.15.0"
- uses: azure/k8s-set-context@ae59a723ba9abe7a9655538854a025448dbab4aa # v4.0.2
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Deploy helm
uses: helmfile/helmfile-action@c58e4737b8a69764d8294a70fcbcb0a63573dae9 # v2.3.1
with:
helmfile-args: apply
helmfile-workdirectory: "crowdsec"
deploy-docker-registry-secret: deploy-docker-registry-secret:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: check-changes needs: check-changes
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: azure/setup-kubectl@829323503d1be3d00ca8346e5391ca0b07a9ab0d # v5.1.0 - uses: azure/setup-kubectl@15650b3ad78fff148532a140b8a4c821796b2d7b # v5.0.0
- uses: azure/k8s-set-context@89b837d75b40a7bd2ddafde837473c212db8b313 # v5.0.0 - uses: azure/k8s-set-context@ae59a723ba9abe7a9655538854a025448dbab4aa # v4.0.2
with: with:
method: kubeconfig method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }} kubeconfig: ${{ secrets.KUBECONFIG }}
+27 -7
View File
@@ -10,8 +10,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: azure/setup-kubectl@829323503d1be3d00ca8346e5391ca0b07a9ab0d # v5.1.0 - uses: azure/setup-kubectl@15650b3ad78fff148532a140b8a4c821796b2d7b # v5.0.0
- uses: azure/k8s-set-context@89b837d75b40a7bd2ddafde837473c212db8b313 # v5.0.0 - uses: azure/k8s-set-context@ae59a723ba9abe7a9655538854a025448dbab4aa # v4.0.2
with: with:
method: kubeconfig method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }} kubeconfig: ${{ secrets.KUBECONFIG }}
@@ -23,8 +23,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: azure/setup-kubectl@829323503d1be3d00ca8346e5391ca0b07a9ab0d # v5.1.0 - uses: azure/setup-kubectl@15650b3ad78fff148532a140b8a4c821796b2d7b # v5.0.0
- uses: azure/k8s-set-context@89b837d75b40a7bd2ddafde837473c212db8b313 # v5.0.0 - uses: azure/k8s-set-context@ae59a723ba9abe7a9655538854a025448dbab4aa # v4.0.2
with: with:
method: kubeconfig method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }} kubeconfig: ${{ secrets.KUBECONFIG }}
@@ -36,14 +36,34 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: azure/setup-kubectl@829323503d1be3d00ca8346e5391ca0b07a9ab0d # v5.1.0 - uses: azure/setup-kubectl@15650b3ad78fff148532a140b8a4c821796b2d7b # v5.0.0
- uses: azure/k8s-set-context@89b837d75b40a7bd2ddafde837473c212db8b313 # v5.0.0 - uses: azure/k8s-set-context@ae59a723ba9abe7a9655538854a025448dbab4aa # v4.0.2
with: with:
method: kubeconfig method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }} kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Validate - name: Validate
uses: azure/k8s-lint@e4234c50ea835112e72b145bdecd00a94bad42fd # v4.0.0 uses: azure/k8s-lint@6aefe5066f95e73d2b140d8835cc95583b886989 # v3.0.1
with: with:
namespace: kube-system namespace: kube-system
lintType: dryrun lintType: dryrun
manifests: "traefik/" manifests: "traefik/"
validate-crowdsec:
runs-on:
- ubuntu-latest
- linux_amd64
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: azure/setup-kubectl@15650b3ad78fff148532a140b8a4c821796b2d7b # v5.0.0
- uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5
with:
version: "3.15.0"
- uses: azure/k8s-set-context@ae59a723ba9abe7a9655538854a025448dbab4aa # v4.0.2
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Validate Helm
uses: helmfile/helmfile-action@c58e4737b8a69764d8294a70fcbcb0a63573dae9 # v2.3.1
with:
helmfile-args: diff
helmfile-workdirectory: "crowdsec"
+12
View File
@@ -0,0 +1,12 @@
repositories:
- name: crowdsec
url: https://crowdsecurity.github.io/helm-charts
releases:
- name: crowdsec
namespace: kube-system
createNamespace: false
chart: crowdsec/crowdsec
version: 0.20.0
values:
- values.yaml
+35
View File
@@ -0,0 +1,35 @@
container_runtime: containerd
agent:
enabled: true
acquisition:
- namespace: kube-system
podName: traefik-*
program: traefik
metrics:
enabled: false
lapi:
enabled: true
replicas: 1
metrics:
enabled: true
persistentVolume:
data:
enabled: true
size: 1Gi
config:
enabled: true
size: 100Mi
config:
config.yaml.local: |
api:
server:
auto_registration:
enabled: true
token: "${REGISTRATION_TOKEN}"
allowed_ranges:
- "10.0.0.0/8"
- "172.16.0.0/12"
- "192.168.0.0/16"
-34
View File
@@ -1,34 +0,0 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-traefik-hostpath-static
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: traefik-certificates
local:
path: /mnt/longhorn1/svc/kube-system/main/traefik/data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k3sh0
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-traefik
namespace: kube-system
spec:
accessModes:
- ReadWriteOnce
storageClassName: traefik-certificates
resources:
requests:
storage: 10Gi
+17 -1
View File
@@ -32,6 +32,11 @@ spec:
secretKeyRef: secretKeyRef:
key: apiKey key: apiKey
name: ionos-api-credentials name: ionos-api-credentials
- name: CROWDSEC_BOUNCER_API_KEY
valueFrom:
secretKeyRef:
name: crowdsec-bouncer-api-key
key: api-key
ports: ports:
web: web:
port: 8000 port: 8000
@@ -60,5 +65,16 @@ spec:
persistence: persistence:
enabled: true enabled: true
name: data name: data
existingClaim: pvc-traefik accessMode: ReadWriteMany
size: 1Gi
storageClass: longhorn
path: /data path: /data
#experimental:
# plugins:
# crowdsec-bouncer-traefik-plugin:
# moduleName: github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin
# version: v1.4.6
#additionalArguments:
# - "--providers.kubernetescrd"
# - "--entrypoints.web.http.middlewares=crowdsec-bouncer@kubernetescrd"
# - "--entrypoints.websecure.http.middlewares=kube-system-crowdsec-bouncer@kubernetescrd"