Skip to content

Commit

Permalink
fix: apply crds on upgrade (#737)
Browse files Browse the repository at this point in the history
  • Loading branch information
blumamir authored Nov 2, 2023
1 parent 9e0ba9b commit 732f2f7
Show file tree
Hide file tree
Showing 8 changed files with 32 additions and 54 deletions.
28 changes: 6 additions & 22 deletions cli/cmd/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
"github.com/keyval-dev/odigos/common/consts"

"github.com/keyval-dev/odigos/cli/cmd/resources"
"github.com/keyval-dev/odigos/cli/cmd/resources/crds"
"github.com/keyval-dev/odigos/cli/pkg/kube"
"github.com/keyval-dev/odigos/cli/pkg/log"
"github.com/spf13/cobra"
Expand Down Expand Up @@ -66,17 +65,6 @@ This command will install k8s components that will auto-instrument your applicat

config := createOdigosConfigSpec()

fmt.Printf("Installing Odigos version %s in namespace %s ...\n", versionFlag, ns)

// namespace is created on "install" and is not managed by resource manager
createKubeResourceWithLogging(ctx, fmt.Sprintf("Creating namespace %s", ns),
client, cmd, ns, createNamespace)

// TODO: come up with a plan for migrating CRDs and apply it here.
// Perhaps as resource manager or a separate command.
createKubeResourceWithLogging(ctx, "Creating CRDs",
client, cmd, ns, createCRDs)

isOdigosCloud := odigosCloudApiKeyFlag != ""
if isOdigosCloud {
err = verifyOdigosCloudApiKey(odigosCloudApiKeyFlag)
Expand All @@ -86,6 +74,12 @@ This command will install k8s components that will auto-instrument your applicat
}
}

fmt.Printf("Installing Odigos version %s in namespace %s ...\n", versionFlag, ns)

// namespace is created on "install" and is not managed by resource manager
createKubeResourceWithLogging(ctx, fmt.Sprintf("Creating namespace %s", ns),
client, cmd, ns, createNamespace)

resourceManagers := resources.CreateResourceManagers(client, ns, isOdigosCloud, &odigosCloudApiKeyFlag, &config)
err = resources.ApplyResourceManagers(ctx, client, resourceManagers, "Creating")
if err != nil {
Expand Down Expand Up @@ -133,16 +127,6 @@ func createNamespace(ctx context.Context, cmd *cobra.Command, client *kube.Clien
return err
}

func createCRDs(ctx context.Context, cmd *cobra.Command, client *kube.Client, ns string) error {
for _, crd := range crds.NewCRDs() {
_, err := client.ApiExtensions.ApiextensionsV1().CustomResourceDefinitions().Create(ctx, &crd, metav1.CreateOptions{})
if err != nil {
return err
}
}
return nil
}

func createOdigosConfigSpec() odigosv1.OdigosConfigurationSpec {
return odigosv1.OdigosConfigurationSpec{
OdigosVersion: versionFlag,
Expand Down
8 changes: 3 additions & 5 deletions cli/cmd/resources/crds/collectorsgroup.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
package crds

import (
"github.com/keyval-dev/odigos/cli/pkg/labels"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func NewCollectorsGroup() apiextensionsv1.CustomResourceDefinition {
return apiextensionsv1.CustomResourceDefinition{
func NewCollectorsGroup() *apiextensionsv1.CustomResourceDefinition {
return &apiextensionsv1.CustomResourceDefinition{
TypeMeta: metav1.TypeMeta{
Kind: "CustomResourceDefinition",
APIVersion: "apiextensions.k8s.io/v1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "collectorsgroups.odigos.io",
Labels: labels.OdigosSystem,
Name: "collectorsgroups.odigos.io",
},
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
Group: "odigos.io",
Expand Down
8 changes: 3 additions & 5 deletions cli/cmd/resources/crds/configuration.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
package crds

import (
"github.com/keyval-dev/odigos/cli/pkg/labels"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func NewConfiguration() apiextensionsv1.CustomResourceDefinition {
return apiextensionsv1.CustomResourceDefinition{
func NewConfiguration() *apiextensionsv1.CustomResourceDefinition {
return &apiextensionsv1.CustomResourceDefinition{
TypeMeta: metav1.TypeMeta{
Kind: "CustomResourceDefinition",
APIVersion: "apiextensions.k8s.io/v1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "odigosconfigurations.odigos.io",
Labels: labels.OdigosSystem,
Name: "odigosconfigurations.odigos.io",
},
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
Group: "odigos.io",
Expand Down
8 changes: 3 additions & 5 deletions cli/cmd/resources/crds/destination.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
package crds

import (
"github.com/keyval-dev/odigos/cli/pkg/labels"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func NewDestination() apiextensionsv1.CustomResourceDefinition {
return apiextensionsv1.CustomResourceDefinition{
func NewDestination() *apiextensionsv1.CustomResourceDefinition {
return &apiextensionsv1.CustomResourceDefinition{
TypeMeta: metav1.TypeMeta{
Kind: "CustomResourceDefinition",
APIVersion: "apiextensions.k8s.io/v1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "destinations.odigos.io",
Labels: labels.OdigosSystem,
Name: "destinations.odigos.io",
},
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
Group: "odigos.io",
Expand Down
8 changes: 3 additions & 5 deletions cli/cmd/resources/crds/instrumentedapps.go
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
package crds

import (
"github.com/keyval-dev/odigos/cli/pkg/labels"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func NewInstrumentedApp() apiextensionsv1.CustomResourceDefinition {
return apiextensionsv1.CustomResourceDefinition{
func NewInstrumentedApp() *apiextensionsv1.CustomResourceDefinition {
return &apiextensionsv1.CustomResourceDefinition{
TypeMeta: metav1.TypeMeta{
Kind: "CustomResourceDefinition",
APIVersion: "apiextensions.k8s.io/v1",
},
ObjectMeta: metav1.ObjectMeta{
Name: "instrumentedapplications.odigos.io",
Labels: labels.OdigosSystem,
Name: "instrumentedapplications.odigos.io",
},
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
Group: "odigos.io",
Expand Down
12 changes: 0 additions & 12 deletions cli/cmd/resources/crds/root.go

This file was deleted.

5 changes: 5 additions & 0 deletions cli/cmd/resources/odigosdeployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"

odigosv1 "github.com/keyval-dev/odigos/api/odigos/v1alpha1"
"github.com/keyval-dev/odigos/cli/cmd/resources/crds"
"github.com/keyval-dev/odigos/cli/pkg/kube"
corev1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
Expand Down Expand Up @@ -105,6 +106,10 @@ func (a *odigosDeploymentResourceManager) InstallFromScratch(ctx context.Context
resources := []client.Object{
NewOdigosDeploymentConfigMap(a.ns, a.config.OdigosVersion),
NewLeaderElectionRole(a.ns),
crds.NewCollectorsGroup(),
crds.NewConfiguration(),
crds.NewDestination(),
crds.NewInstrumentedApp(),
}
return a.client.ApplyResources(ctx, a.config.ConfigVersion, resources)
}
9 changes: 9 additions & 0 deletions cli/pkg/kube/resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@ package kube

import "k8s.io/apimachinery/pkg/runtime/schema"

func newApiExtensionsV1CustomResourceDefinition() schema.GroupVersionResource {
return schema.GroupVersionResource{
Group: "apiextensions.k8s.io",
Version: "v1",
Resource: "customresourcedefinitions",
}
}

func newAppsV1Deployments() schema.GroupVersionResource {
return schema.GroupVersionResource{
Group: "apps",
Expand Down Expand Up @@ -81,6 +89,7 @@ type ResourceAndNs struct {

func GetManagedResources(odigosNamespace string) []ResourceAndNs {
return []ResourceAndNs{
{Resource: newApiExtensionsV1CustomResourceDefinition(), Namespace: ""},
{Resource: newAppsV1Deployments(), Namespace: odigosNamespace},
{Resource: newAppsV1DaemonSet(), Namespace: odigosNamespace},
{Resource: newCoreV1ConfigMaps(), Namespace: odigosNamespace},
Expand Down

0 comments on commit 732f2f7

Please sign in to comment.