4 Commits

3 changed files with 13 additions and 25 deletions

View File

@@ -47,9 +47,9 @@ app.kubernetes.io/instance: {{ .Release.Name }}
Create the name of the service account to use Create the name of the service account to use
*/}} */}}
{{- define "iperf3-monitor.serviceAccountName" -}} {{- define "iperf3-monitor.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}} {{- if .Values.rbac.create -}}
{{- default (include "iperf3-monitor.fullname" .) .Values.serviceAccount.name -}} {{- default (include "iperf3-monitor.fullname" .) .Values.serviceAccount.name -}}
{{- else -}} {{- else -}}
{{- default "default" .Values.serviceAccount.name -}} {{- default "default" .Values.serviceAccount.name -}}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}

View File

@@ -20,7 +20,7 @@ spec:
serviceAccountName: {{ include "iperf3-monitor.serviceAccountName" . }} serviceAccountName: {{ include "iperf3-monitor.serviceAccountName" . }}
containers: containers:
- name: iperf3-exporter - name: iperf3-exporter
image: "{{ .Values.exporter.image.repository }}:{{ .Values.exporter.image.tag | default .Chart.AppVersion }}" image: "{{ .Values.exporter.image.repository }}:{{ .Values.exporter.image.tag | default (printf "v%s" .Chart.AppVersion) }}"
imagePullPolicy: {{ .Values.exporter.image.pullPolicy }} imagePullPolicy: {{ .Values.exporter.image.pullPolicy }}
ports: ports:
- containerPort: {{ .Values.service.targetPort }} - containerPort: {{ .Values.service.targetPort }}

View File

@@ -5,25 +5,13 @@ FROM python:3.9-slim as builder
ARG TARGETARCH ARG TARGETARCH
WORKDIR /app WORKDIR /app
# Install iperf3 and build dependencies # Minimal dependencies for builder stage if any Python packages had C extensions.
# Assuming requirements.txt does not need gcc or other build tools for now.
# If pip install fails later, add necessary build tools (e.g., gcc, python3-dev) here.
RUN apt-get update && \ RUN apt-get update && \
apt-get install -y --no-install-recommends gcc iperf3 libiperf-dev && \ # apt-get install -y --no-install-recommends gcc python3-dev # Example if needed
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
# Determine the correct libiperf source directory based on TARGETARCH
# and copy libiperf.so.0 to a canonical temporary location /tmp/lib/ within the builder stage.
RUN echo "Builder stage TARGETARCH: ${TARGETARCH}" && \
LIBIPERF_SRC_DIR_SEGMENT="" && \
if [ "${TARGETARCH}" = "amd64" ]; then \
LIBIPERF_SRC_DIR_SEGMENT="x86_64-linux-gnu"; \
elif [ "${TARGETARCH}" = "arm64" ]; then \
LIBIPERF_SRC_DIR_SEGMENT="aarch64-linux-gnu"; \
else \
echo "Unsupported TARGETARCH in builder: ${TARGETARCH}" && exit 1; \
fi && \
mkdir -p /tmp/lib && \
cp "/usr/lib/${LIBIPERF_SRC_DIR_SEGMENT}/libiperf.so.0" /tmp/lib/libiperf.so.0
# Install Python dependencies # Install Python dependencies
COPY requirements.txt . COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt RUN pip install --no-cache-dir -r requirements.txt
@@ -33,11 +21,11 @@ FROM python:3.9-slim
WORKDIR /app WORKDIR /app
# Copy iperf3 binary from the builder stage # Install iperf3 and its runtime dependency libsctp1 directly in the final stage.
COPY --from=builder /usr/bin/iperf3 /usr/bin/iperf3 # This simplifies the Dockerfile by removing the need to copy iperf3 components from the builder.
# Copy the prepared libiperf.so.0 from the builder's canonical temporary location RUN apt-get update && \
# into a standard library path in the final image. apt-get install -y --no-install-recommends iperf3 libsctp1 && \
COPY --from=builder /tmp/lib/libiperf.so.0 /usr/lib/libiperf.so.0 rm -rf /var/lib/apt/lists/*
# Copy installed Python packages from the builder stage # Copy installed Python packages from the builder stage
COPY --from=builder /usr/local/lib/python3.9/site-packages /usr/local/lib/python3.9/site-packages COPY --from=builder /usr/local/lib/python3.9/site-packages /usr/local/lib/python3.9/site-packages
@@ -49,4 +37,4 @@ COPY exporter.py .
EXPOSE 9876 EXPOSE 9876
# Set the entrypoint # Set the entrypoint
CMD ["python", "exporter.py"] CMD ["python", "exporter.py"]