diff --git a/integration/proxy/automaticupgrades_test.go b/integration/proxy/automaticupgrades_test.go index c8b371e6b4072..28fa4d3cd49e6 100644 --- a/integration/proxy/automaticupgrades_test.go +++ b/integration/proxy/automaticupgrades_test.go @@ -35,9 +35,9 @@ import ( "github.com/gravitational/teleport" "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/integration/helpers" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/basichttp" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/constants" "github.com/gravitational/teleport/lib/automaticupgrades" + "github.com/gravitational/teleport/lib/automaticupgrades/basichttp" + "github.com/gravitational/teleport/lib/automaticupgrades/constants" "github.com/gravitational/teleport/lib/service/servicecfg" "github.com/gravitational/teleport/lib/utils" ) diff --git a/integrations/kube-agent-updater/Dockerfile b/integrations/kube-agent-updater/Dockerfile index 7447adb753774..2faef6f146fac 100644 --- a/integrations/kube-agent-updater/Dockerfile +++ b/integrations/kube-agent-updater/Dockerfile @@ -10,13 +10,14 @@ WORKDIR /go/src/github.com/gravitational/teleport/integrations/kube-agent-update COPY go.mod go.mod COPY go.sum go.sum -# Download and Cache dependencies before building and copying source -# This will prevent re-downloading the operator's dependencies if they have not changed as this -# `run` layer will be cached +# We have to copy the API before `go mod download` because go.mod has a replace directive for it +COPY api/ api/ + RUN go mod download -COPY cmd/ cmd/ -COPY pkg/ pkg/ +# Copy in code +COPY lib/ lib/ +COPY integrations/kube-agent-updater/ integrations/kube-agent-updater/ ARG TARGETOS ARG TARGETARCH diff --git a/integrations/kube-agent-updater/Makefile b/integrations/kube-agent-updater/Makefile index d02aedd48aec4..207649628aced 100644 --- a/integrations/kube-agent-updater/Makefile +++ b/integrations/kube-agent-updater/Makefile @@ -15,7 +15,7 @@ test: pkg/img/cosign_fixtures_test.go .PHONY: docker-build docker-build: ## Build docker image docker buildx build --platform="$(OS)/$(ARCH)" --build-arg BUILDBOX=$(BUILDBOX) \ - -t ${IMG} --load ./ -f ./Dockerfile + -t ${IMG} --load ../.. -f ./Dockerfile .PHONY: docker-push docker-push: ## Push docker image diff --git a/integrations/kube-agent-updater/cmd/teleport-kube-agent-updater/main.go b/integrations/kube-agent-updater/cmd/teleport-kube-agent-updater/main.go index cd656ab0f9f1e..a826a67543ab0 100644 --- a/integrations/kube-agent-updater/cmd/teleport-kube-agent-updater/main.go +++ b/integrations/kube-agent-updater/cmd/teleport-kube-agent-updater/main.go @@ -42,8 +42,9 @@ import ( kubeversionupdater "github.com/gravitational/teleport/integrations/kube-agent-updater" "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/controller" "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/img" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/maintenance" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/version" + podmaintenance "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/maintenance" + "github.com/gravitational/teleport/lib/automaticupgrades/maintenance" + "github.com/gravitational/teleport/lib/automaticupgrades/version" ) var ( @@ -128,8 +129,8 @@ func main() { versionGetter := version.NewBasicHTTPVersionGetter(versionServerURL) maintenanceTriggers := maintenance.Triggers{ maintenance.NewBasicHTTPMaintenanceTrigger("critical update", versionServerURL), - maintenance.NewUnhealthyWorkloadTrigger("unhealthy pods", mgr.GetClient()), - maintenance.NewWindowTrigger("maintenance window", mgr.GetClient()), + podmaintenance.NewUnhealthyWorkloadTrigger("unhealthy pods", mgr.GetClient()), + podmaintenance.NewWindowTrigger("maintenance window", mgr.GetClient()), } var imageValidators img.Validators diff --git a/integrations/kube-agent-updater/pkg/controller/deployment.go b/integrations/kube-agent-updater/pkg/controller/deployment.go index 9f22353e684f8..bdfd4938bc400 100644 --- a/integrations/kube-agent-updater/pkg/controller/deployment.go +++ b/integrations/kube-agent-updater/pkg/controller/deployment.go @@ -30,7 +30,7 @@ import ( kclient "sigs.k8s.io/controller-runtime/pkg/client" ctrllog "sigs.k8s.io/controller-runtime/pkg/log" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/version" + "github.com/gravitational/teleport/lib/automaticupgrades/version" ) // DeploymentVersionUpdater Reconciles a podSpec by changing its image diff --git a/integrations/kube-agent-updater/pkg/controller/statefulset.go b/integrations/kube-agent-updater/pkg/controller/statefulset.go index eb23f9ced3f58..f2326b21a566f 100644 --- a/integrations/kube-agent-updater/pkg/controller/statefulset.go +++ b/integrations/kube-agent-updater/pkg/controller/statefulset.go @@ -34,7 +34,7 @@ import ( ctrllog "sigs.k8s.io/controller-runtime/pkg/log" "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/podutils" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/version" + "github.com/gravitational/teleport/lib/automaticupgrades/version" ) type StatefulSetVersionUpdater struct { diff --git a/integrations/kube-agent-updater/pkg/controller/updater.go b/integrations/kube-agent-updater/pkg/controller/updater.go index e247b03096ba0..a55df120caa6c 100644 --- a/integrations/kube-agent-updater/pkg/controller/updater.go +++ b/integrations/kube-agent-updater/pkg/controller/updater.go @@ -28,8 +28,8 @@ import ( ctrllog "sigs.k8s.io/controller-runtime/pkg/log" "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/img" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/maintenance" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/version" + "github.com/gravitational/teleport/lib/automaticupgrades/maintenance" + "github.com/gravitational/teleport/lib/automaticupgrades/version" ) type VersionUpdater struct { diff --git a/integrations/kube-agent-updater/pkg/controller/updater_test.go b/integrations/kube-agent-updater/pkg/controller/updater_test.go index 2633ad8161aa2..c97fb9d94c917 100644 --- a/integrations/kube-agent-updater/pkg/controller/updater_test.go +++ b/integrations/kube-agent-updater/pkg/controller/updater_test.go @@ -30,8 +30,8 @@ import ( core "k8s.io/api/core/v1" "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/img" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/maintenance" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/version" + "github.com/gravitational/teleport/lib/automaticupgrades/maintenance" + "github.com/gravitational/teleport/lib/automaticupgrades/version" ) const ( diff --git a/integrations/kube-agent-updater/pkg/controller/utils.go b/integrations/kube-agent-updater/pkg/controller/utils.go index e76e84a199bd5..4625b67213ef2 100644 --- a/integrations/kube-agent-updater/pkg/controller/utils.go +++ b/integrations/kube-agent-updater/pkg/controller/utils.go @@ -26,7 +26,7 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/version" + "github.com/gravitational/teleport/lib/automaticupgrades/version" ) func getWorkloadVersion(podSpec v1.PodSpec) (string, error) { diff --git a/integrations/kube-agent-updater/pkg/maintenance/unhealthy.go b/integrations/kube-agent-updater/pkg/maintenance/unhealthy.go index 97de9cab9c963..025dade287aa7 100644 --- a/integrations/kube-agent-updater/pkg/maintenance/unhealthy.go +++ b/integrations/kube-agent-updater/pkg/maintenance/unhealthy.go @@ -29,6 +29,7 @@ import ( kclient "sigs.k8s.io/controller-runtime/pkg/client" "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/podutils" + "github.com/gravitational/teleport/lib/automaticupgrades/maintenance" ) // unhealthyWorkloadTrigger allows a maintenance to start if the workload is @@ -99,7 +100,7 @@ func (u unhealthyWorkloadTrigger) isWorkloadUnhealthy(ctx context.Context, names // NewUnhealthyWorkloadTrigger triggers a maintenance if the watched workload // is unhealthy. -func NewUnhealthyWorkloadTrigger(name string, client kclient.Client) Trigger { +func NewUnhealthyWorkloadTrigger(name string, client kclient.Client) maintenance.Trigger { return unhealthyWorkloadTrigger{ name: name, Client: client, diff --git a/integrations/kube-agent-updater/pkg/maintenance/window.go b/integrations/kube-agent-updater/pkg/maintenance/window.go index 9cf6a9de40ef0..ad0dba2948512 100644 --- a/integrations/kube-agent-updater/pkg/maintenance/window.go +++ b/integrations/kube-agent-updater/pkg/maintenance/window.go @@ -29,6 +29,8 @@ import ( v1 "k8s.io/api/core/v1" kclient "sigs.k8s.io/controller-runtime/pkg/client" ctrllog "sigs.k8s.io/controller-runtime/pkg/log" + + "github.com/gravitational/teleport/lib/automaticupgrades/maintenance" ) const maintenanceScheduleKeyName = "agent-maintenance-schedule" @@ -126,7 +128,7 @@ func (w windowRepr) inWindow(now time.Time) bool { // NewWindowTrigger returns a new Trigger validating if the agent is within its // maintenance window. -func NewWindowTrigger(name string, client kclient.Client) Trigger { +func NewWindowTrigger(name string, client kclient.Client) maintenance.Trigger { return windowTrigger{ name: name, Client: client, diff --git a/integrations/kube-agent-updater/pkg/basichttp/client.go b/lib/automaticupgrades/basichttp/client.go similarity index 100% rename from integrations/kube-agent-updater/pkg/basichttp/client.go rename to lib/automaticupgrades/basichttp/client.go diff --git a/integrations/kube-agent-updater/pkg/basichttp/servermock.go b/lib/automaticupgrades/basichttp/servermock.go similarity index 100% rename from integrations/kube-agent-updater/pkg/basichttp/servermock.go rename to lib/automaticupgrades/basichttp/servermock.go diff --git a/integrations/kube-agent-updater/pkg/cache/cache.go b/lib/automaticupgrades/cache/cache.go similarity index 100% rename from integrations/kube-agent-updater/pkg/cache/cache.go rename to lib/automaticupgrades/cache/cache.go diff --git a/integrations/kube-agent-updater/pkg/cache/cache_test.go b/lib/automaticupgrades/cache/cache_test.go similarity index 100% rename from integrations/kube-agent-updater/pkg/cache/cache_test.go rename to lib/automaticupgrades/cache/cache_test.go diff --git a/integrations/kube-agent-updater/pkg/cache/error.go b/lib/automaticupgrades/cache/error.go similarity index 100% rename from integrations/kube-agent-updater/pkg/cache/error.go rename to lib/automaticupgrades/cache/error.go diff --git a/lib/automaticupgrades/channel.go b/lib/automaticupgrades/channel.go index eb6615a8d00e5..9090d5744c946 100644 --- a/lib/automaticupgrades/channel.go +++ b/lib/automaticupgrades/channel.go @@ -30,8 +30,8 @@ import ( "github.com/gravitational/teleport" "github.com/gravitational/teleport/api/client/proto" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/maintenance" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/version" + "github.com/gravitational/teleport/lib/automaticupgrades/maintenance" + "github.com/gravitational/teleport/lib/automaticupgrades/version" ) const ( diff --git a/lib/automaticupgrades/channel_test.go b/lib/automaticupgrades/channel_test.go index c59a0c8ee874e..e69e1a6ec3b68 100644 --- a/lib/automaticupgrades/channel_test.go +++ b/lib/automaticupgrades/channel_test.go @@ -26,9 +26,9 @@ import ( "github.com/gravitational/teleport" "github.com/gravitational/teleport/api/client/proto" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/constants" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/maintenance" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/version" + "github.com/gravitational/teleport/lib/automaticupgrades/constants" + "github.com/gravitational/teleport/lib/automaticupgrades/maintenance" + "github.com/gravitational/teleport/lib/automaticupgrades/version" ) const testVersion = "v1.2.3" diff --git a/integrations/kube-agent-updater/pkg/constants/constants.go b/lib/automaticupgrades/constants/constants.go similarity index 100% rename from integrations/kube-agent-updater/pkg/constants/constants.go rename to lib/automaticupgrades/constants/constants.go diff --git a/integrations/kube-agent-updater/pkg/maintenance/basichttp.go b/lib/automaticupgrades/maintenance/basichttp.go similarity index 94% rename from integrations/kube-agent-updater/pkg/maintenance/basichttp.go rename to lib/automaticupgrades/maintenance/basichttp.go index 8beef91d99d67..27ff075b290a0 100644 --- a/integrations/kube-agent-updater/pkg/maintenance/basichttp.go +++ b/lib/automaticupgrades/maintenance/basichttp.go @@ -27,9 +27,9 @@ import ( "github.com/gravitational/trace" "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/basichttp" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/cache" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/constants" + "github.com/gravitational/teleport/lib/automaticupgrades/basichttp" + "github.com/gravitational/teleport/lib/automaticupgrades/cache" + "github.com/gravitational/teleport/lib/automaticupgrades/constants" ) // basicHTTPMaintenanceClient retrieves whether the target version represents a diff --git a/integrations/kube-agent-updater/pkg/maintenance/basichttp_test.go b/lib/automaticupgrades/maintenance/basichttp_test.go similarity index 89% rename from integrations/kube-agent-updater/pkg/maintenance/basichttp_test.go rename to lib/automaticupgrades/maintenance/basichttp_test.go index 215bc7d8367fc..05281aa4dd7f4 100644 --- a/integrations/kube-agent-updater/pkg/maintenance/basichttp_test.go +++ b/lib/automaticupgrades/maintenance/basichttp_test.go @@ -27,14 +27,14 @@ import ( "github.com/gravitational/trace" "github.com/stretchr/testify/require" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/basichttp" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/constants" + basichttp2 "github.com/gravitational/teleport/lib/automaticupgrades/basichttp" + "github.com/gravitational/teleport/lib/automaticupgrades/constants" ) const basicHTTPTestPath = "/v1/cloud-stable" func Test_basicHTTPMaintenanceClient_Get(t *testing.T) { - mock := basichttp.NewServerMock(basicHTTPTestPath + "/" + constants.MaintenancePath) + mock := basichttp2.NewServerMock(basicHTTPTestPath + "/" + constants.MaintenancePath) t.Cleanup(mock.Srv.Close) serverURL, err := url.Parse(mock.Srv.URL) serverURL.Path = basicHTTPTestPath @@ -97,7 +97,7 @@ func Test_basicHTTPMaintenanceClient_Get(t *testing.T) { t.Run(tt.name, func(t *testing.T) { b := &basicHTTPMaintenanceClient{ baseURL: serverURL, - client: &basichttp.Client{Client: mock.Srv.Client()}, + client: &basichttp2.Client{Client: mock.Srv.Client()}, } mock.SetResponse(t, tt.statusCode, tt.response) result, err := b.Get(ctx) diff --git a/integrations/kube-agent-updater/pkg/maintenance/mock.go b/lib/automaticupgrades/maintenance/mock.go similarity index 100% rename from integrations/kube-agent-updater/pkg/maintenance/mock.go rename to lib/automaticupgrades/maintenance/mock.go diff --git a/integrations/kube-agent-updater/pkg/maintenance/trigger.go b/lib/automaticupgrades/maintenance/trigger.go similarity index 100% rename from integrations/kube-agent-updater/pkg/maintenance/trigger.go rename to lib/automaticupgrades/maintenance/trigger.go diff --git a/integrations/kube-agent-updater/pkg/version/basichttp.go b/lib/automaticupgrades/version/basichttp.go similarity index 92% rename from integrations/kube-agent-updater/pkg/version/basichttp.go rename to lib/automaticupgrades/version/basichttp.go index ad636ae2193b3..849ddc86108df 100644 --- a/integrations/kube-agent-updater/pkg/version/basichttp.go +++ b/lib/automaticupgrades/version/basichttp.go @@ -26,9 +26,9 @@ import ( "github.com/gravitational/trace" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/basichttp" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/cache" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/constants" + "github.com/gravitational/teleport/lib/automaticupgrades/basichttp" + "github.com/gravitational/teleport/lib/automaticupgrades/cache" + "github.com/gravitational/teleport/lib/automaticupgrades/constants" ) // basicHTTPVersionClient retrieves the version from an HTTP endpoint diff --git a/integrations/kube-agent-updater/pkg/version/basichttp_test.go b/lib/automaticupgrades/version/basichttp_test.go similarity index 89% rename from integrations/kube-agent-updater/pkg/version/basichttp_test.go rename to lib/automaticupgrades/version/basichttp_test.go index 71b695157f17c..8dd82d95352fa 100644 --- a/integrations/kube-agent-updater/pkg/version/basichttp_test.go +++ b/lib/automaticupgrades/version/basichttp_test.go @@ -27,14 +27,14 @@ import ( "github.com/gravitational/trace" "github.com/stretchr/testify/require" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/basichttp" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/constants" + basichttp2 "github.com/gravitational/teleport/lib/automaticupgrades/basichttp" + "github.com/gravitational/teleport/lib/automaticupgrades/constants" ) const basicHTTPTestPath = "/v1/cloud-stable" func Test_basicHTTPVersionClient_Get(t *testing.T) { - mock := basichttp.NewServerMock(basicHTTPTestPath + "/" + constants.VersionPath) + mock := basichttp2.NewServerMock(basicHTTPTestPath + "/" + constants.VersionPath) t.Cleanup(mock.Srv.Close) serverURL, err := url.Parse(mock.Srv.URL) serverURL.Path = basicHTTPTestPath @@ -92,7 +92,7 @@ func Test_basicHTTPVersionClient_Get(t *testing.T) { t.Run(tt.name, func(t *testing.T) { b := &basicHTTPVersionClient{ baseURL: serverURL, - client: &basichttp.Client{Client: mock.Srv.Client()}, + client: &basichttp2.Client{Client: mock.Srv.Client()}, } mock.SetResponse(t, tt.statusCode, tt.response) result, err := b.Get(ctx) diff --git a/integrations/kube-agent-updater/pkg/version/errors.go b/lib/automaticupgrades/version/errors.go similarity index 100% rename from integrations/kube-agent-updater/pkg/version/errors.go rename to lib/automaticupgrades/version/errors.go diff --git a/integrations/kube-agent-updater/pkg/version/static.go b/lib/automaticupgrades/version/static.go similarity index 95% rename from integrations/kube-agent-updater/pkg/version/static.go rename to lib/automaticupgrades/version/static.go index 81904d760b238..1fc4e6798186c 100644 --- a/integrations/kube-agent-updater/pkg/version/static.go +++ b/lib/automaticupgrades/version/static.go @@ -23,7 +23,7 @@ import ( "fmt" "strings" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/constants" + "github.com/gravitational/teleport/lib/automaticupgrades/constants" ) // StaticGetter is a fake version.Getter that return a static answer. This is used diff --git a/integrations/kube-agent-updater/pkg/version/versionget.go b/lib/automaticupgrades/version/versionget.go similarity index 100% rename from integrations/kube-agent-updater/pkg/version/versionget.go rename to lib/automaticupgrades/version/versionget.go diff --git a/integrations/kube-agent-updater/pkg/version/versionget_test.go b/lib/automaticupgrades/version/versionget_test.go similarity index 100% rename from integrations/kube-agent-updater/pkg/version/versionget_test.go rename to lib/automaticupgrades/version/versionget_test.go diff --git a/lib/web/automaticupgrades.go b/lib/web/automaticupgrades.go index 5f94b9ebbe2ed..6b7833dc629e2 100644 --- a/lib/web/automaticupgrades.go +++ b/lib/web/automaticupgrades.go @@ -28,9 +28,9 @@ import ( "github.com/gravitational/trace" "github.com/julienschmidt/httprouter" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/constants" - "github.com/gravitational/teleport/integrations/kube-agent-updater/pkg/version" "github.com/gravitational/teleport/lib/automaticupgrades" + "github.com/gravitational/teleport/lib/automaticupgrades/constants" + "github.com/gravitational/teleport/lib/automaticupgrades/version" ) const defaultChannelTimeout = 5 * time.Second