Compare commits

...

4 Commits

Author SHA1 Message Date
Gitea Actions Bot 3d99719a06 Auto-update README with current k8s applications
Keycloak Terraform / Terraform (pull_request) Successful in 18s
Generated by CI/CD workflow on 2026-06-16 01:24:46

This PR updates the README.md file with the current list of applications found in the k8s/ directory structure.
2026-06-16 01:24:46 +00:00
Ultradesu c850ad291a Added node-external-ip-labeler.yaml
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 7s
Check with kubeconform / lint (push) Successful in 7s
Auto-update README / Generate README and Create MR (push) Successful in 5s
2026-06-16 02:24:22 +01:00
ab 4228217497 Update k8s/apps/pasarguard/deployment.yaml
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 6s
Check with kubeconform / lint (push) Successful in 7s
Auto-update README / Generate README and Create MR (push) Successful in 6s
2026-06-15 21:59:12 +00:00
ab df2e2ec68d Update k8s/apps/pasarguard/daemonset.yaml
Update Kubernetes Services Wiki / Generate and Update K8s Wiki (push) Successful in 7s
Check with kubeconform / lint (push) Successful in 8s
Auto-update README / Generate README and Create MR (push) Successful in 8s
2026-06-15 18:16:08 +00:00
5 changed files with 177 additions and 3 deletions
+1
View File
@@ -53,6 +53,7 @@ ArgoCD homelab project
| **k8s-secrets** | [![k8s-secrets](https://ag.hexor.cy/api/badge?name=k8s-secrets&revision=true)](https://ag.hexor.cy/applications/argocd/k8s-secrets) |
| **khm** | [![khm](https://ag.hexor.cy/api/badge?name=khm&revision=true)](https://ag.hexor.cy/applications/argocd/khm) |
| **lidarr** | [![lidarr](https://ag.hexor.cy/api/badge?name=lidarr&revision=true)](https://ag.hexor.cy/applications/argocd/lidarr) |
| **llamacpp** | [![llamacpp](https://ag.hexor.cy/api/badge?name=llamacpp&revision=true)](https://ag.hexor.cy/applications/argocd/llamacpp) |
| **matrix** | [![matrix](https://ag.hexor.cy/api/badge?name=matrix&revision=true)](https://ag.hexor.cy/applications/argocd/matrix) |
| **mtproxy** | [![mtproxy](https://ag.hexor.cy/api/badge?name=mtproxy&revision=true)](https://ag.hexor.cy/applications/argocd/mtproxy) |
| **n8n** | [![n8n](https://ag.hexor.cy/api/badge?name=n8n&revision=true)](https://ag.hexor.cy/applications/argocd/n8n) |
+1 -1
View File
@@ -46,7 +46,7 @@ spec:
mountPath: /scripts
containers:
- name: pasarguard-node
image: pasarguard/node:v0.5.0
image: pasarguard/node:v0.5.2
imagePullPolicy: Always
command:
- /bin/sh
+1 -1
View File
@@ -34,7 +34,7 @@ spec:
mountPath: /templates/subscription
containers:
- name: pasarguard-web
image: pasarguard/panel:v4.0.2
image: pasarguard/panel:v5.0.1
imagePullPolicy: Always
envFrom:
- secretRef:
@@ -6,6 +6,7 @@ resources:
- nfs-storage.yaml
- coredns-internal-resolve.yaml
- https-middleware.yaml
- node-external-ip-labeler.yaml
helmCharts:
- name: csi-driver-nfs
@@ -15,4 +16,3 @@ helmCharts:
namespace: kube-system
#valuesFile: values.yaml
includeCRDs: true
@@ -0,0 +1,173 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: node-external-ip-labeler
namespace: kube-system
labels:
app: node-external-ip-labeler
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: node-external-ip-labeler
labels:
app: node-external-ip-labeler
rules:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list", "patch", "update"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: node-external-ip-labeler
labels:
app: node-external-ip-labeler
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: node-external-ip-labeler
subjects:
- kind: ServiceAccount
name: node-external-ip-labeler
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: node-external-ip-labeler
namespace: kube-system
labels:
app: node-external-ip-labeler
rules:
- apiGroups: ["batch"]
resources: ["jobs"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: node-external-ip-labeler
namespace: kube-system
labels:
app: node-external-ip-labeler
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: node-external-ip-labeler
subjects:
- kind: ServiceAccount
name: node-external-ip-labeler
namespace: kube-system
---
apiVersion: batch/v1
kind: CronJob
metadata:
name: node-external-ip-labeler
namespace: kube-system
labels:
app: node-external-ip-labeler
spec:
schedule: "17 3 * * *"
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 3
jobTemplate:
spec:
backoffLimit: 1
template:
metadata:
labels:
app: node-external-ip-labeler
spec:
serviceAccountName: node-external-ip-labeler
restartPolicy: Never
tolerations:
- operator: Exists
containers:
- name: fanout
image: bitnami/kubectl:latest
imagePullPolicy: IfNotPresent
command:
- /bin/bash
- -lc
args:
- |
set -euo pipefail
clean_name() {
echo "$1" \
| tr '[:upper:]' '[:lower:]' \
| tr -c 'a-z0-9-' '-' \
| sed 's/^-*//;s/-*$//' \
| cut -c1-45
}
for NODE_NAME in $(kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'); do
NODE_CLEAN="$(clean_name "${NODE_NAME}")"
JOB_NAME="node-external-ip-${NODE_CLEAN}"
kubectl delete job "${JOB_NAME}" -n kube-system --ignore-not-found=true --wait=true --timeout=60s
cat <<EOF | kubectl apply -f -
apiVersion: batch/v1
kind: Job
metadata:
name: ${JOB_NAME}
namespace: kube-system
labels:
app: node-external-ip-labeler
target-node: "${NODE_CLEAN}"
spec:
ttlSecondsAfterFinished: 86400
backoffLimit: 2
template:
metadata:
labels:
app: node-external-ip-labeler
target-node: "${NODE_CLEAN}"
spec:
serviceAccountName: node-external-ip-labeler
nodeName: "${NODE_NAME}"
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
restartPolicy: Never
tolerations:
- operator: Exists
containers:
- name: label-node
image: bitnami/kubectl:latest
imagePullPolicy: IfNotPresent
env:
- name: NODE_NAME
value: "${NODE_NAME}"
command:
- /bin/bash
- -lc
args:
- |
set -euo pipefail
json_ip() {
sed -n 's/.*"ip"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p'
}
IPV4="\$(curl -fsS --connect-timeout 10 --max-time 30 'https://api.ipify.org?format=json' | json_ip)"
IP64="\$(curl -fsS --connect-timeout 10 --max-time 30 'https://api64.ipify.org?format=json' | json_ip || true)"
if [ -z "\${IPV4}" ]; then
echo "Unable to detect external IPv4 for node ${NODE_NAME}"
exit 1
fi
kubectl label node "${NODE_NAME}" external-ipv4="\${IPV4}" --overwrite
kubectl annotate node "${NODE_NAME}" homelab.hexor.cy/external-ipv4="\${IPV4}" --overwrite
if echo "\${IP64}" | grep -q ':'; then
kubectl annotate node "${NODE_NAME}" homelab.hexor.cy/external-ipv6="\${IP64}" --overwrite
elif [ -n "\${IP64}" ]; then
kubectl annotate node "${NODE_NAME}" homelab.hexor.cy/external-ipv4-api64="\${IP64}" --overwrite
fi
EOF
done