Compare commits
7 Commits
auto-updat
...
auto-updat
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6d2ceb50ef | ||
|
|
fb651bc6fe | ||
|
|
04330aa474 | ||
|
|
57d517af77 | ||
|
|
1f7d9e41c8 | ||
|
|
39a27c596f | ||
|
|
353bb877be |
@@ -40,6 +40,7 @@ ArgoCD homelab project
|
||||
| **greece-notifier** | [](https://ag.hexor.cy/applications/argocd/greece-notifier) |
|
||||
| **hexound** | [](https://ag.hexor.cy/applications/argocd/hexound) |
|
||||
| **immich** | [](https://ag.hexor.cy/applications/argocd/immich) |
|
||||
| **iperf3** | [](https://ag.hexor.cy/applications/argocd/iperf3) |
|
||||
| **jellyfin** | [](https://ag.hexor.cy/applications/argocd/jellyfin) |
|
||||
| **k8s-secrets** | [](https://ag.hexor.cy/applications/argocd/k8s-secrets) |
|
||||
| **khm** | [](https://ag.hexor.cy/applications/argocd/khm) |
|
||||
|
||||
@@ -11,23 +11,61 @@ spec:
|
||||
labels:
|
||||
app: iperf3-server
|
||||
spec:
|
||||
serviceAccountName: iperf3-server
|
||||
subdomain: iperf3
|
||||
initContainers:
|
||||
- name: set-hostname
|
||||
image: busybox:1.35
|
||||
command: ['sh', '-c']
|
||||
args:
|
||||
- |
|
||||
NODE_NAME=$(echo $NODE_NAME | cut -d'.' -f1 | tr '[:upper:]' '[:lower:]')
|
||||
echo "iperf3-${NODE_NAME}" > /etc/hostname
|
||||
hostname "iperf3-${NODE_NAME}"
|
||||
securityContext:
|
||||
privileged: true
|
||||
- name: create-service
|
||||
image: bitnami/kubectl:latest
|
||||
env:
|
||||
- name: NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
- name: POD_IP
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: status.podIP
|
||||
command:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
# Clean node name for service name
|
||||
NODE_CLEAN=$(echo "$NODE_NAME" | cut -d'.' -f1 | tr '[:upper:]' '[:lower:]' | tr '_' '-')
|
||||
SERVICE_NAME="iperf3-${NODE_CLEAN}"
|
||||
|
||||
# Create service for this pod
|
||||
kubectl apply -f - <<EOF
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ${SERVICE_NAME}
|
||||
namespace: iperf3
|
||||
labels:
|
||||
app: iperf3-node-service
|
||||
target-node: "${NODE_NAME}"
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- name: iperf3
|
||||
port: 5201
|
||||
protocol: TCP
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Endpoints
|
||||
metadata:
|
||||
name: ${SERVICE_NAME}
|
||||
namespace: iperf3
|
||||
labels:
|
||||
app: iperf3-node-service
|
||||
target-node: "${NODE_NAME}"
|
||||
subsets:
|
||||
- addresses:
|
||||
- ip: ${POD_IP}
|
||||
ports:
|
||||
- name: iperf3
|
||||
port: 5201
|
||||
protocol: TCP
|
||||
EOF
|
||||
containers:
|
||||
- name: iperf3-server
|
||||
image: networkstatic/iperf3:latest
|
||||
@@ -40,8 +78,6 @@ spec:
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
- name: HOSTNAME
|
||||
value: $(NODE_NAME)
|
||||
resources:
|
||||
requests:
|
||||
memory: "64Mi"
|
||||
|
||||
@@ -14,6 +14,58 @@ spec:
|
||||
labels:
|
||||
app: iperf3-exporter
|
||||
spec:
|
||||
serviceAccountName: iperf3-server
|
||||
initContainers:
|
||||
- name: create-exporter-service
|
||||
image: bitnami/kubectl:latest
|
||||
env:
|
||||
- name: NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
- name: POD_IP
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: status.podIP
|
||||
command:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
NODE_CLEAN=$(echo "$NODE_NAME" | cut -d'.' -f1 | tr '[:upper:]' '[:lower:]' | tr '_' '-')
|
||||
SERVICE_NAME="iperf3-exporter-${NODE_CLEAN}"
|
||||
|
||||
kubectl apply -f - <<EOF
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ${SERVICE_NAME}
|
||||
namespace: iperf3
|
||||
labels:
|
||||
app: iperf3-exporter-service
|
||||
target-node: "${NODE_NAME}"
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- name: metrics
|
||||
port: 9579
|
||||
protocol: TCP
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Endpoints
|
||||
metadata:
|
||||
name: ${SERVICE_NAME}
|
||||
namespace: iperf3
|
||||
labels:
|
||||
app: iperf3-exporter-service
|
||||
target-node: "${NODE_NAME}"
|
||||
subsets:
|
||||
- addresses:
|
||||
- ip: ${POD_IP}
|
||||
ports:
|
||||
- name: metrics
|
||||
port: 9579
|
||||
protocol: TCP
|
||||
EOF
|
||||
containers:
|
||||
- name: iperf3-exporter
|
||||
image: ghcr.io/edgard/iperf3_exporter:1.2.2
|
||||
|
||||
@@ -2,6 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
|
||||
resources:
|
||||
- rbac.yaml
|
||||
- daemonset.yaml
|
||||
- service-headless.yaml
|
||||
- iperf3-exporter-daemonset.yaml
|
||||
|
||||
36
k8s/apps/iperf3/rbac.yaml
Normal file
36
k8s/apps/iperf3/rbac.yaml
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: iperf3-server
|
||||
namespace: iperf3
|
||||
labels:
|
||||
app: iperf3-server
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: iperf3-service-manager
|
||||
namespace: iperf3
|
||||
labels:
|
||||
app: iperf3-server
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["services", "endpoints"]
|
||||
verbs: ["get", "list", "create", "update", "patch", "delete"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: iperf3-service-manager
|
||||
namespace: iperf3
|
||||
labels:
|
||||
app: iperf3-server
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: iperf3-service-manager
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: iperf3-server
|
||||
namespace: iperf3
|
||||
@@ -16,19 +16,105 @@ spec:
|
||||
interval: 5m
|
||||
scrapeTimeout: 30s
|
||||
params:
|
||||
duration:
|
||||
- "10"
|
||||
streams:
|
||||
- "4"
|
||||
target: ['iperf3-ch.iperf3.svc.cluster.local:5201']
|
||||
period: ['10s']
|
||||
streams: ['4']
|
||||
relabelings:
|
||||
- sourceLabels: [__address__]
|
||||
targetLabel: __param_target
|
||||
regex: (.+):9579
|
||||
replacement: iperf3-${1}.iperf3.iperf.svc.cluster.local:5201
|
||||
- sourceLabels: [__param_target]
|
||||
targetLabel: instance
|
||||
- targetLabel: __address__
|
||||
replacement: iperf3-exporter.iperf.svc.cluster.local:9579
|
||||
replacement: ch.tail2fe2d.ts.net
|
||||
- port: metrics
|
||||
path: /probe
|
||||
interval: 5m
|
||||
scrapeTimeout: 30s
|
||||
params:
|
||||
target: ['iperf3-us.iperf3.svc.cluster.local:5201']
|
||||
period: ['10s']
|
||||
streams: ['4']
|
||||
relabelings:
|
||||
- sourceLabels: [__param_target]
|
||||
targetLabel: instance
|
||||
- targetLabel: __address__
|
||||
replacement: us.tail2fe2d.ts.net
|
||||
- port: metrics
|
||||
path: /probe
|
||||
interval: 5m
|
||||
scrapeTimeout: 30s
|
||||
params:
|
||||
target: ['iperf3-iris.iperf3.svc.cluster.local:5201']
|
||||
period: ['10s']
|
||||
streams: ['4']
|
||||
relabelings:
|
||||
- sourceLabels: [__param_target]
|
||||
targetLabel: instance
|
||||
- targetLabel: __address__
|
||||
replacement: iris.khv
|
||||
- port: metrics
|
||||
path: /probe
|
||||
interval: 5m
|
||||
scrapeTimeout: 30s
|
||||
params:
|
||||
target: ['iperf3-home.iperf3.svc.cluster.local:5201']
|
||||
period: ['10s']
|
||||
streams: ['4']
|
||||
relabelings:
|
||||
- sourceLabels: [__param_target]
|
||||
targetLabel: instance
|
||||
- targetLabel: __address__
|
||||
replacement: home.homenet
|
||||
- port: metrics
|
||||
path: /probe
|
||||
interval: 5m
|
||||
scrapeTimeout: 30s
|
||||
params:
|
||||
target: ['iperf3-master.iperf3.svc.cluster.local:5201']
|
||||
period: ['10s']
|
||||
streams: ['4']
|
||||
relabelings:
|
||||
- sourceLabels: [__param_target]
|
||||
targetLabel: instance
|
||||
- targetLabel: __address__
|
||||
replacement: de.hexor.cy
|
||||
- port: metrics
|
||||
path: /probe
|
||||
interval: 5m
|
||||
scrapeTimeout: 30s
|
||||
params:
|
||||
target: ['iperf3-it.iperf3.svc.cluster.local:5201']
|
||||
period: ['10s']
|
||||
streams: ['4']
|
||||
relabelings:
|
||||
- sourceLabels: [__param_target]
|
||||
targetLabel: instance
|
||||
- targetLabel: __address__
|
||||
replacement: it.hexor.cy
|
||||
- port: metrics
|
||||
path: /probe
|
||||
interval: 5m
|
||||
scrapeTimeout: 30s
|
||||
params:
|
||||
target: ['iperf3-nas.iperf3.svc.cluster.local:5201']
|
||||
period: ['10s']
|
||||
streams: ['4']
|
||||
relabelings:
|
||||
- sourceLabels: [__param_target]
|
||||
targetLabel: instance
|
||||
- targetLabel: __address__
|
||||
replacement: nas.homenet
|
||||
- port: metrics
|
||||
path: /probe
|
||||
interval: 5m
|
||||
scrapeTimeout: 30s
|
||||
params:
|
||||
target: ['iperf3-spb.iperf3.svc.cluster.local:5201']
|
||||
period: ['10s']
|
||||
streams: ['4']
|
||||
relabelings:
|
||||
- sourceLabels: [__param_target]
|
||||
targetLabel: instance
|
||||
- targetLabel: __address__
|
||||
replacement: spb.tail2fe2d.ts.net
|
||||
metricRelabelings:
|
||||
- sourceLabels: [__name__]
|
||||
regex: iperf3_(.+)
|
||||
|
||||
Reference in New Issue
Block a user