kubernetes-sigs/cluster-api-provider-gcp

Error when performing clusterctl move operation because ControlPlane is not initialized

AbdullahAlShaad opened this issue · 2 comments

/kind bug

What steps did you take and what happened:

  1. Create a local kind cluster
  2. Set EXP_CAPG_GKE=true, EXP_MACHINE_POOL=true and GCP_B64ENCODED_CREDENTIALS variables
    (The GKE service account has Editor, iam.serviceAccountTokenCreator and Kubernetes Engine Admin role.)
  3. clusterctl init with --infrastructure gcp
  4. Set GCP_REGION, GCP_PROJECT, KUBERNETES_VERSION, GCP_CONTROL_PLANE_MACHINE_TYPE, GCP_NODE_MACHINE_TYPE, GCP_NETWORK_NAME, CLUSTER_NAME variables
  5. clusterctl generate cluster with --flavor gke and create cluster.
  6. Init the GKE cluster ( same as 3)
  7. clusterctl move from local kind to target GKE
  8. Notice the error below
Performing move...
Discovering Cluster API objects
Error: failed to get object graph: failed to check for provisioned infrastructure: cannot start the move operation while the control plane for "/, Kind=" default/capi-gke-quickstart is not yet initialized

The status section of the Cluster object is given below. Notice that the ControlPlaneInitialized condition is false. This is checked when performing a move operation.

status:
    conditions:
    - lastTransitionTime: "2023-03-28T03:44:18Z"
      status: "True"
      type: Ready
    - lastTransitionTime: "2023-03-28T03:38:10Z"
      message: Waiting for control plane provider to indicate the control plane has
        been initialized
      reason: WaitingForControlPlaneProviderInitialized
      severity: Info
      status: "False"
      type: ControlPlaneInitialized
    - lastTransitionTime: "2023-03-28T03:44:18Z"
      status: "True"
      type: ControlPlaneReady
    - lastTransitionTime: "2023-03-28T03:38:12Z"
      status: "True"
      type: InfrastructureReady
    controlPlaneReady: true
    failureDomains:
      us-east1-b: {}
      us-east1-c: {}
      us-east1-d: {}
    infrastructureReady: true
    observedGeneration: 2
    phase: Provisioned

The status section of the GCPManagedControlPlane object is given below. Notice that GKEControlPlaneCreating and GKEControlPlaneUpdating conditions are false.

   conditions:
    - lastTransitionTime: "2023-03-28T03:44:18Z"
      status: "True"
      type: Ready
    - lastTransitionTime: "2023-03-28T03:44:18Z"
      reason: GKEControlPlaneCreated
      severity: Info
      status: "False"
      type: GKEControlPlaneCreating
    - lastTransitionTime: "2023-03-28T03:44:18Z"
      status: "True"
      type: GKEControlPlaneReady
    - lastTransitionTime: "2023-03-28T03:44:18Z"
      reason: GKEControlPlaneUpdated
      severity: Info
      status: "False"
      type: GKEControlPlaneUpdating
    currentVersion: 1.24.9-gke.3200
    ready: true

What did you expect to happen:
I expect to move the resources from kind cluster to GKE cluster using the clusterctl move command.

Anything else you would like to add:
Additionally, I am not sure why the conditions are false here.

Environment:

  • Cluster-api version: GCP version v1.3.0
  • Minikube/KIND version: kind v0.17.0 go1.19.2 linux/amd64
  • Kubernetes version: (use kubectl version): Client Version: v1.24.0
  • OS (e.g. from /etc/os-release): Ubuntu 22.04.2 LTS

thanks for the report.
are you willing to work on this bug and provide a fix?

Yes.