Skip to content

Commit 48cd7ae

Browse files
committed
Merge remote-tracking branch 'origin/main' into k0s-1-29
2 parents 9b86583 + 0e973cc commit 48cd7ae

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+4106
-515
lines changed

.github/workflows/release-prod.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ jobs:
171171
VERSION=${{ needs.get-tag.outputs.tag-name }} \
172172
LOCAL_ARTIFACT_MIRROR_IMAGE=proxy.replicated.com/anonymous/${{ needs.publish-images.outputs.local-artifact-mirror }}
173173
tar -C output/bin -czvf build/embedded-cluster-linux-amd64.tgz embedded-cluster
174+
tar -C output/bins -czvf build/manager-linux-amd64.tgz manager
174175
175176
- name: Output Metadata
176177
run: |

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ LOCAL_ARTIFACT_MIRROR_IMAGE ?= proxy.replicated.com/anonymous/replicated/embedde
2828
# These are used to override the binary urls in dev and e2e tests
2929
METADATA_K0S_BINARY_URL_OVERRIDE =
3030
METADATA_KOTS_BINARY_URL_OVERRIDE =
31+
METADATA_MANAGER_BINARY_URL_OVERRIDE =
3132
METADATA_OPERATOR_BINARY_URL_OVERRIDE =
3233

3334
ifeq ($(K0S_VERSION),v1.30.5+k0s.0-ec.1)
@@ -49,6 +50,7 @@ LD_FLAGS = \
4950
-X github.com/replicatedhq/embedded-cluster/pkg/versions.LocalArtifactMirrorImage=$(LOCAL_ARTIFACT_MIRROR_IMAGE) \
5051
-X github.com/replicatedhq/embedded-cluster/pkg/versions.K0sBinaryURLOverride=$(METADATA_K0S_BINARY_URL_OVERRIDE) \
5152
-X github.com/replicatedhq/embedded-cluster/pkg/versions.KOTSBinaryURLOverride=$(METADATA_KOTS_BINARY_URL_OVERRIDE) \
53+
-X github.com/replicatedhq/embedded-cluster/pkg/versions.ManagerBinaryURLOverride=$(METADATA_MANAGER_BINARY_URL_OVERRIDE) \
5254
-X github.com/replicatedhq/embedded-cluster/pkg/versions.OperatorBinaryURLOverride=$(METADATA_OPERATOR_BINARY_URL_OVERRIDE) \
5355
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.ChartRepoOverride=$(ADMIN_CONSOLE_CHART_REPO_OVERRIDE) \
5456
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.KurlProxyImageOverride=$(ADMIN_CONSOLE_KURL_PROXY_IMAGE_OVERRIDE) \

cmd/installer/cli/install.go

Lines changed: 11 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ import (
2323
"github.com/replicatedhq/embedded-cluster/pkg/dryrun"
2424
"github.com/replicatedhq/embedded-cluster/pkg/goods"
2525
"github.com/replicatedhq/embedded-cluster/pkg/helpers"
26+
"github.com/replicatedhq/embedded-cluster/pkg/helpers/systemd"
2627
"github.com/replicatedhq/embedded-cluster/pkg/k0s"
28+
"github.com/replicatedhq/embedded-cluster/pkg/manager"
2729
"github.com/replicatedhq/embedded-cluster/pkg/metrics"
2830
"github.com/replicatedhq/embedded-cluster/pkg/netutils"
2931
"github.com/replicatedhq/embedded-cluster/pkg/preflights"
@@ -564,6 +566,7 @@ func gatherVersionMetadata(k0sCfg *k0sconfig.ClusterConfig, withChannelRelease b
564566
artifacts := map[string]string{
565567
"k0s": fmt.Sprintf("k0s-binaries/%s-%s", versions.K0sVersion, runtime.GOARCH),
566568
"kots": fmt.Sprintf("kots-binaries/%s-%s.tar.gz", adminconsole.KotsVersion, runtime.GOARCH),
569+
"manager": fmt.Sprintf("manager-binaries/%s-%s.tar.gz", versions.Version, runtime.GOARCH),
567570
"operator": fmt.Sprintf("operator-binaries/%s-%s.tar.gz", embeddedclusteroperator.Metadata.Version, runtime.GOARCH),
568571
"local-artifact-mirror-image": versions.LocalArtifactMirrorImage,
569572
}
@@ -573,6 +576,9 @@ func gatherVersionMetadata(k0sCfg *k0sconfig.ClusterConfig, withChannelRelease b
573576
if versions.KOTSBinaryURLOverride != "" {
574577
artifacts["kots"] = versions.KOTSBinaryURLOverride
575578
}
579+
if versions.ManagerBinaryURLOverride != "" {
580+
artifacts["manager"] = versions.ManagerBinaryURLOverride
581+
}
576582
if versions.OperatorBinaryURLOverride != "" {
577583
artifacts["operator"] = versions.OperatorBinaryURLOverride
578584
}
@@ -827,28 +833,14 @@ func installAndEnableLocalArtifactMirror() error {
827833

828834
// installAndEnableManager installs and enables the manager. This service is
829835
// responsible for managing the embedded cluster after the initial installation.
830-
func installAndEnableManager() error {
831-
materializer := goods.NewMaterializer()
832-
if err := materializer.ManagerUnitFile(); err != nil {
833-
return fmt.Errorf("unable to materialize manager unit: %w", err)
834-
}
835-
if err := writeManagerDropInFile(); err != nil {
836-
return fmt.Errorf("unable to write manager environment file: %w", err)
837-
}
838-
if _, err := helpers.RunCommand("systemctl", "daemon-reload"); err != nil {
839-
return fmt.Errorf("unable to get reload systemctl daemon: %w", err)
840-
}
841-
if _, err := helpers.RunCommand("systemctl", "start", runtimeconfig.ManagerServiceName); err != nil {
842-
return fmt.Errorf("unable to start the manager: %w", err)
843-
}
844-
if _, err := helpers.RunCommand("systemctl", "enable", runtimeconfig.ManagerServiceName); err != nil {
845-
return fmt.Errorf("unable to start the manager service: %w", err)
836+
func installAndEnableManager(ctx context.Context) error {
837+
if err := manager.Install(ctx, logrus.Debugf); err != nil {
838+
return fmt.Errorf("failed to install manager service: %w", err)
846839
}
847840
return nil
848841
}
849842

850843
const (
851-
localArtifactMirrorSystemdConfFile = "/etc/systemd/system/local-artifact-mirror.service.d/embedded-cluster.conf"
852844
localArtifactMirrorDropInFileContents = `[Service]
853845
Environment="LOCAL_ARTIFACT_MIRROR_PORT=%d"
854846
Environment="LOCAL_ARTIFACT_MIRROR_DATA_DIR=%s"
@@ -858,47 +850,16 @@ ExecStart=%s serve
858850
`
859851
)
860852

861-
var (
862-
managerSystemdConfFile = fmt.Sprintf("/etc/systemd/system/%s.service.d/embedded-cluster.conf", runtimeconfig.ManagerServiceName)
863-
managerDropInFileContents = `[Service]
864-
# Empty ExecStart= will clear out the previous ExecStart value
865-
ExecStart=
866-
ExecStart=%s start
867-
`
868-
)
869-
870853
func writeLocalArtifactMirrorDropInFile() error {
871-
dir := filepath.Dir(localArtifactMirrorSystemdConfFile)
872-
err := os.MkdirAll(dir, 0755)
873-
if err != nil {
874-
return fmt.Errorf("create directory: %w", err)
875-
}
876854
contents := fmt.Sprintf(
877855
localArtifactMirrorDropInFileContents,
878856
runtimeconfig.LocalArtifactMirrorPort(),
879857
runtimeconfig.EmbeddedClusterHomeDirectory(),
880858
runtimeconfig.PathToEmbeddedClusterBinary("local-artifact-mirror"),
881859
)
882-
err = os.WriteFile(localArtifactMirrorSystemdConfFile, []byte(contents), 0644)
883-
if err != nil {
884-
return fmt.Errorf("write file: %w", err)
885-
}
886-
return nil
887-
}
888-
889-
func writeManagerDropInFile() error {
890-
dir := filepath.Dir(managerSystemdConfFile)
891-
err := os.MkdirAll(dir, 0755)
892-
if err != nil {
893-
return fmt.Errorf("create directory: %w", err)
894-
}
895-
contents := fmt.Sprintf(
896-
managerDropInFileContents,
897-
runtimeconfig.PathToEmbeddedClusterBinary("manager"),
898-
)
899-
err = os.WriteFile(managerSystemdConfFile, []byte(contents), 0644)
860+
err := systemd.WriteDropInFile("local-artifact-mirror.service", "embedded-cluster.conf", []byte(contents))
900861
if err != nil {
901-
return fmt.Errorf("write file: %w", err)
862+
return fmt.Errorf("write drop-in file: %w", err)
902863
}
903864
return nil
904865
}

cmd/installer/cli/install2.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ func runInstall2(cmd *cobra.Command, args []string, name string, flags Install2C
262262
}
263263

264264
logrus.Debugf("installing manager")
265-
if err := installAndEnableManager(); err != nil {
265+
if err := installAndEnableManager(cmd.Context()); err != nil {
266266
metrics.ReportApplyFinished(cmd.Context(), "", flags.license, err)
267267
return err
268268
}

cmd/installer/cli/join.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ func JoinCmd(ctx context.Context, name string) *cobra.Command {
267267
}
268268

269269
logrus.Debugf("installing manager")
270-
if err := installAndEnableManager(); err != nil {
270+
if err := installAndEnableManager(cmd.Context()); err != nil {
271271
err := fmt.Errorf("unable to install and enable manager: %w", err)
272272
metrics.ReportJoinFailed(cmd.Context(), jcmd.InstallationSpec.MetricsBaseURL, jcmd.ClusterID, err)
273273
return err

cmd/installer/cli/join2.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ func runJoin2(cmd *cobra.Command, args []string, name string, flags Join2CmdFlag
163163
}
164164

165165
logrus.Debugf("installing manager")
166-
if err := installAndEnableManager(); err != nil {
166+
if err := installAndEnableManager(cmd.Context()); err != nil {
167167
err := fmt.Errorf("unable to install and enable manager: %w", err)
168168
metrics.ReportJoinFailed(cmd.Context(), jcmd.InstallationSpec.MetricsBaseURL, jcmd.ClusterID, err)
169169
return err

cmd/installer/cli/reset.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/replicatedhq/embedded-cluster/pkg/helpers"
1515
"github.com/replicatedhq/embedded-cluster/pkg/k0s"
1616
"github.com/replicatedhq/embedded-cluster/pkg/kubeutils"
17+
"github.com/replicatedhq/embedded-cluster/pkg/manager"
1718
"github.com/replicatedhq/embedded-cluster/pkg/prompts"
1819
"github.com/replicatedhq/embedded-cluster/pkg/runtimeconfig"
1920
rcutil "github.com/replicatedhq/embedded-cluster/pkg/runtimeconfig/util"
@@ -182,12 +183,8 @@ func ResetCmd(ctx context.Context, name string) *cobra.Command {
182183
return fmt.Errorf("failed to remove logs directory: %w", err)
183184
}
184185

185-
if err := helpers.RemoveAll(runtimeconfig.PathToK0sContainerdConfig()); err != nil {
186-
return fmt.Errorf("failed to remove containerd config: %w", err)
187-
}
188-
189-
if err := helpers.RemoveAll(systemdUnitFileName()); err != nil {
190-
return fmt.Errorf("failed to remove systemd unit file: %w", err)
186+
if err := manager.Uninstall(cmd.Context(), logrus.Debugf); err != nil {
187+
return fmt.Errorf("failed to uninstall manager service: %w", err)
191188
}
192189

193190
if err := helpers.RemoveAll(runtimeconfig.EmbeddedClusterOpenEBSLocalSubDir()); err != nil {

cmd/installer/cli/restore.go

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ func RestoreCmd(ctx context.Context, name string) *cobra.Command {
386386
}
387387

388388
logrus.Debugf("installing manager")
389-
if err := installAndEnableManager(); err != nil {
389+
if err := installAndEnableManager(cmd.Context()); err != nil {
390390
return fmt.Errorf("unable to install manager: %w", err)
391391
}
392392

@@ -1261,7 +1261,7 @@ func waitForDRComponent(ctx context.Context, drComponent disasterRecoveryCompone
12611261
return fmt.Errorf("unable to create kube client: %w", err)
12621262
}
12631263

1264-
if err := kubeutils.WaitForDeployment(ctx, kcli, runtimeconfig.RegistryNamespace, "registry"); err != nil {
1264+
if err := kubeutils.WaitForDeployment(ctx, kcli, runtimeconfig.RegistryNamespace, "registry", nil); err != nil {
12651265
return fmt.Errorf("unable to wait for registry to be ready: %w", err)
12661266
}
12671267
} else if drComponent == disasterRecoveryComponentECO {
@@ -1297,10 +1297,6 @@ func waitForDRComponent(ctx context.Context, drComponent disasterRecoveryCompone
12971297
// restoreFromReplicatedBackup restores a disaster recovery component from a backup.
12981298
func restoreFromReplicatedBackup(ctx context.Context, backup disasterrecovery.ReplicatedBackup, drComponent disasterRecoveryComponent) error {
12991299
if drComponent == disasterRecoveryComponentApp {
1300-
b := backup.GetAppBackup()
1301-
if b == nil {
1302-
return fmt.Errorf("unable to find app backup")
1303-
}
13041300
isImprovedDR, err := usesImprovedDR()
13051301
if err != nil {
13061302
return fmt.Errorf("failed to check if improved dr is enabled: %w", err)
@@ -1309,19 +1305,19 @@ func restoreFromReplicatedBackup(ctx context.Context, backup disasterrecovery.Re
13091305
// the vendor. Otherwise, we use the "replicated.com/disaster-recovery" label to discover
13101306
// the application resources in the cluster.
13111307
if isImprovedDR {
1308+
b := backup.GetAppBackup()
1309+
if b == nil {
1310+
return fmt.Errorf("unable to find app backup")
1311+
}
13121312
r, err := backup.GetRestore()
13131313
if err != nil {
1314-
return fmt.Errorf("failed to get restore cr from backup: %w", err)
1314+
return fmt.Errorf("failed to get restore resource from backup: %w", err)
13151315
}
13161316
err = restoreAppFromBackup(ctx, b, r)
1317-
if err != nil {
1318-
return fmt.Errorf("failed to restore app from backup using improved dr: %w", err)
1319-
}
1320-
} else {
1321-
err = restoreFromBackup(ctx, b, drComponent)
13221317
if err != nil {
13231318
return fmt.Errorf("failed to restore app from backup: %w", err)
13241319
}
1320+
return nil
13251321
}
13261322
}
13271323
b := backup.GetInfraBackup()

cmd/installer/cli/root.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import (
66
"os"
77

88
"github.com/replicatedhq/embedded-cluster/pkg/dryrun"
9+
"github.com/replicatedhq/embedded-cluster/pkg/manager"
910
"github.com/replicatedhq/embedded-cluster/pkg/metrics"
11+
"github.com/replicatedhq/embedded-cluster/pkg/release"
1012
"github.com/spf13/cobra"
1113
)
1214

@@ -32,6 +34,8 @@ func RootCmd(ctx context.Context, name string) *cobra.Command {
3234
}
3335
}
3436

37+
setManagerServiceName()
38+
3539
return nil
3640
},
3741
PersistentPostRunE: func(cmd *cobra.Command, args []string) error {
@@ -65,3 +69,15 @@ func RootCmd(ctx context.Context, name string) *cobra.Command {
6569

6670
return cmd
6771
}
72+
73+
// setManagerServiceName sets the manager service name based on the app slug in the embedded
74+
// channel release.
75+
func setManagerServiceName() {
76+
rel, err := release.GetChannelRelease()
77+
if err != nil {
78+
panic(fmt.Errorf("unable to get channel release: %w", err))
79+
}
80+
if rel != nil {
81+
manager.SetServiceName(rel.AppSlug)
82+
}
83+
}

cmd/manager/start.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,7 @@ func StartCmd(ctx context.Context, name string) *cobra.Command {
3737

3838
// connect to the KOTS WebSocket server
3939
if !disableWebsocket {
40-
go func() {
41-
go websocket.ConnectToKOTSWebSocket(ctx)
42-
}()
40+
go websocket.ConnectToKOTSWebSocket(ctx)
4341
}
4442

4543
<-ctx.Done()

0 commit comments

Comments
 (0)