Skip to content

Commit

Permalink
feat(v2): migration from v1 (#1681)
Browse files Browse the repository at this point in the history
* feat(v2): migration from v1

* f

* f

* upload manager binary

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* feedback

* no need for service account

* do not delete charts

* use correct name for manager service

* f

* f

* pkg/manager tests

* pkg/manager tests

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* f

* feat(ec): migration from v1 to v2
  • Loading branch information
emosbaugh authored Jan 17, 2025
1 parent 0278c7a commit 0e973cc
Show file tree
Hide file tree
Showing 75 changed files with 3,927 additions and 337 deletions.
1 change: 1 addition & 0 deletions .github/workflows/release-prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ jobs:
VERSION=${{ needs.get-tag.outputs.tag-name }} \
LOCAL_ARTIFACT_MIRROR_IMAGE=proxy.replicated.com/anonymous/${{ needs.publish-images.outputs.local-artifact-mirror }}
tar -C output/bin -czvf build/embedded-cluster-linux-amd64.tgz embedded-cluster
tar -C output/bins -czvf build/manager-linux-amd64.tgz manager
- name: Output Metadata
run: |
Expand Down
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ LOCAL_ARTIFACT_MIRROR_IMAGE ?= proxy.replicated.com/anonymous/replicated/embedde
# These are used to override the binary urls in dev and e2e tests
METADATA_K0S_BINARY_URL_OVERRIDE =
METADATA_KOTS_BINARY_URL_OVERRIDE =
METADATA_MANAGER_BINARY_URL_OVERRIDE =
METADATA_OPERATOR_BINARY_URL_OVERRIDE =

ifeq ($(K0S_VERSION),v1.30.5+k0s.0-ec.1)
Expand All @@ -49,6 +50,7 @@ LD_FLAGS = \
-X github.com/replicatedhq/embedded-cluster/pkg/versions.LocalArtifactMirrorImage=$(LOCAL_ARTIFACT_MIRROR_IMAGE) \
-X github.com/replicatedhq/embedded-cluster/pkg/versions.K0sBinaryURLOverride=$(METADATA_K0S_BINARY_URL_OVERRIDE) \
-X github.com/replicatedhq/embedded-cluster/pkg/versions.KOTSBinaryURLOverride=$(METADATA_KOTS_BINARY_URL_OVERRIDE) \
-X github.com/replicatedhq/embedded-cluster/pkg/versions.ManagerBinaryURLOverride=$(METADATA_MANAGER_BINARY_URL_OVERRIDE) \
-X github.com/replicatedhq/embedded-cluster/pkg/versions.OperatorBinaryURLOverride=$(METADATA_OPERATOR_BINARY_URL_OVERRIDE) \
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.ChartRepoOverride=$(ADMIN_CONSOLE_CHART_REPO_OVERRIDE) \
-X github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole.KurlProxyImageOverride=$(ADMIN_CONSOLE_KURL_PROXY_IMAGE_OVERRIDE) \
Expand Down
61 changes: 11 additions & 50 deletions cmd/installer/cli/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ import (
"github.com/replicatedhq/embedded-cluster/pkg/dryrun"
"github.com/replicatedhq/embedded-cluster/pkg/goods"
"github.com/replicatedhq/embedded-cluster/pkg/helpers"
"github.com/replicatedhq/embedded-cluster/pkg/helpers/systemd"
"github.com/replicatedhq/embedded-cluster/pkg/k0s"
"github.com/replicatedhq/embedded-cluster/pkg/manager"
"github.com/replicatedhq/embedded-cluster/pkg/metrics"
"github.com/replicatedhq/embedded-cluster/pkg/netutils"
"github.com/replicatedhq/embedded-cluster/pkg/preflights"
Expand Down Expand Up @@ -564,6 +566,7 @@ func gatherVersionMetadata(k0sCfg *k0sconfig.ClusterConfig, withChannelRelease b
artifacts := map[string]string{
"k0s": fmt.Sprintf("k0s-binaries/%s-%s", versions.K0sVersion, runtime.GOARCH),
"kots": fmt.Sprintf("kots-binaries/%s-%s.tar.gz", adminconsole.KotsVersion, runtime.GOARCH),
"manager": fmt.Sprintf("manager-binaries/%s-%s.tar.gz", versions.Version, runtime.GOARCH),
"operator": fmt.Sprintf("operator-binaries/%s-%s.tar.gz", embeddedclusteroperator.Metadata.Version, runtime.GOARCH),
"local-artifact-mirror-image": versions.LocalArtifactMirrorImage,
}
Expand All @@ -573,6 +576,9 @@ func gatherVersionMetadata(k0sCfg *k0sconfig.ClusterConfig, withChannelRelease b
if versions.KOTSBinaryURLOverride != "" {
artifacts["kots"] = versions.KOTSBinaryURLOverride
}
if versions.ManagerBinaryURLOverride != "" {
artifacts["manager"] = versions.ManagerBinaryURLOverride
}
if versions.OperatorBinaryURLOverride != "" {
artifacts["operator"] = versions.OperatorBinaryURLOverride
}
Expand Down Expand Up @@ -827,28 +833,14 @@ func installAndEnableLocalArtifactMirror() error {

// installAndEnableManager installs and enables the manager. This service is
// responsible for managing the embedded cluster after the initial installation.
func installAndEnableManager() error {
materializer := goods.NewMaterializer()
if err := materializer.ManagerUnitFile(); err != nil {
return fmt.Errorf("unable to materialize manager unit: %w", err)
}
if err := writeManagerDropInFile(); err != nil {
return fmt.Errorf("unable to write manager environment file: %w", err)
}
if _, err := helpers.RunCommand("systemctl", "daemon-reload"); err != nil {
return fmt.Errorf("unable to get reload systemctl daemon: %w", err)
}
if _, err := helpers.RunCommand("systemctl", "start", runtimeconfig.ManagerServiceName); err != nil {
return fmt.Errorf("unable to start the manager: %w", err)
}
if _, err := helpers.RunCommand("systemctl", "enable", runtimeconfig.ManagerServiceName); err != nil {
return fmt.Errorf("unable to start the manager service: %w", err)
func installAndEnableManager(ctx context.Context) error {
if err := manager.Install(ctx, logrus.Debugf); err != nil {
return fmt.Errorf("failed to install manager service: %w", err)
}
return nil
}

const (
localArtifactMirrorSystemdConfFile = "/etc/systemd/system/local-artifact-mirror.service.d/embedded-cluster.conf"
localArtifactMirrorDropInFileContents = `[Service]
Environment="LOCAL_ARTIFACT_MIRROR_PORT=%d"
Environment="LOCAL_ARTIFACT_MIRROR_DATA_DIR=%s"
Expand All @@ -858,47 +850,16 @@ ExecStart=%s serve
`
)

var (
managerSystemdConfFile = fmt.Sprintf("/etc/systemd/system/%s.service.d/embedded-cluster.conf", runtimeconfig.ManagerServiceName)
managerDropInFileContents = `[Service]
# Empty ExecStart= will clear out the previous ExecStart value
ExecStart=
ExecStart=%s start
`
)

func writeLocalArtifactMirrorDropInFile() error {
dir := filepath.Dir(localArtifactMirrorSystemdConfFile)
err := os.MkdirAll(dir, 0755)
if err != nil {
return fmt.Errorf("create directory: %w", err)
}
contents := fmt.Sprintf(
localArtifactMirrorDropInFileContents,
runtimeconfig.LocalArtifactMirrorPort(),
runtimeconfig.EmbeddedClusterHomeDirectory(),
runtimeconfig.PathToEmbeddedClusterBinary("local-artifact-mirror"),
)
err = os.WriteFile(localArtifactMirrorSystemdConfFile, []byte(contents), 0644)
if err != nil {
return fmt.Errorf("write file: %w", err)
}
return nil
}

func writeManagerDropInFile() error {
dir := filepath.Dir(managerSystemdConfFile)
err := os.MkdirAll(dir, 0755)
if err != nil {
return fmt.Errorf("create directory: %w", err)
}
contents := fmt.Sprintf(
managerDropInFileContents,
runtimeconfig.PathToEmbeddedClusterBinary("manager"),
)
err = os.WriteFile(managerSystemdConfFile, []byte(contents), 0644)
err := systemd.WriteDropInFile("local-artifact-mirror.service", "embedded-cluster.conf", []byte(contents))
if err != nil {
return fmt.Errorf("write file: %w", err)
return fmt.Errorf("write drop-in file: %w", err)
}
return nil
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/installer/cli/install2.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ func runInstall2(cmd *cobra.Command, args []string, name string, flags Install2C
}

logrus.Debugf("installing manager")
if err := installAndEnableManager(); err != nil {
if err := installAndEnableManager(cmd.Context()); err != nil {
metrics.ReportApplyFinished(cmd.Context(), "", flags.license, err)
return err
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/installer/cli/join.go
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ func JoinCmd(ctx context.Context, name string) *cobra.Command {
}

logrus.Debugf("installing manager")
if err := installAndEnableManager(); err != nil {
if err := installAndEnableManager(cmd.Context()); err != nil {
err := fmt.Errorf("unable to install and enable manager: %w", err)
metrics.ReportJoinFailed(cmd.Context(), jcmd.InstallationSpec.MetricsBaseURL, jcmd.ClusterID, err)
return err
Expand Down
2 changes: 1 addition & 1 deletion cmd/installer/cli/join2.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ func runJoin2(cmd *cobra.Command, args []string, name string, flags Join2CmdFlag
}

logrus.Debugf("installing manager")
if err := installAndEnableManager(); err != nil {
if err := installAndEnableManager(cmd.Context()); err != nil {
err := fmt.Errorf("unable to install and enable manager: %w", err)
metrics.ReportJoinFailed(cmd.Context(), jcmd.InstallationSpec.MetricsBaseURL, jcmd.ClusterID, err)
return err
Expand Down
9 changes: 3 additions & 6 deletions cmd/installer/cli/reset.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"github.com/replicatedhq/embedded-cluster/pkg/helpers"
"github.com/replicatedhq/embedded-cluster/pkg/k0s"
"github.com/replicatedhq/embedded-cluster/pkg/kubeutils"
"github.com/replicatedhq/embedded-cluster/pkg/manager"
"github.com/replicatedhq/embedded-cluster/pkg/prompts"
"github.com/replicatedhq/embedded-cluster/pkg/runtimeconfig"
rcutil "github.com/replicatedhq/embedded-cluster/pkg/runtimeconfig/util"
Expand Down Expand Up @@ -182,12 +183,8 @@ func ResetCmd(ctx context.Context, name string) *cobra.Command {
return fmt.Errorf("failed to remove logs directory: %w", err)
}

if err := helpers.RemoveAll(runtimeconfig.PathToK0sContainerdConfig()); err != nil {
return fmt.Errorf("failed to remove containerd config: %w", err)
}

if err := helpers.RemoveAll(systemdUnitFileName()); err != nil {
return fmt.Errorf("failed to remove systemd unit file: %w", err)
if err := manager.Uninstall(cmd.Context(), logrus.Debugf); err != nil {
return fmt.Errorf("failed to uninstall manager service: %w", err)
}

if err := helpers.RemoveAll(runtimeconfig.EmbeddedClusterOpenEBSLocalSubDir()); err != nil {
Expand Down
4 changes: 2 additions & 2 deletions cmd/installer/cli/restore.go
Original file line number Diff line number Diff line change
Expand Up @@ -386,7 +386,7 @@ func RestoreCmd(ctx context.Context, name string) *cobra.Command {
}

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

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

if err := kubeutils.WaitForDeployment(ctx, kcli, runtimeconfig.RegistryNamespace, "registry"); err != nil {
if err := kubeutils.WaitForDeployment(ctx, kcli, runtimeconfig.RegistryNamespace, "registry", nil); err != nil {
return fmt.Errorf("unable to wait for registry to be ready: %w", err)
}
} else if drComponent == disasterRecoveryComponentECO {
Expand Down
16 changes: 16 additions & 0 deletions cmd/installer/cli/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import (
"os"

"github.com/replicatedhq/embedded-cluster/pkg/dryrun"
"github.com/replicatedhq/embedded-cluster/pkg/manager"
"github.com/replicatedhq/embedded-cluster/pkg/metrics"
"github.com/replicatedhq/embedded-cluster/pkg/release"
"github.com/spf13/cobra"
)

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

setManagerServiceName()

return nil
},
PersistentPostRunE: func(cmd *cobra.Command, args []string) error {
Expand Down Expand Up @@ -65,3 +69,15 @@ func RootCmd(ctx context.Context, name string) *cobra.Command {

return cmd
}

// setManagerServiceName sets the manager service name based on the app slug in the embedded
// channel release.
func setManagerServiceName() {
rel, err := release.GetChannelRelease()
if err != nil {
panic(fmt.Errorf("unable to get channel release: %w", err))
}
if rel != nil {
manager.SetServiceName(rel.AppSlug)
}
}
4 changes: 1 addition & 3 deletions cmd/manager/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@ func StartCmd(ctx context.Context, name string) *cobra.Command {

// connect to the KOTS WebSocket server
if !disableWebsocket {
go func() {
go websocket.ConnectToKOTSWebSocket(ctx)
}()
go websocket.ConnectToKOTSWebSocket(ctx)
}

<-ctx.Done()
Expand Down
47 changes: 24 additions & 23 deletions dagger/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,43 +6,44 @@ require (
github.com/99designs/gqlgen v0.17.55
github.com/Khan/genqlient v0.7.0
github.com/vektah/gqlparser/v2 v2.5.17
go.opentelemetry.io/otel v1.32.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240518090000-14441aefdf88
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.5.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0
go.opentelemetry.io/otel/log v0.5.0
go.opentelemetry.io/otel/sdk v1.32.0
go.opentelemetry.io/otel/sdk/log v0.5.0
go.opentelemetry.io/otel/trace v1.32.0
go.opentelemetry.io/otel v1.33.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0
go.opentelemetry.io/otel/log v0.8.0
go.opentelemetry.io/otel/sdk v1.33.0
go.opentelemetry.io/otel/sdk/log v0.8.0
go.opentelemetry.io/otel/trace v1.33.0
go.opentelemetry.io/proto/otlp v1.3.1
golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f
golang.org/x/sync v0.10.0
google.golang.org/grpc v1.67.1
google.golang.org/grpc v1.68.0
)

require go.opentelemetry.io/auto/sdk v1.1.0 // indirect

require (
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
github.com/sosodev/duration v1.3.1 // indirect
github.com/stretchr/testify v1.10.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.29.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.29.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 // indirect
go.opentelemetry.io/otel/metric v1.32.0
go.opentelemetry.io/otel/sdk/metric v1.29.0
golang.org/x/net v0.31.0 // indirect
golang.org/x/sys v0.28.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 // indirect
go.opentelemetry.io/otel/metric v1.33.0
go.opentelemetry.io/otel/sdk/metric v1.32.0
golang.org/x/net v0.34.0 // indirect
golang.org/x/sys v0.29.0 // indirect
golang.org/x/text v0.21.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20241007155032-5fefd90f89a9 // indirect
google.golang.org/protobuf v1.35.1 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect
google.golang.org/protobuf v1.36.1 // indirect
)

replace go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc => go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240518090000-14441aefdf88
Expand Down
Loading

0 comments on commit 0e973cc

Please sign in to comment.