Skip to content

Commit 01d33f2

Browse files
committed
Merge remote-tracking branch 'origin/main' into k0s-1-28-9
2 parents 2a10d57 + 29968bb commit 01d33f2

File tree

24 files changed

+316
-73
lines changed

24 files changed

+316
-73
lines changed

.github/workflows/pull-request.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,39 @@ jobs:
5050
uses: actions/setup-go@v5
5151
with:
5252
go-version-file: go.mod
53+
54+
- name: Set up Docker Buildx
55+
uses: docker/setup-buildx-action@v2
56+
57+
- name: Login to Registry
58+
uses: docker/login-action@v2
59+
with:
60+
registry: registry.staging.replicated.com
61+
username: ${{ secrets.REGISTRY_USERNAME_STAGING }}
62+
password: ${{ secrets.REGISTRY_PASSWORD_STAGING }}
63+
64+
- name: Build and push local-artifact-mirror image
65+
run: |
66+
export SHORT_SHA=dev-$(git rev-parse --short=7 HEAD)
67+
export LOCAL_ARTIFACT_MIRROR_IMAGE=registry.staging.replicated.com/library/embedded-cluster-local-artifact-mirror
68+
make build-and-push-local-artifact-mirror-image VERSION="${SHORT_SHA}"
69+
make build-and-push-local-artifact-mirror-image VERSION="${SHORT_SHA}-previous-k0s"
70+
make build-and-push-local-artifact-mirror-image VERSION="${SHORT_SHA}-upgrade"
71+
5372
- name: Build Linux AMD64 and Output Metadata
5473
run: |
5574
export SHORT_SHA=dev-$(git rev-parse --short=7 HEAD)
75+
export LOCAL_ARTIFACT_MIRROR_IMAGE=registry.staging.replicated.com/library/embedded-cluster-local-artifact-mirror
5676
make -B embedded-cluster-linux-amd64 K0S_VERSION=$(make print-PREVIOUS_K0S_VERSION) VERSION="${SHORT_SHA}-previous-k0s"
5777
tar -C output/bin -czvf embedded-cluster-linux-amd64-previous-k0s.tgz embedded-cluster
5878
./output/bin/embedded-cluster version metadata > metadata-previous-k0s.json
79+
make -B embedded-cluster-linux-amd64 VERSION="${SHORT_SHA}-upgrade"
80+
tar -C output/bin -czvf embedded-cluster-linux-amd64-upgrade.tgz embedded-cluster
81+
./output/bin/embedded-cluster version metadata > metadata-upgrade.json
5982
make -B embedded-cluster-linux-amd64 VERSION="${SHORT_SHA}"
6083
tar -C output/bin -czvf embedded-cluster-linux-amd64.tgz embedded-cluster
6184
./output/bin/embedded-cluster version metadata > metadata.json
85+
6286
- name: Install Replicated CLI
6387
run: |
6488
curl -s https://api.github.com/repos/replicatedhq/replicated/releases/latest \
@@ -87,6 +111,7 @@ jobs:
87111
- name: Build CI binary
88112
run: |
89113
export SHORT_SHA=dev-$(git rev-parse --short=7 HEAD)
114+
export LOCAL_ARTIFACT_MIRROR_IMAGE=registry.staging.replicated.com/library/embedded-cluster-local-artifact-mirror
90115
echo "# channel release object" > e2e/kots-release-install/release.yaml
91116
echo 'channelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP"' >> e2e/kots-release-install/release.yaml
92117
echo 'channelSlug: "ci"' >> e2e/kots-release-install/release.yaml
@@ -169,6 +194,7 @@ jobs:
169194
test:
170195
- TestSingleNodeInstallation
171196
- TestSingleNodeInstallationAlmaLinux8
197+
- TestSingleNodeInstallationDebian11
172198
- TestSingleNodeInstallationDebian12
173199
- TestSingleNodeInstallationCentos9Stream
174200
- TestVersion
@@ -203,6 +229,8 @@ jobs:
203229
runner: embedded-cluster
204230
- test: TestMultiNodeAirgapHADisasterRecovery
205231
runner: embedded-cluster
232+
- test: TestSingleNodeAirgapDisasterRecovery
233+
runner: embedded-cluster
206234
steps:
207235
- name: Checkout
208236
uses: actions/checkout@v4

.github/workflows/release-dev.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,35 @@ jobs:
1717
uses: actions/setup-go@v5
1818
with:
1919
go-version-file: go.mod
20+
21+
- name: Set up Docker Buildx
22+
uses: docker/setup-buildx-action@v2
23+
24+
- name: Login to Registry
25+
uses: docker/login-action@v2
26+
with:
27+
registry: registry.staging.replicated.com
28+
username: ${{ secrets.REGISTRY_USERNAME_STAGING }}
29+
password: ${{ secrets.REGISTRY_PASSWORD_STAGING }}
30+
31+
- name: Build and push local-artifact-mirror image
32+
run: |
33+
export SHORT_SHA=dev-$(git rev-parse --short=7 HEAD)
34+
export LOCAL_ARTIFACT_MIRROR_IMAGE=registry.staging.replicated.com/library/embedded-cluster-local-artifact-mirror
35+
make build-and-push-local-artifact-mirror-image VERSION="${SHORT_SHA}"
36+
make build-and-push-local-artifact-mirror-image VERSION="${SHORT_SHA}-previous-k0s"
37+
make build-and-push-local-artifact-mirror-image VERSION="${SHORT_SHA}-upgrade"
38+
2039
- name: Build Linux AMD64 and Output Metadata
2140
run: |
2241
export SHORT_SHA=dev-$(git rev-parse --short=7 HEAD)
42+
export LOCAL_ARTIFACT_MIRROR_IMAGE=registry.staging.replicated.com/library/embedded-cluster-local-artifact-mirror
2343
make -B embedded-cluster-linux-amd64 K0S_VERSION=$(make print-PREVIOUS_K0S_VERSION) VERSION="${SHORT_SHA}-previous-k0s"
2444
tar -C output/bin -czvf embedded-cluster-linux-amd64-previous-k0s.tgz embedded-cluster
2545
./output/bin/embedded-cluster version metadata > metadata-previous-k0s.json
46+
make -B embedded-cluster-linux-amd64 VERSION="${SHORT_SHA}-upgrade"
47+
tar -C output/bin -czvf embedded-cluster-linux-amd64-upgrade.tgz embedded-cluster
48+
./output/bin/embedded-cluster version metadata > metadata-upgrade.json
2649
make -B embedded-cluster-linux-amd64 VERSION="${SHORT_SHA}"
2750
tar -C output/bin -czvf embedded-cluster-linux-amd64.tgz embedded-cluster
2851
./output/bin/embedded-cluster version metadata > metadata.json
@@ -64,6 +87,7 @@ jobs:
6487
- name: Build CI binary
6588
run: |
6689
export SHORT_SHA=dev-$(git rev-parse --short=7 HEAD)
90+
export LOCAL_ARTIFACT_MIRROR_IMAGE=registry.staging.replicated.com/library/embedded-cluster-local-artifact-mirror
6791
echo "# channel release object" > e2e/kots-release-install/release.yaml
6892
echo 'channelID: "2cHXb1RCttzpR0xvnNWyaZCgDBP"' >> e2e/kots-release-install/release.yaml
6993
echo 'channelSlug: "ci"' >> e2e/kots-release-install/release.yaml
@@ -122,6 +146,7 @@ jobs:
122146
test:
123147
- TestSingleNodeInstallation
124148
- TestSingleNodeInstallationAlmaLinux8
149+
- TestSingleNodeInstallationDebian11
125150
- TestSingleNodeInstallationDebian12
126151
- TestSingleNodeInstallationCentos9Stream
127152
- TestVersion
@@ -156,6 +181,8 @@ jobs:
156181
runner: embedded-cluster
157182
- test: TestMultiNodeAirgapHADisasterRecovery
158183
runner: embedded-cluster
184+
- test: TestSingleNodeAirgapDisasterRecovery
185+
runner: embedded-cluster
159186
steps:
160187
- name: Checkout
161188
uses: actions/checkout@v4

.github/workflows/release-prod.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,33 @@ jobs:
2525
uses: actions/setup-go@v5
2626
with:
2727
go-version-file: go.mod
28+
29+
- name: Set up Docker Buildx
30+
uses: docker/setup-buildx-action@v2
31+
32+
- name: Login to Registry
33+
uses: docker/login-action@v2
34+
with:
35+
registry: registry.replicated.com
36+
username: ${{ secrets.REGISTRY_USERNAME_PRODUCTION }}
37+
password: ${{ secrets.REGISTRY_PASSWORD_PRODUCTION }}
38+
39+
- name: Build and push local-artifact-mirror image (production)
40+
run: |
41+
make build-and-push-local-artifact-mirror-image VERSION=$TAG_NAME
42+
43+
- name: Login to Registry
44+
uses: docker/login-action@v2
45+
with:
46+
registry: registry.staging.replicated.com
47+
username: ${{ secrets.REGISTRY_USERNAME_STAGING }}
48+
password: ${{ secrets.REGISTRY_PASSWORD_STAGING }}
49+
50+
- name: Build and push local-artifact-mirror image (staging)
51+
run: |
52+
export LOCAL_ARTIFACT_MIRROR_IMAGE=registry.staging.replicated.com/library/embedded-cluster-local-artifact-mirror
53+
make build-and-push-local-artifact-mirror-image VERSION=$TAG_NAME
54+
2855
- name: Build linux-amd64
2956
run: |
3057
make embedded-cluster-linux-amd64 VERSION=$TAG_NAME

Dockerfile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# this dockerfile builds an image containing the local-artifact-mirror binary
2+
# installed on /usr/local/bin/local-artifact-mirror.
3+
FROM golang:1.22 AS builder
4+
WORKDIR /src
5+
COPY go.mod go.sum ./
6+
RUN go mod download
7+
COPY . .
8+
RUN make pkg/goods/bins/local-artifact-mirror
9+
10+
FROM cgr.dev/chainguard/wolfi-base:latest
11+
COPY --from=builder /src/pkg/goods/bins/local-artifact-mirror /usr/local/bin/local-artifact-mirror
12+
ENTRYPOINT ["/usr/local/bin/local-artifact-mirror"]

Makefile

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ ADMIN_CONSOLE_IMAGE_OVERRIDE =
99
ADMIN_CONSOLE_MIGRATIONS_IMAGE_OVERRIDE =
1010
EMBEDDED_OPERATOR_CHART_URL = oci://registry.replicated.com/library
1111
EMBEDDED_OPERATOR_CHART_NAME = embedded-cluster-operator
12-
EMBEDDED_OPERATOR_CHART_VERSION = 0.34.9
12+
EMBEDDED_OPERATOR_CHART_VERSION = 0.35.2
1313
EMBEDDED_OPERATOR_UTILS_IMAGE = busybox:1.36.1
1414
EMBEDDED_CLUSTER_OPERATOR_IMAGE_OVERRIDE =
1515
OPENEBS_CHART_URL = https://openebs.github.io/openebs
@@ -35,16 +35,19 @@ K0S_BINARY_SOURCE_OVERRIDE =
3535
TROUBLESHOOT_VERSION = v0.92.1
3636
KOTS_VERSION = v$(shell echo $(ADMIN_CONSOLE_CHART_VERSION) | sed 's/\([0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/')
3737
KOTS_BINARY_URL_OVERRIDE =
38+
LOCAL_ARTIFACT_MIRROR_IMAGE ?= registry.replicated.com/library/embedded-cluster-local-artifact-mirror
39+
LOCAL_ARTIFACT_MIRROR_IMAGE_LOCATION = ${LOCAL_ARTIFACT_MIRROR_IMAGE}:$(subst +,-,$(VERSION))
3840
LD_FLAGS = -X github.com/replicatedhq/embedded-cluster/pkg/defaults.K0sVersion=$(K0S_VERSION) \
3941
-X github.com/replicatedhq/embedded-cluster/pkg/defaults.Version=$(VERSION) \
40-
-X github.com/replicatedhq/embedded-cluster/pkg/defaults.K0sBinaryURL=$(K0S_BINARY_SOURCE_OVERRIDE) \
4142
-X github.com/replicatedhq/embedded-cluster/pkg/defaults.TroubleshootVersion=$(TROUBLESHOOT_VERSION) \
4243
-X github.com/replicatedhq/embedded-cluster/pkg/defaults.KubectlVersion=$(KUBECTL_VERSION) \
44+
-X github.com/replicatedhq/embedded-cluster/pkg/defaults.LocalArtifactMirrorImage=$(LOCAL_ARTIFACT_MIRROR_IMAGE_LOCATION) \
4345
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.ChartURL=$(ADMIN_CONSOLE_CHART_URL) \
4446
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.ChartName=$(ADMIN_CONSOLE_CHART_NAME) \
4547
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.Version=$(ADMIN_CONSOLE_CHART_VERSION) \
4648
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.ImageOverride=$(ADMIN_CONSOLE_IMAGE_OVERRIDE) \
4749
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.MigrationsImageOverride=$(ADMIN_CONSOLE_MIGRATIONS_IMAGE_OVERRIDE) \
50+
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.KotsVersion=$(KOTS_VERSION) \
4851
-X github.com/replicatedhq/embedded-cluster/pkg/addons/embeddedclusteroperator.ChartURL=$(EMBEDDED_OPERATOR_CHART_URL) \
4952
-X github.com/replicatedhq/embedded-cluster/pkg/addons/embeddedclusteroperator.ChartName=$(EMBEDDED_OPERATOR_CHART_NAME) \
5053
-X github.com/replicatedhq/embedded-cluster/pkg/addons/embeddedclusteroperator.Version=$(EMBEDDED_OPERATOR_CHART_VERSION) \
@@ -192,3 +195,14 @@ scan:
192195

193196
print-%:
194197
@echo -n $($*)
198+
199+
.PHONY: build-local-artifact-mirror-image
200+
build-local-artifact-mirror-image:
201+
docker build -t $(LOCAL_ARTIFACT_MIRROR_IMAGE_LOCATION) -f Dockerfile .
202+
203+
.PHONY: push-local-artifact-mirror-image
204+
push-local-artifact-mirror-image:
205+
docker push $(LOCAL_ARTIFACT_MIRROR_IMAGE_LOCATION)
206+
207+
.PHONY: build-and-push-local-artifact-mirror-image
208+
build-and-push-local-artifact-mirror-image: build-local-artifact-mirror-image push-local-artifact-mirror-image

cmd/embedded-cluster/join.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"github.com/google/uuid"
1414
"github.com/k0sproject/dig"
1515
k0sconfig "github.com/k0sproject/k0s/pkg/apis/k0s/v1beta1"
16-
embeddedclusterv1beta1 "github.com/replicatedhq/embedded-cluster-kinds/apis/v1beta1"
1716
"github.com/sirupsen/logrus"
1817
"github.com/urfave/cli/v2"
1918
"gopkg.in/yaml.v2"
@@ -245,7 +244,6 @@ var joinCommand = &cli.Command{
245244
metrics.ReportJoinFailed(c.Context, jcmd.MetricsBaseURL, jcmd.ClusterID, err)
246245
return err
247246
}
248-
embeddedclusterv1beta1.AddToScheme(kcli.Scheme())
249247
hostname, err := os.Hostname()
250248
if err != nil {
251249
err := fmt.Errorf("unable to get hostname: %w", err)

cmd/embedded-cluster/uninstall.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
autopilot "github.com/k0sproject/k0s/pkg/apis/autopilot/v1beta2"
1212
"github.com/k0sproject/k0s/pkg/apis/k0s/v1beta1"
1313
"github.com/k0sproject/k0s/pkg/etcd"
14-
embeddedclusterv1beta1 "github.com/replicatedhq/embedded-cluster-kinds/apis/v1beta1"
1514
"github.com/sirupsen/logrus"
1615
"github.com/urfave/cli/v2"
1716
corev1 "k8s.io/api/core/v1"
@@ -116,8 +115,6 @@ func (h *hostInfo) configureKubernetesClient() {
116115
return
117116
}
118117
h.Kclient = client
119-
autopilot.AddToScheme(h.Kclient.Scheme())
120-
v1beta1.AddToScheme(h.Kclient.Scheme())
121118
}
122119

123120
// getHostName fetches the hostname for the node
@@ -303,7 +300,6 @@ func maybePrintHAWarning(c *cli.Context) error {
303300
if err != nil {
304301
return fmt.Errorf("unable to create kube client: %w", err)
305302
}
306-
embeddedclusterv1beta1.AddToScheme(kubecli.Scheme())
307303

308304
if in, err := kubeutils.GetLatestInstallation(c.Context, kubecli); err != nil {
309305
return fmt.Errorf("unable to get installation: %w", err)

cmd/embedded-cluster/version.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313
"github.com/urfave/cli/v2"
1414

1515
"github.com/replicatedhq/embedded-cluster/pkg/addons"
16+
"github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole"
17+
"github.com/replicatedhq/embedded-cluster/pkg/addons/embeddedclusteroperator"
1618
"github.com/replicatedhq/embedded-cluster/pkg/config"
1719
"github.com/replicatedhq/embedded-cluster/pkg/defaults"
1820
"github.com/replicatedhq/embedded-cluster/pkg/goods"
@@ -103,10 +105,16 @@ func gatherVersionMetadata() (*types.ReleaseMetadata, error) {
103105
return nil, fmt.Errorf("unable to get k0s binary sha256: %w", err)
104106
}
105107

108+
artifacts := map[string]string{
109+
"kots": fmt.Sprintf("kots-binaries/%s", adminconsole.KotsVersion),
110+
"operator": fmt.Sprintf("operator-binaries/%s", embeddedclusteroperator.Version),
111+
"local-artifact-mirror-image": defaults.LocalArtifactMirrorImage,
112+
}
113+
106114
meta := types.ReleaseMetadata{
107-
Versions: versions,
108-
K0sSHA: sha,
109-
K0sBinaryURL: defaults.K0sBinaryURL,
115+
Versions: versions,
116+
K0sSHA: sha,
117+
Artifacts: artifacts,
110118
}
111119

112120
chtconfig, repconfig, err := applier.GenerateHelmConfigs(

cmd/local-artifact-mirror/pull.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ var pullCommand = &cli.Command{
4040
if kubecli, err = kubeutils.KubeClient(); err != nil {
4141
return fmt.Errorf("unable to create kube client: %w", err)
4242
}
43-
v1beta1.AddToScheme(kubecli.Scheme())
4443
return nil
4544
},
4645
Subcommands: []*cli.Command{binariesCommand, imagesCommand, helmChartsCommand},

e2e/install_test.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,54 @@ func TestSingleNodeInstallationDebian12(t *testing.T) {
143143
t.Logf("%s: test complete", time.Now().Format(time.RFC3339))
144144
}
145145

146+
func TestSingleNodeInstallationDebian11(t *testing.T) {
147+
t.Parallel()
148+
tc := cluster.NewTestCluster(&cluster.Input{
149+
T: t,
150+
Nodes: 1,
151+
Image: "debian/11",
152+
LicensePath: "license.yaml",
153+
EmbeddedClusterPath: "../output/bin/embedded-cluster",
154+
})
155+
defer cleanupCluster(t, tc)
156+
157+
t.Logf("%s: installing test dependencies on node 0", time.Now().Format(time.RFC3339))
158+
commands := [][]string{
159+
{"apt-get", "update", "-y"},
160+
{"apt-get", "install", "ca-certificates", "curl", "-y"},
161+
{"update-ca-certificates"},
162+
}
163+
if err := RunCommandsOnNode(t, tc, 0, commands); err != nil {
164+
t.Fatalf("fail to install ssh on node 0: %v", err)
165+
}
166+
167+
t.Logf("%s: installing embedded-cluster on node 0", time.Now().Format(time.RFC3339))
168+
line := []string{"single-node-install.sh", "cli"}
169+
if _, _, err := RunCommandOnNode(t, tc, 0, line); err != nil {
170+
t.Fatalf("fail to install embedded-cluster on node %s: %v", tc.Nodes[0], err)
171+
}
172+
173+
t.Logf("%s: checking installation state", time.Now().Format(time.RFC3339))
174+
line = []string{"check-installation-state.sh", os.Getenv("SHORT_SHA")}
175+
if _, _, err := RunCommandOnNode(t, tc, 0, line); err != nil {
176+
t.Fatalf("fail to check installation state: %v", err)
177+
}
178+
179+
t.Logf("%s: running kots upstream upgrade", time.Now().Format(time.RFC3339))
180+
line = []string{"kots-upstream-upgrade.sh", os.Getenv("SHORT_SHA")}
181+
if _, _, err := RunCommandOnNode(t, tc, 0, line); err != nil {
182+
t.Fatalf("fail to run kots upstream upgrade: %v", err)
183+
}
184+
185+
t.Logf("%s: checking installation state after upgrade", time.Now().Format(time.RFC3339))
186+
line = []string{"check-postupgrade-state.sh"}
187+
if _, _, err := RunCommandOnNode(t, tc, 0, line); err != nil {
188+
t.Fatalf("fail to check postupgrade state: %v", err)
189+
}
190+
191+
t.Logf("%s: test complete", time.Now().Format(time.RFC3339))
192+
}
193+
146194
func TestSingleNodeInstallationCentos9Stream(t *testing.T) {
147195
t.Parallel()
148196
tc := cluster.NewTestCluster(&cluster.Input{

0 commit comments

Comments
 (0)