From 8e7cee64101a5b6bae3a621c7d7b47c55fca6c31 Mon Sep 17 00:00:00 2001 From: nxtcoder17 Date: Thu, 22 Feb 2024 18:11:18 +0530 Subject: [PATCH 1/2] fix(apps/infra): updates clusters and nodepool resources to be in sync with operator changes for AWS resources --- apps/infra/internal/domain/clusters.go | 12 ++++++---- apps/infra/internal/domain/nodepool.go | 1 + .../helm-charts-kloudlite-agent.yml.tpl | 24 ++++++++++++------- go.mod | 2 +- go.sum | 2 ++ 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/apps/infra/internal/domain/clusters.go b/apps/infra/internal/domain/clusters.go index 568d5259a..f278f5d50 100644 --- a/apps/infra/internal/domain/clusters.go +++ b/apps/infra/internal/domain/clusters.go @@ -210,19 +210,23 @@ func (d *domain) CreateCluster(ctx InfraContext, cluster entities.Cluster) (*ent if cluster.Spec.AvailabilityMode == "dev" { return map[string]clustersv1.MasterNodeProps{ "master-1": { - Role: "primary-master", + Role: "primary-master", + KloudliteRelease: d.env.KloudliteRelease, }, } } return map[string]clustersv1.MasterNodeProps{ "master-1": { - Role: "primary-master", + Role: "primary-master", + KloudliteRelease: d.env.KloudliteRelease, }, "master-2": { - Role: "secondary-master", + Role: "secondary-master", + KloudliteRelease: d.env.KloudliteRelease, }, "master-3": { - Role: "secondary-master", + Role: "secondary-master", + KloudliteRelease: d.env.KloudliteRelease, }, } }(), diff --git a/apps/infra/internal/domain/nodepool.go b/apps/infra/internal/domain/nodepool.go index d20d19442..72be501d2 100644 --- a/apps/infra/internal/domain/nodepool.go +++ b/apps/infra/internal/domain/nodepool.go @@ -49,6 +49,7 @@ func (d *domain) CreateNodePool(ctx InfraContext, clusterName string, nodepool e nodepool.Spec.AWS = &clustersv1.AWSNodePoolConfig{ ImageId: d.env.AWSAMI, ImageSSHUsername: "ubuntu", + AvailabilityZone: nodepool.Spec.AWS.AvailabilityZone, NvidiaGpuEnabled: nodepool.Spec.AWS.NvidiaGpuEnabled, RootVolumeType: "gp3", diff --git a/apps/infra/internal/domain/templates/helm-charts-kloudlite-agent.yml.tpl b/apps/infra/internal/domain/templates/helm-charts-kloudlite-agent.yml.tpl index 4fb14754c..a175dda19 100644 --- a/apps/infra/internal/domain/templates/helm-charts-kloudlite-agent.yml.tpl +++ b/apps/infra/internal/domain/templates/helm-charts-kloudlite-agent.yml.tpl @@ -43,8 +43,6 @@ spec: clusterInternalDNS: "cluster.local" - {{- /* kloudliteRelease: {{$kloudliteRelease}} */}} - nodeSelector: node-role.kubernetes.io/master: "true" tolerations: @@ -56,7 +54,7 @@ spec: enabled: true name: kl-agent image: - repository: ghcr.io/kloudlite/api/tenant-agent + repository: ghcr.io/kloudlite/api/tenant-agent tag: "" pullPolicy: "" nodeSelector: {} @@ -76,13 +74,19 @@ spec: nodeSelector: {} configuration: - letsEncryptSupportEmail: "support@kloudlite.io" + routers: + letsEncryptSupportEmail: "support@kloudlite.io" - wireguard: - podCIDR: 10.42.0.0/16 - svcCIDR: 10.43.0.0/16 + nodepools: + enabled: true + # must be one of aws,azure,gcp + cloudprovider: "aws" - deviceNamespace: kl-vpn-devices + {{- /* wireguard: */}} + {{- /* podCIDR: 10.42.0.0/16 */}} + {{- /* svcCIDR: 10.43.0.0/16 */}} + {{- /**/}} + {{- /* deviceNamespace: kl-vpn-devices */}} helmCharts: ingressNginx: @@ -116,3 +120,7 @@ spec: nodeSelector: {} tolerations: [] + clusterAutoscaler: + enabled: true + {{- /* configuration: */}} + {{- /* chartVersion: "v1.0.3" */}} diff --git a/go.mod b/go.mod index e044c68f9..446f7cddf 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( require ( github.com/kloudlite/container-registry-authorizer v0.0.0-20231021122509-161dc30fde55 - github.com/kloudlite/operator v1.0.3-0.20240214140630-cabaf59fe3d4 + github.com/kloudlite/operator v1.0.4-0.20240222110024-40f5cdf20fd5 github.com/nats-io/nats.go v1.31.0 github.com/onsi/ginkgo/v2 v2.12.0 github.com/onsi/gomega v1.27.10 diff --git a/go.sum b/go.sum index 525be9ff5..b48c84084 100644 --- a/go.sum +++ b/go.sum @@ -170,6 +170,8 @@ github.com/kloudlite/operator v0.0.0-20240125192852-5c63464fe989 h1:mHshQnMCWiqp github.com/kloudlite/operator v0.0.0-20240125192852-5c63464fe989/go.mod h1:eD8xKzwOVtajAglELcEHn2XL4H22ERBLT2uaisA6SzQ= github.com/kloudlite/operator v1.0.3-0.20240214140630-cabaf59fe3d4 h1:bpYACb4+ayPc9FQ4kjBLJP6O6uxIW3kLF2tJQXHAnG8= github.com/kloudlite/operator v1.0.3-0.20240214140630-cabaf59fe3d4/go.mod h1:eD8xKzwOVtajAglELcEHn2XL4H22ERBLT2uaisA6SzQ= +github.com/kloudlite/operator v1.0.4-0.20240222110024-40f5cdf20fd5 h1:4MpUX5eGryD03gMG4XuzdvfsTjSSUtJhTI4OR+vE2q0= +github.com/kloudlite/operator v1.0.4-0.20240222110024-40f5cdf20fd5/go.mod h1:kMXogvCB4qSG56WlJ5lhyL6JVeVLJ+IyyE18g/1FF1I= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= From 13de3467324e5cb9cd5e800099cbf5e090637e58 Mon Sep 17 00:00:00 2001 From: nxtcoder17 Date: Thu, 22 Feb 2024 18:21:59 +0530 Subject: [PATCH 2/2] fix(apps/console): fixes project managed service not syncing with DB --- .../nvim/__http__/infra/clusters.graphql.yml | 11 ++++++---- .../nvim/__http__/infra/nodepools.graphql.yml | 9 ++++---- .../internal/app/process-error-on-apply.go | 2 +- .../internal/app/process-resource-updates.go | 2 +- apps/console/internal/domain/api.go | 2 +- .../internal/domain/resource-mapping.go | 22 ++++++++++--------- 6 files changed, 27 insertions(+), 21 deletions(-) diff --git a/.tools/nvim/__http__/infra/clusters.graphql.yml b/.tools/nvim/__http__/infra/clusters.graphql.yml index 44f0607eb..c47dcde12 100644 --- a/.tools/nvim/__http__/infra/clusters.graphql.yml +++ b/.tools/nvim/__http__/infra/clusters.graphql.yml @@ -1,9 +1,12 @@ --- global: - clusterName: sample-cluster2 + clusterName: sample-cluster3 - providerSecretName: "aws-283277" - providerSecretNamespace: "kl-account-new-prod-team" + # providerSecretName: "aws-283277" + # providerSecretNamespace: "kl-account-new-prod-team" + + providerSecretName: "aws-creds2" + providerSecretNamespace: "kl-account-ab-641330" --- label: Create Cluster @@ -150,7 +153,7 @@ variables: --- label: Delete Cluster -query: |+ +query: |+ #graphql mutation Infra_deleteCluster($name: String!) { infra_deleteCluster(name: $name) } diff --git a/.tools/nvim/__http__/infra/nodepools.graphql.yml b/.tools/nvim/__http__/infra/nodepools.graphql.yml index c3d985b24..bea73f918 100644 --- a/.tools/nvim/__http__/infra/nodepools.graphql.yml +++ b/.tools/nvim/__http__/infra/nodepools.graphql.yml @@ -5,7 +5,7 @@ global: providerNamespace: s1 providerSecretName: provider-sample - clusterName: sample-cluster2 + clusterName: sample-cluster3 # clusterName: teshdhr-797053 --- @@ -36,7 +36,7 @@ variables: spec: minCount: 1 maxCount: 2 - targetCount: 1 + # targetCount: 1 cloudProvider: "aws" aws: availabilityZone: ap-south-1a @@ -234,11 +234,12 @@ variables: --- label: Delete NodePool -query: |+ +query: |+ #graphql mutation Infra_deleteNodePool($clusterName: String!, $poolName: String!) { infra_deleteNodePool(clusterName: $clusterName, poolName: $poolName) } variables: clusterName: "{{.clusterName}}" - poolName: spot-cpu + poolName: first + --- diff --git a/apps/console/internal/app/process-error-on-apply.go b/apps/console/internal/app/process-error-on-apply.go index 3f766e9ec..3919f4562 100644 --- a/apps/console/internal/app/process-error-on-apply.go +++ b/apps/console/internal/app/process-error-on-apply.go @@ -102,7 +102,7 @@ func ProcessErrorOnApply(consumer ErrorOnApplyConsumer, d domain.Domain, logger } case projectManagedServiceGVK.String(): { - mapping, err := d.GetProjectResourceMapping(dctx, entities.ResourceTypeProjectManagedService, errObj.ClusterName, obj.GetName()) + mapping, err := d.GetProjectResourceMapping(dctx, entities.ResourceTypeProjectManagedService, errObj.ClusterName, obj.GetNamespace(), obj.GetName()) if err != nil { return err } diff --git a/apps/console/internal/app/process-resource-updates.go b/apps/console/internal/app/process-resource-updates.go index 8c13a6d10..28c14e6c6 100644 --- a/apps/console/internal/app/process-resource-updates.go +++ b/apps/console/internal/app/process-resource-updates.go @@ -166,7 +166,7 @@ func ProcessResourceUpdates(consumer ResourceUpdateConsumer, d domain.Domain, lo return errors.NewE(err) } - mapping, err := d.GetProjectResourceMapping(dctx, entities.ResourceTypeProjectManagedService, ru.ClusterName, obj.GetName()) + mapping, err := d.GetProjectResourceMapping(dctx, entities.ResourceTypeProjectManagedService, ru.ClusterName, obj.GetNamespace(), obj.GetName()) if err != nil { return err } diff --git a/apps/console/internal/domain/api.go b/apps/console/internal/domain/api.go index 64ab32c74..4d9cab534 100644 --- a/apps/console/internal/domain/api.go +++ b/apps/console/internal/domain/api.go @@ -229,7 +229,7 @@ type Domain interface { ResyncImagePullSecret(ctx ResourceContext, name string) error GetEnvironmentResourceMapping(ctx ConsoleContext, resType entities.ResourceType, clusterName string, namespace string, name string) (*entities.ResourceMapping, error) - GetProjectResourceMapping(ctx ConsoleContext, resType entities.ResourceType, clusterName string, name string) (*entities.ResourceMapping, error) + GetProjectResourceMapping(ctx ConsoleContext, resType entities.ResourceType, clusterName string, namespace string, name string) (*entities.ResourceMapping, error) ListProjectManagedServices(ctx ConsoleContext, projectName string, mf map[string]repos.MatchFilter, pagination repos.CursorPagination) (*repos.PaginatedRecord[*entities.ProjectManagedService], error) GetProjectManagedService(ctx ConsoleContext, projectName string, serviceName string) (*entities.ProjectManagedService, error) diff --git a/apps/console/internal/domain/resource-mapping.go b/apps/console/internal/domain/resource-mapping.go index 4bed39ba8..bad82173a 100644 --- a/apps/console/internal/domain/resource-mapping.go +++ b/apps/console/internal/domain/resource-mapping.go @@ -37,7 +37,7 @@ func (d *domain) upsertEnvironmentResourceMapping(ctx ResourceContext, res resou } return d.resourceMappingRepo.Upsert(ctx, repos.Filter{ - fields.ClusterName: clusterName, + fields.ClusterName: clusterName, fields.AccountName: ctx.AccountName, fields.ProjectName: ctx.ProjectName, fields.EnvironmentName: ctx.EnvironmentName, @@ -46,7 +46,6 @@ func (d *domain) upsertEnvironmentResourceMapping(ctx ResourceContext, res resou fc.ResourceMappingResourceType: res.GetResourceType(), fc.ResourceMappingResourceName: res.GetName(), fc.ResourceMappingResourceNamespace: res.GetNamespace(), - }, &entities.ResourceMapping{ ResourceHeirarchy: entities.ResourceHeirarchyEnvironment, @@ -73,9 +72,9 @@ func (d *domain) upsertProjectResourceMapping(ctx ConsoleContext, projectName st } return d.resourceMappingRepo.Upsert(ctx, repos.Filter{ - fields.AccountName: ctx.AccountName, - fields.ClusterName: *clusterName, - fields.ProjectName: projectName, + fields.AccountName: ctx.AccountName, + fields.ClusterName: *clusterName, + fields.ProjectName: projectName, fc.ResourceMappingResourceHeirarchy: entities.ResourceHeirarchyProject, fc.ResourceMappingResourceType: res.GetResourceType(), fc.ResourceMappingResourceName: res.GetName(), @@ -96,8 +95,10 @@ func (d *domain) upsertProjectResourceMapping(ctx ConsoleContext, projectName st func (d *domain) GetEnvironmentResourceMapping(ctx ConsoleContext, resType entities.ResourceType, clusterName string, namespace string, name string) (*entities.ResourceMapping, error) { return d.resourceMappingRepo.FindOne(ctx, repos.Filter{ - fields.AccountName: ctx.AccountName, - fields.ClusterName: clusterName, + fields.AccountName: ctx.AccountName, + fields.ClusterName: clusterName, + // fields.ProjectName: "", + // fields.EnvironmentName: "", fc.ResourceMappingResourceHeirarchy: entities.ResourceHeirarchyEnvironment, fc.ResourceMappingResourceType: resType, fc.ResourceMappingResourceName: name, @@ -105,12 +106,13 @@ func (d *domain) GetEnvironmentResourceMapping(ctx ConsoleContext, resType entit }) } -func (d *domain) GetProjectResourceMapping(ctx ConsoleContext, resType entities.ResourceType, clusterName string, name string) (*entities.ResourceMapping, error) { +func (d *domain) GetProjectResourceMapping(ctx ConsoleContext, resType entities.ResourceType, clusterName string, namespace string, name string) (*entities.ResourceMapping, error) { return d.resourceMappingRepo.FindOne(ctx, repos.Filter{ - fields.AccountName: ctx.AccountName, - fields.ClusterName: clusterName, + fields.AccountName: ctx.AccountName, + fields.ClusterName: clusterName, fc.ResourceMappingResourceHeirarchy: entities.ResourceHeirarchyProject, fc.ResourceMappingResourceType: resType, fc.ResourceMappingResourceName: name, + fc.ResourceMappingResourceNamespace: namespace, }) }