From 335dbdce95a40401caf98e192fce6860bc5aabe9 Mon Sep 17 00:00:00 2001 From: Chris Zeitler Date: Thu, 21 Nov 2024 15:58:45 -0600 Subject: [PATCH 1/3] feat: E2E resources for Windows --- .../e2e-resources/templates/cronjob.yml | 2 ++ .../templates/daemonset-windows.yaml | 25 ++++++++++++++ .../e2e-resources/templates/daemonset.yaml | 2 ++ .../templates/deployment-windows.yml | 33 +++++++++++++++++++ .../e2e-resources/templates/deployment.yaml | 2 ++ .../internal/e2e-resources/templates/hpa.yaml | 4 +++ .../e2e-resources/templates/job-fails.yaml | 2 ++ .../e2e-resources/templates/pods-pending.yaml | 3 ++ .../e2e-resources/templates/scraper.yaml | 2 ++ .../e2e-resources/templates/statefulset.yaml | 2 ++ charts/internal/e2e-resources/values.yaml | 11 +++++++ 11 files changed, 88 insertions(+) create mode 100644 charts/internal/e2e-resources/templates/daemonset-windows.yaml create mode 100644 charts/internal/e2e-resources/templates/deployment-windows.yml diff --git a/charts/internal/e2e-resources/templates/cronjob.yml b/charts/internal/e2e-resources/templates/cronjob.yml index d0f6b4fe35..9e69452e0d 100644 --- a/charts/internal/e2e-resources/templates/cronjob.yml +++ b/charts/internal/e2e-resources/templates/cronjob.yml @@ -47,6 +47,8 @@ spec: - mountPath: /output name: storage restartPolicy: OnFailure + nodeSelector: + kubernetes.io/os: linux volumes: - name: storage emptyDir: diff --git a/charts/internal/e2e-resources/templates/daemonset-windows.yaml b/charts/internal/e2e-resources/templates/daemonset-windows.yaml new file mode 100644 index 0000000000..a424375fbb --- /dev/null +++ b/charts/internal/e2e-resources/templates/daemonset-windows.yaml @@ -0,0 +1,25 @@ +{{- if and (.Values.daemonSet.enabled) (.Values.windows.enabled) }} +{{- range .Values.windows.windowsOsList }} +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: {{ .Release.Name }}-daemonset-windows-{{ .version }} +spec: + selector: + matchLabels: + app: daemonset-windows-{{ .version }} + template: + metadata: + labels: + app: daemonset-windows-{{ .version }} + spec: + containers: + - name: windows-sleep + image: mcr.microsoft.com/windows/servercore:{{ .version }} + command: + - powershell.exe + - -command + - "while($$true) { Start-Sleep -s 5 }" + nodeSelector: + kubernetes.io/os: windows + node.kubernetes.io/windows-build: {{ .buildNumber }} \ No newline at end of file diff --git a/charts/internal/e2e-resources/templates/daemonset.yaml b/charts/internal/e2e-resources/templates/daemonset.yaml index ec448a889f..4de8eee8e6 100644 --- a/charts/internal/e2e-resources/templates/daemonset.yaml +++ b/charts/internal/e2e-resources/templates/daemonset.yaml @@ -39,6 +39,8 @@ spec: - -c - echo "Hello world! I'm going to exit with 42 to simulate a software bug." && sleep 300 && exit 42 {{- end }} + nodeSelector: + kubernetes.io/os: linux volumes: - name: storage emptyDir: diff --git a/charts/internal/e2e-resources/templates/deployment-windows.yml b/charts/internal/e2e-resources/templates/deployment-windows.yml new file mode 100644 index 0000000000..ba0603e691 --- /dev/null +++ b/charts/internal/e2e-resources/templates/deployment-windows.yml @@ -0,0 +1,33 @@ +{{- if and (.Values.deployment.enabled) (.Values.windows.enabled) }} +{{- range .Values.windows.windowsOsList }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Release.Name }}-deployment-windows-{{ .version }} +spec: + paused: false + minReadySeconds: 6 + replicas: 2 + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + selector: + matchLabels: + app: deployment-windows-{{ .version }} + template: + metadata: + labels: + app: deployment-windows-{{ .version }} + spec: + containers: + - name: windows-sleep + image: mcr.microsoft.com/windows/servercore:{{ .version }} + command: + - powershell.exe + - -command + - "while($$true) { Start-Sleep -s 5 }" + nodeSelector: + kubernetes.io/os: windows + node.kubernetes.io/windows-build: {{ .buildNumber }} \ No newline at end of file diff --git a/charts/internal/e2e-resources/templates/deployment.yaml b/charts/internal/e2e-resources/templates/deployment.yaml index c5d8f773c1..b5fd48436c 100644 --- a/charts/internal/e2e-resources/templates/deployment.yaml +++ b/charts/internal/e2e-resources/templates/deployment.yaml @@ -47,6 +47,8 @@ spec: - -c - echo "Hello world! I'm going to exit with 42 to simulate a software bug." && sleep 300 && exit 42 {{- end }} + nodeSelector: + kubernetes.io/os: linux volumes: - name: storage emptyDir: diff --git a/charts/internal/e2e-resources/templates/hpa.yaml b/charts/internal/e2e-resources/templates/hpa.yaml index 8adf68c73f..b97712f0b9 100644 --- a/charts/internal/e2e-resources/templates/hpa.yaml +++ b/charts/internal/e2e-resources/templates/hpa.yaml @@ -28,6 +28,8 @@ spec: limits: cpu: "500m" imagePullPolicy: IfNotPresent + nodeSelector: + kubernetes.io/os: linux volumes: - name: script-volume configMap: @@ -53,6 +55,8 @@ spec: cpu: 500m requests: cpu: 200m + nodeSelector: + kubernetes.io/os: linux {{ end }} --- {{ if .Values.openShift.enabled }} diff --git a/charts/internal/e2e-resources/templates/job-fails.yaml b/charts/internal/e2e-resources/templates/job-fails.yaml index 0272b91625..04b6e3975a 100644 --- a/charts/internal/e2e-resources/templates/job-fails.yaml +++ b/charts/internal/e2e-resources/templates/job-fails.yaml @@ -20,5 +20,7 @@ spec: args: - -c - echo "Hello world! I'm going to exit with 42 to simulate a software bug." && sleep 5 && exit 42 + nodeSelector: + kubernetes.io/os: linux backoffLimit: 6 {{- end }} diff --git a/charts/internal/e2e-resources/templates/pods-pending.yaml b/charts/internal/e2e-resources/templates/pods-pending.yaml index d594586abb..f19858e026 100644 --- a/charts/internal/e2e-resources/templates/pods-pending.yaml +++ b/charts/internal/e2e-resources/templates/pods-pending.yaml @@ -18,6 +18,8 @@ spec: requests: memory: 5M cpu: 5m + nodeSelector: + kubernetes.io/os: linux --- apiVersion: v1 kind: Pod @@ -31,4 +33,5 @@ spec: image: alpine:latest nodeSelector: not-existing: not-existing + kubernetes.io/os: linux {{- end }} diff --git a/charts/internal/e2e-resources/templates/scraper.yaml b/charts/internal/e2e-resources/templates/scraper.yaml index 660f9ec42f..b27a83ab49 100644 --- a/charts/internal/e2e-resources/templates/scraper.yaml +++ b/charts/internal/e2e-resources/templates/scraper.yaml @@ -70,4 +70,6 @@ spec: command: - which - bash + nodeSelector: + kubernetes.io/os: linux {{- end }} diff --git a/charts/internal/e2e-resources/templates/statefulset.yaml b/charts/internal/e2e-resources/templates/statefulset.yaml index af582d5cbc..0772c214ca 100644 --- a/charts/internal/e2e-resources/templates/statefulset.yaml +++ b/charts/internal/e2e-resources/templates/statefulset.yaml @@ -56,6 +56,8 @@ spec: - -c - echo "Hello world! I'm going to exit with 42 to simulate a software bug." && sleep 300 && exit 42 {{- end }} + nodeSelector: + kubernetes.io/os: linux volumes: - name: storage {{- if .Values.persistentVolumeClaim.enabled }} diff --git a/charts/internal/e2e-resources/values.yaml b/charts/internal/e2e-resources/values.yaml index d9badc8981..647313f723 100644 --- a/charts/internal/e2e-resources/values.yaml +++ b/charts/internal/e2e-resources/values.yaml @@ -61,3 +61,14 @@ fileSystemTest: openShift: enabled: false +windows: + # Enables running dummies on Windows nodes + enabled: false + # version is used for naming resources and the servercore image tag + # buildNumber is the major.minor.buildNumber matching the Windows Server version. + # https://kubernetes.io/docs/concepts/windows/user-guide/#handling-multiple-windows-versions-in-the-same-cluster + osList: + - version: ltsc2019 + buildNumber: 10.0.17763 + - version: ltsc2022 + buildNumber: 10.0.20348 \ No newline at end of file From d2cef1a7f6c0d0b32561711ef67ded0f20c3eb8f Mon Sep 17 00:00:00 2001 From: Chris Zeitler Date: Thu, 21 Nov 2024 16:02:19 -0600 Subject: [PATCH 2/3] Changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f40d942f7..4dd0f063ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased +### enhancement +- Update e2e-resources to be able to run Windows containers @czeitler [#1141](https://github.com/newrelic/nri-kubernetes/pull/1141) + ## v3.32.0 - 2024-11-18 ### 🚀 Enhancements From db9e647213092e227fb33e6632be32e5ce7300f7 Mon Sep 17 00:00:00 2001 From: Chris Zeitler Date: Thu, 21 Nov 2024 16:09:51 -0600 Subject: [PATCH 3/3] fix: Template syntax and variable typo --- .../internal/e2e-resources/templates/daemonset-windows.yaml | 6 ++++-- .../internal/e2e-resources/templates/deployment-windows.yml | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/charts/internal/e2e-resources/templates/daemonset-windows.yaml b/charts/internal/e2e-resources/templates/daemonset-windows.yaml index a424375fbb..e2c0c956da 100644 --- a/charts/internal/e2e-resources/templates/daemonset-windows.yaml +++ b/charts/internal/e2e-resources/templates/daemonset-windows.yaml @@ -1,5 +1,5 @@ {{- if and (.Values.daemonSet.enabled) (.Values.windows.enabled) }} -{{- range .Values.windows.windowsOsList }} +{{- range .Values.windows.osList }} apiVersion: apps/v1 kind: DaemonSet metadata: @@ -22,4 +22,6 @@ spec: - "while($$true) { Start-Sleep -s 5 }" nodeSelector: kubernetes.io/os: windows - node.kubernetes.io/windows-build: {{ .buildNumber }} \ No newline at end of file + node.kubernetes.io/windows-build: {{ .buildNumber }} + {{- end }} + {{- end }} diff --git a/charts/internal/e2e-resources/templates/deployment-windows.yml b/charts/internal/e2e-resources/templates/deployment-windows.yml index ba0603e691..4a8e147c5f 100644 --- a/charts/internal/e2e-resources/templates/deployment-windows.yml +++ b/charts/internal/e2e-resources/templates/deployment-windows.yml @@ -1,5 +1,5 @@ {{- if and (.Values.deployment.enabled) (.Values.windows.enabled) }} -{{- range .Values.windows.windowsOsList }} +{{- range .Values.windows.osList }} apiVersion: apps/v1 kind: Deployment metadata: @@ -30,4 +30,6 @@ spec: - "while($$true) { Start-Sleep -s 5 }" nodeSelector: kubernetes.io/os: windows - node.kubernetes.io/windows-build: {{ .buildNumber }} \ No newline at end of file + node.kubernetes.io/windows-build: {{ .buildNumber }} + {{- end }} + {{- end }}