Skip to content

Commit cd9fb27

Browse files
committed
fix: support secure HTTP proxy with gRPC dial
Most of the work is to add proper test environment for more cases. Include a test for pulling an image Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
1 parent adf87b4 commit cd9fb27

File tree

16 files changed

+548
-135
lines changed

16 files changed

+548
-135
lines changed

.github/workflows/ci.yaml

Lines changed: 111 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
22
#
3-
# Generated on 2025-09-29T11:30:50Z by kres eb905b6-dirty.
3+
# Generated on 2025-10-01T17:01:09Z by kres bc281a9.
44

55
concurrency:
66
group: ${{ github.head_ref || github.run_id }}
@@ -549,6 +549,116 @@ jobs:
549549
path: |
550550
_out/grype-scan.log
551551
retention-days: "5"
552+
integration-airgapped:
553+
permissions:
554+
actions: read
555+
contents: write
556+
issues: read
557+
packages: write
558+
pull-requests: read
559+
runs-on:
560+
group: large
561+
if: contains(fromJSON(needs.default.outputs.labels), 'integration/misc') || contains(fromJSON(needs.default.outputs.labels), 'integration/airgapped') || contains(fromJSON(needs.default.outputs.labels), 'integration/release-gate')
562+
needs:
563+
- default
564+
steps:
565+
- name: gather-system-info
566+
id: system-info
567+
uses: kenchan0130/actions-system-info@v1.4.0
568+
continue-on-error: true
569+
- name: print-system-info
570+
run: |
571+
MEMORY_GB=$((${{ steps.system-info.outputs.totalmem }}/1024/1024/1024))
572+
573+
OUTPUTS=(
574+
"CPU Core: ${{ steps.system-info.outputs.cpu-core }}"
575+
"CPU Model: ${{ steps.system-info.outputs.cpu-model }}"
576+
"Hostname: ${{ steps.system-info.outputs.hostname }}"
577+
"NodeName: ${NODE_NAME}"
578+
"Kernel release: ${{ steps.system-info.outputs.kernel-release }}"
579+
"Kernel version: ${{ steps.system-info.outputs.kernel-version }}"
580+
"Name: ${{ steps.system-info.outputs.name }}"
581+
"Platform: ${{ steps.system-info.outputs.platform }}"
582+
"Release: ${{ steps.system-info.outputs.release }}"
583+
"Total memory: ${MEMORY_GB} GB"
584+
)
585+
586+
for OUTPUT in "${OUTPUTS[@]}";do
587+
echo "${OUTPUT}"
588+
done
589+
continue-on-error: true
590+
- name: checkout
591+
uses: actions/checkout@v5
592+
- name: Unshallow
593+
run: |
594+
git fetch --prune --unshallow
595+
- name: Set up Docker Buildx
596+
id: setup-buildx
597+
uses: docker/setup-buildx-action@v3
598+
with:
599+
driver: remote
600+
endpoint: tcp://buildkit-amd64.ci.svc.cluster.local:1234
601+
timeout-minutes: 10
602+
- name: Download artifacts
603+
if: github.event_name != 'schedule'
604+
uses: actions/download-artifact@v4
605+
with:
606+
name: talos-artifacts
607+
path: _out
608+
- name: Fix artifact permissions
609+
if: github.event_name != 'schedule'
610+
run: |
611+
xargs -a _out/executable-artifacts -I {} chmod +x {}
612+
- name: ci-temp-release-tag
613+
if: github.event_name != 'schedule'
614+
run: |
615+
make ci-temp-release-tag
616+
- name: build
617+
if: github.event_name == 'schedule'
618+
env:
619+
IMAGE_REGISTRY: registry.dev.siderolabs.io
620+
PLATFORM: linux/amd64,linux/arm64
621+
PUSH: "true"
622+
run: |
623+
make talosctl-linux-amd64 kernel sd-boot sd-stub initramfs installer-base imager talos _out/integration-test-linux-amd64
624+
- name: talosctl-cni-bundle
625+
if: github.event_name == 'schedule'
626+
run: |
627+
make talosctl-cni-bundle
628+
- name: e2e-airgapped-http-proxy
629+
env:
630+
GITHUB_STEP_NAME: ${{ github.job}}-e2e-http-proxy
631+
IMAGE_REGISTRY: registry.dev.siderolabs.io
632+
SHORT_INTEGRATION_TEST: "yes"
633+
WITH_AIRGAPPED: http-proxy
634+
run: |
635+
sudo -E make e2e-qemu
636+
- name: e2e-airgapped-secure-proxy
637+
env:
638+
GITHUB_STEP_NAME: ${{ github.job}}-e2e-secure-proxy
639+
IMAGE_REGISTRY: registry.dev.siderolabs.io
640+
SHORT_INTEGRATION_TEST: "yes"
641+
WITH_AIRGAPPED: secure-http-proxy
642+
run: |
643+
sudo -E make e2e-qemu
644+
- name: e2e-airgapped-reverse-proxy
645+
env:
646+
GITHUB_STEP_NAME: ${{ github.job}}-e2e-reverse-proxy
647+
IMAGE_REGISTRY: registry.dev.siderolabs.io
648+
SHORT_INTEGRATION_TEST: "yes"
649+
WITH_AIRGAPPED: https-reverse-proxy
650+
run: |
651+
sudo -E make e2e-qemu
652+
- name: save artifacts
653+
if: always()
654+
uses: actions/upload-artifact@v4
655+
with:
656+
name: talos-logs-integration-airgapped
657+
path: |-
658+
/tmp/logs-*.tar.gz
659+
/tmp/support-*.zip
660+
/tmp/airgapped*.log
661+
retention-days: "5"
552662
integration-aws:
553663
permissions:
554664
actions: read
@@ -2620,14 +2730,6 @@ jobs:
26202730
if: github.event_name == 'schedule'
26212731
run: |
26222732
make talosctl-cni-bundle
2623-
- name: e2e-airgapped
2624-
env:
2625-
GITHUB_STEP_NAME: ${{ github.job}}-e2e-airgapped
2626-
IMAGE_REGISTRY: registry.dev.siderolabs.io
2627-
SHORT_INTEGRATION_TEST: "yes"
2628-
WITH_AIRGAPPED: "true"
2629-
run: |
2630-
sudo -E make e2e-qemu
26312733
- name: e2e-no-cluster-discovery
26322734
env:
26332735
GITHUB_STEP_NAME: ${{ github.job}}-e2e-no-cluster-discovery
@@ -2672,7 +2774,6 @@ jobs:
26722774
path: |-
26732775
/tmp/logs-*.tar.gz
26742776
/tmp/support-*.zip
2675-
/tmp/airgapped*.log
26762777
retention-days: "5"
26772778
integration-misc-1-enforcing:
26782779
permissions:
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
2+
#
3+
# Generated on 2025-10-01T17:01:09Z by kres bc281a9.
4+
5+
concurrency:
6+
group: ${{ github.head_ref || github.run_id }}
7+
cancel-in-progress: true
8+
"on":
9+
schedule:
10+
- cron: 30 5 * * *
11+
name: integration-airgapped-cron
12+
jobs:
13+
default:
14+
runs-on:
15+
group: large
16+
steps:
17+
- name: gather-system-info
18+
id: system-info
19+
uses: kenchan0130/actions-system-info@v1.4.0
20+
continue-on-error: true
21+
- name: print-system-info
22+
run: |
23+
MEMORY_GB=$((${{ steps.system-info.outputs.totalmem }}/1024/1024/1024))
24+
25+
OUTPUTS=(
26+
"CPU Core: ${{ steps.system-info.outputs.cpu-core }}"
27+
"CPU Model: ${{ steps.system-info.outputs.cpu-model }}"
28+
"Hostname: ${{ steps.system-info.outputs.hostname }}"
29+
"NodeName: ${NODE_NAME}"
30+
"Kernel release: ${{ steps.system-info.outputs.kernel-release }}"
31+
"Kernel version: ${{ steps.system-info.outputs.kernel-version }}"
32+
"Name: ${{ steps.system-info.outputs.name }}"
33+
"Platform: ${{ steps.system-info.outputs.platform }}"
34+
"Release: ${{ steps.system-info.outputs.release }}"
35+
"Total memory: ${MEMORY_GB} GB"
36+
)
37+
38+
for OUTPUT in "${OUTPUTS[@]}";do
39+
echo "${OUTPUT}"
40+
done
41+
continue-on-error: true
42+
- name: checkout
43+
uses: actions/checkout@v5
44+
- name: Unshallow
45+
run: |
46+
git fetch --prune --unshallow
47+
- name: Set up Docker Buildx
48+
id: setup-buildx
49+
uses: docker/setup-buildx-action@v3
50+
with:
51+
driver: remote
52+
endpoint: tcp://buildkit-amd64.ci.svc.cluster.local:1234
53+
timeout-minutes: 10
54+
- name: Download artifacts
55+
if: github.event_name != 'schedule'
56+
uses: actions/download-artifact@v4
57+
with:
58+
name: talos-artifacts
59+
path: _out
60+
- name: Fix artifact permissions
61+
if: github.event_name != 'schedule'
62+
run: |
63+
xargs -a _out/executable-artifacts -I {} chmod +x {}
64+
- name: ci-temp-release-tag
65+
if: github.event_name != 'schedule'
66+
run: |
67+
make ci-temp-release-tag
68+
- name: build
69+
if: github.event_name == 'schedule'
70+
env:
71+
IMAGE_REGISTRY: registry.dev.siderolabs.io
72+
PLATFORM: linux/amd64,linux/arm64
73+
PUSH: "true"
74+
run: |
75+
make talosctl-linux-amd64 kernel sd-boot sd-stub initramfs installer-base imager talos _out/integration-test-linux-amd64
76+
- name: talosctl-cni-bundle
77+
if: github.event_name == 'schedule'
78+
run: |
79+
make talosctl-cni-bundle
80+
- name: e2e-airgapped-http-proxy
81+
env:
82+
GITHUB_STEP_NAME: ${{ github.job}}-e2e-http-proxy
83+
IMAGE_REGISTRY: registry.dev.siderolabs.io
84+
SHORT_INTEGRATION_TEST: "yes"
85+
WITH_AIRGAPPED: http-proxy
86+
run: |
87+
sudo -E make e2e-qemu
88+
- name: e2e-airgapped-secure-proxy
89+
env:
90+
GITHUB_STEP_NAME: ${{ github.job}}-e2e-secure-proxy
91+
IMAGE_REGISTRY: registry.dev.siderolabs.io
92+
SHORT_INTEGRATION_TEST: "yes"
93+
WITH_AIRGAPPED: secure-http-proxy
94+
run: |
95+
sudo -E make e2e-qemu
96+
- name: e2e-airgapped-reverse-proxy
97+
env:
98+
GITHUB_STEP_NAME: ${{ github.job}}-e2e-reverse-proxy
99+
IMAGE_REGISTRY: registry.dev.siderolabs.io
100+
SHORT_INTEGRATION_TEST: "yes"
101+
WITH_AIRGAPPED: https-reverse-proxy
102+
run: |
103+
sudo -E make e2e-qemu
104+
- name: save artifacts
105+
if: always()
106+
uses: actions/upload-artifact@v4
107+
with:
108+
name: talos-logs-integration-airgapped
109+
path: |-
110+
/tmp/logs-*.tar.gz
111+
/tmp/support-*.zip
112+
/tmp/airgapped*.log
113+
retention-days: "5"

.github/workflows/integration-misc-1-cron.yaml

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
22
#
3-
# Generated on 2025-09-19T11:03:20Z by kres 065ec4c.
3+
# Generated on 2025-10-01T14:57:23Z by kres bc281a9.
44

55
concurrency:
66
group: ${{ github.head_ref || github.run_id }}
@@ -77,14 +77,6 @@ jobs:
7777
if: github.event_name == 'schedule'
7878
run: |
7979
make talosctl-cni-bundle
80-
- name: e2e-airgapped
81-
env:
82-
GITHUB_STEP_NAME: ${{ github.job}}-e2e-airgapped
83-
IMAGE_REGISTRY: registry.dev.siderolabs.io
84-
SHORT_INTEGRATION_TEST: "yes"
85-
WITH_AIRGAPPED: "true"
86-
run: |
87-
sudo -E make e2e-qemu
8880
- name: e2e-no-cluster-discovery
8981
env:
9082
GITHUB_STEP_NAME: ${{ github.job}}-e2e-no-cluster-discovery
@@ -129,5 +121,4 @@ jobs:
129121
path: |-
130122
/tmp/logs-*.tar.gz
131123
/tmp/support-*.zip
132-
/tmp/airgapped*.log
133124
retention-days: "5"

.github/workflows/slack-notify-ci-failure.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
22
#
3-
# Generated on 2025-09-25T16:16:48Z by kres fdbc9fc.
3+
# Generated on 2025-10-01T14:57:23Z by kres bc281a9.
44

55
"on":
66
workflow_run:
@@ -17,6 +17,7 @@
1717
- integration-provision-0-cron
1818
- integration-provision-1-cron
1919
- integration-provision-2-cron
20+
- integration-airgapped-cron
2021
- integration-misc-0-cron
2122
- integration-misc-1-cron
2223
- integration-misc-1-enforcing-cron

.github/workflows/slack-notify.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT.
22
#
3-
# Generated on 2025-09-25T16:16:48Z by kres fdbc9fc.
3+
# Generated on 2025-10-01T14:57:23Z by kres bc281a9.
44

55
"on":
66
workflow_run:
@@ -17,6 +17,7 @@
1717
- integration-provision-0-cron
1818
- integration-provision-1-cron
1919
- integration-provision-2-cron
20+
- integration-airgapped-cron
2021
- integration-misc-0-cron
2122
- integration-misc-1-cron
2223
- integration-misc-1-enforcing-cron

0 commit comments

Comments
 (0)