Skip to content
This repository was archived by the owner on May 30, 2025. It is now read-only.

GKE Autoscaling NodePool continually resets its node count when initNodeCount is set, but nodeCount is not #516

@dilyankostov

Description

@dilyankostov

What happened?

I'm creating GKE NodePools with autoscaling enabled and initialNodeCount slightly higher than the min. However, when the nodepool scales down naturally, crossplane automatically ups it to the initial value.

Screenshot 2024-01-02 at 14 55 03

The Managed Resource sets Node Count! for some reason

Spec:                                                                                                                                   │
│   For Provider:                                                                                                                         │
│     Autoscaling:                                                                                                                        │
│       Max Node Count:    4                                                                                                              │
│       Min Node Count:    0                                                                                                              │
│     Initial Node Count:  4                                                                                                              │
│     Node Count:         4 
....

I execed into the provider-gcp pod, found the resource and did terraform init/plan which gave me

# google_container_node_pool.control-plane-xxx-xxx will be updated in-place
  ~ resource "google_container_node_pool" "control-plane-xxx-xxx" {
        id                          = "projects/xxx/locations/xxx/clusters/xxx/nodePools/xxxx"
        name                        = "xxxx"
      ~ node_count                  = 0 -> 4
        # (9 unchanged attributes hidden)

So Crossplane is setting the node_count even though I do not set the nodeCount field.

How can we reproduce it?

Create a GKE cluster with a Node pool with config

              apiVersion: container.gcp.upbound.io/v1beta1
              kind: NodePool
              spec:
                forProvider:
                  initialNodeCount: 4
                  autoscaling:
                    - maxNodeCount: 4
                      minNodeCount: 0
                  nodeConfig...

What environment did it happen in?

I've reproduced this running crossplane both on a local kind cluster and a GKE cluster.

provider-gcp-container:v0.38.1
provider-gcp-compute:v0.38.1

helmReleaseName = "upbound-stable/universal-crossplane"
helmName = "uxp"
helmRepo = "upbound-stable"
helmRepoUrl = "https://charts.upbound.io/stable"
version = "v1.14.3-up.1"

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions