Skip to content

Conversation

@Pearl1594
Copy link
Contributor

depends on apache/cloudstack-go#125

So update go.mod to point to the local repo (cloudstack-go)

@Pearl1594 Pearl1594 linked an issue Sep 24, 2025 that may be closed by this pull request
@kiranchavala kiranchavala added this to the v0.6.0 milestone Sep 25, 2025
@kiranchavala
Copy link
Collaborator

@Pearl1594 could you please add documentaions for the new parameters

Copy link
Collaborator

@kiranchavala kiranchavala left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, Tested locally by pointing to local go

Able to create a cks cluster with different offerings and a specified cni configuration

resource "cloudstack_kubernetes_cluster" "advanced" {
  name               = "production-cluster"
  
  kubernetes_version = "1494ff8f-5608-4830-926d-6ead1e95fc6d"
  service_offering   = "CKS"
  # Cluster configuration
  size               = 1
 
  # Mixed node offerings
  node_offerings = {
    "control" = "CKS2"
    "worker"  = "CKS"
    
  }
  network_id = "2f402736-5ee5-41c7-ae3b-82cd5882cbe0"
  zone= "05d9863d-bd94-41c2-bba8-251aab44637a"

 # CNI Configuration
  cni_configuration_id = "b6bbef6a-1a27-4b45-b312-56106632480f"
  cni_config_details = {
    "AS_NUMBER"                  = "64512"
    "peer_ip_address" = "192.168.1.10"
    "peer_as_number"  = "64513"
  }
  
}

terraform apply

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # cloudstack_kubernetes_cluster.advanced will be created
  + resource "cloudstack_kubernetes_cluster" "advanced" {
      + cni_config_details   = {
          + "AS_NUMBER"       = "64512"
          + "peer_as_number"  = "64513"
          + "peer_ip_address" = "192.168.1.10"
        }
      + cni_configuration_id = "b6bbef6a-1a27-4b45-b312-56106632480f"
      + control_nodes_size   = (known after apply)
      + description          = (known after apply)
      + id                   = (known after apply)
      + ip_address           = (known after apply)
      + kubernetes_version   = "1494ff8f-5608-4830-926d-6ead1e95fc6d"
      + name                 = "production-cluster"
      + network_id           = "2f402736-5ee5-41c7-ae3b-82cd5882cbe0"
      + node_offerings       = {
          + "control" = "CKS2"
          + "worker"  = "CKS"
        }
      + noderootdisksize     = 8
      + service_offering     = "CKS"
      + size                 = 1
      + state                = (known after apply)
      + zone                 = "05d9863d-bd94-41c2-bba8-251aab44637a"
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

cloudstack_kubernetes_cluster.advanced: Creating...
cloudstack_kubernetes_cluster.advanced: Still creating... [00m10s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [00m20s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [00m30s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [00m40s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [00m50s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [01m00s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [01m10s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [01m20s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [01m30s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [01m40s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [01m50s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [02m00s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [02m10s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [02m20s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [02m30s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [02m40s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [02m50s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [03m00s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [03m10s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [03m20s elapsed]
cloudstack_kubernetes_cluster.advanced: Still creating... [03m30s elapsed]
cloudstack_kubernetes_cluster.advanced: Creation complete after 3m38s [id=548498c9-9f1a-4ba1-b997-9549de311c2e]

resource "cloudstack_cni_configuration" "calico-terraform" {
  name = "calico-cni-config-terraform12"

  cni_config = "ICNjbG91ZC1jb25maWcKICAtIGZvciBpIGluIHsxLi4zfTsgZG8gY3VybCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcHJvamVjdGNhbGljby9jYWxpY28vdjMuMjguMC9tYW5pZmVzdHMvY2FsaWNvLnlhbWwgLW8gL2hvbWUvY2xvdWQvY2FsaWNvLnlhbWwgJiYgYnJlYWsgfHwgc2xlZXAgNTsgZG9uZQogIC0gdW50aWwgWyAtZiAvaG9tZS9jbG91ZC9zdWNjZXNzIF07IGRvIHNsZWVwIDU7IGRvbmUKICAtIGVjaG8gIkt1YmVjdGwgYXBwbHkgZmlsZSIKICAtIGZvciBpIGluIHsxLi4zfTsgZG8gc3VkbyAvb3B0L2Jpbi9rdWJlY3RsIGNyZWF0ZSAtZiAvaG9tZS9jbG91ZC9jYWxpY28ueWFtbCAmJiBicmVhayB8fCBzbGVlcCA1OyBkb25lCiAgLSBleHBvcnQgUEFUSD0kUEFUSDovaG9tZS9jbG91ZAogIC0gfAogICAgY2F0IDw8ICdFT0YnID4gL2hvbWUvY2xvdWQvY3JlYXRlLWNvbmZpZ3Muc2gKICAgICMhL2Jpbi9iYXNoCiAgICBjYXQgPDwgJ0VPTCcgPiAvaG9tZS9jbG91ZC9iZ3AtY29uZmlnLnlhbWwKICAgIGFwaVZlcnNpb246IGNyZC5wcm9qZWN0Y2FsaWNvLm9yZy92MQogICAga2luZDogQkdQQ29uZmlndXJhdGlvbgogICAgbWV0YWRhdGE6CiAgICAgIG5hbWU6IGRlZmF1bHQKICAgIHNwZWM6CiAgICAgIGxvZ1NldmVyaXR5U2NyZWVuOiBEZWJ1ZwogICAgICBhc051bWJlcjoge3sgQVNfTlVNQkVSIH19CiAgICBFT0wKICAgIGNhdCA8PCAnRU9MJyA+IC9ob21lL2Nsb3VkL2JncC1wZWVyLnlhbWwKICAgIGFwaVZlcnNpb246IGNyZC5wcm9qZWN0Y2FsaWNvLm9yZy92MQogICAga2luZDogQkdQUGVlcgogICAgbWV0YWRhdGE6CiAgICAgIG5hbWU6IGJncC1wZWVyLTEKICAgIHNwZWM6CiAgICAgIHBlZXJJUDoge3sgZHMubWV0YV9kYXRhLnBlZXJfaXBfYWRkcmVzcyB9fQogICAgICBhc051bWJlcjoge3sgZHMubWV0YV9kYXRhLnBlZXJfYXNfbnVtYmVyIH19CiAgICBFT0wKICAgIEVPRgogIC0gY2htb2QgK3ggL2hvbWUvY2xvdWQvY3JlYXRlLWNvbmZpZ3Muc2gKICAtIC9ob21lL2Nsb3VkL2NyZWF0ZS1jb25maWdzLnNoCiAgLSBmb3IgaSBpbiB7MS4uM307IGRvIHN1ZG8gL29wdC9iaW4va3ViZWN0bCBhcHBseSAtZiAvaG9tZS9jbG91ZC9iZ3AtY29uZmlnLnlhbWwgJiYgYnJlYWsgfHwgc2xlZXAgNTsgZG9uZQogIC0gZm9yIGkgaW4gezEuLjN9OyBkbyBzdWRvIC9vcHQvYmluL2t1YmVjdGwgYXBwbHkgLWYgL2hvbWUvY2xvdWQvYmdwLXBlZXIueWFtbCAmJiBicmVhayB8fCBzbGVlcCA1OyBkb25l"
  
  

  params = [
    "AS_NUMBER",
    "peer_ip_address",
    "peer_as_number"
  ]
}

resource "cloudstack_cni_configuration" "calico-terraform" {
  name = "calico-cni-config-terraform12"

  cni_config = "ICNjbG91ZC1jb25maWcKICAtIGZvciBpIGluIHsxLi4zfTsgZG8gY3VybCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcHJvamVjdGNhbGljby9jYWxpY28vdjMuMjguMC9tYW5pZmVzdHMvY2FsaWNvLnlhbWwgLW8gL2hvbWUvY2xvdWQvY2FsaWNvLnlhbWwgJiYgYnJlYWsgfHwgc2xlZXAgNTsgZG9uZQogIC0gdW50aWwgWyAtZiAvaG9tZS9jbG91ZC9zdWNjZXNzIF07IGRvIHNsZWVwIDU7IGRvbmUKICAtIGVjaG8gIkt1YmVjdGwgYXBwbHkgZmlsZSIKICAtIGZvciBpIGluIHsxLi4zfTsgZG8gc3VkbyAvb3B0L2Jpbi9rdWJlY3RsIGNyZWF0ZSAtZiAvaG9tZS9jbG91ZC9jYWxpY28ueWFtbCAmJiBicmVhayB8fCBzbGVlcCA1OyBkb25lCiAgLSBleHBvcnQgUEFUSD0kUEFUSDovaG9tZS9jbG91ZAogIC0gfAogICAgY2F0IDw8ICdFT0YnID4gL2hvbWUvY2xvdWQvY3JlYXRlLWNvbmZpZ3Muc2gKICAgICMhL2Jpbi9iYXNoCiAgICBjYXQgPDwgJ0VPTCcgPiAvaG9tZS9jbG91ZC9iZ3AtY29uZmlnLnlhbWwKICAgIGFwaVZlcnNpb246IGNyZC5wcm9qZWN0Y2FsaWNvLm9yZy92MQogICAga2luZDogQkdQQ29uZmlndXJhdGlvbgogICAgbWV0YWRhdGE6CiAgICAgIG5hbWU6IGRlZmF1bHQKICAgIHNwZWM6CiAgICAgIGxvZ1NldmVyaXR5U2NyZWVuOiBEZWJ1ZwogICAgICBhc051bWJlcjoge3sgQVNfTlVNQkVSIH19CiAgICBFT0wKICAgIGNhdCA8PCAnRU9MJyA+IC9ob21lL2Nsb3VkL2JncC1wZWVyLnlhbWwKICAgIGFwaVZlcnNpb246IGNyZC5wcm9qZWN0Y2FsaWNvLm9yZy92MQogICAga2luZDogQkdQUGVlcgogICAgbWV0YWRhdGE6CiAgICAgIG5hbWU6IGJncC1wZWVyLTEKICAgIHNwZWM6CiAgICAgIHBlZXJJUDoge3sgZHMubWV0YV9kYXRhLnBlZXJfaXBfYWRkcmVzcyB9fQogICAgICBhc051bWJlcjoge3sgZHMubWV0YV9kYXRhLnBlZXJfYXNfbnVtYmVyIH19CiAgICBFT0wKICAgIEVPRgogIC0gY2htb2QgK3ggL2hvbWUvY2xvdWQvY3JlYXRlLWNvbmZpZ3Muc2gKICAtIC9ob21lL2Nsb3VkL2NyZWF0ZS1jb25maWdzLnNoCiAgLSBmb3IgaSBpbiB7MS4uM307IGRvIHN1ZG8gL29wdC9iaW4va3ViZWN0bCBhcHBseSAtZiAvaG9tZS9jbG91ZC9iZ3AtY29uZmlnLnlhbWwgJiYgYnJlYWsgfHwgc2xlZXAgNTsgZG9uZQogIC0gZm9yIGkgaW4gezEuLjN9OyBkbyBzdWRvIC9vcHQvYmluL2t1YmVjdGwgYXBwbHkgLWYgL2hvbWUvY2xvdWQvYmdwLXBlZXIueWFtbCAmJiBicmVhayB8fCBzbGVlcCA1OyBkb25l"
  
  

  params = [
    "AS_NUMBER",
    "peer_ip_address",
    "peer_as_number"
  ]
}


terraform apply

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # cloudstack_cni_configuration.calico-terraform will be created
  + resource "cloudstack_cni_configuration" "calico-terraform" {
      + cni_config = "ICNjbG91ZC1jb25maWcKICAtIGZvciBpIGluIHsxLi4zfTsgZG8gY3VybCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcHJvamVjdGNhbGljby9jYWxpY28vdjMuMjguMC9tYW5pZmVzdHMvY2FsaWNvLnlhbWwgLW8gL2hvbWUvY2xvdWQvY2FsaWNvLnlhbWwgJiYgYnJlYWsgfHwgc2xlZXAgNTsgZG9uZQogIC0gdW50aWwgWyAtZiAvaG9tZS9jbG91ZC9zdWNjZXNzIF07IGRvIHNsZWVwIDU7IGRvbmUKICAtIGVjaG8gIkt1YmVjdGwgYXBwbHkgZmlsZSIKICAtIGZvciBpIGluIHsxLi4zfTsgZG8gc3VkbyAvb3B0L2Jpbi9rdWJlY3RsIGNyZWF0ZSAtZiAvaG9tZS9jbG91ZC9jYWxpY28ueWFtbCAmJiBicmVhayB8fCBzbGVlcCA1OyBkb25lCiAgLSBleHBvcnQgUEFUSD0kUEFUSDovaG9tZS9jbG91ZAogIC0gfAogICAgY2F0IDw8ICdFT0YnID4gL2hvbWUvY2xvdWQvY3JlYXRlLWNvbmZpZ3Muc2gKICAgICMhL2Jpbi9iYXNoCiAgICBjYXQgPDwgJ0VPTCcgPiAvaG9tZS9jbG91ZC9iZ3AtY29uZmlnLnlhbWwKICAgIGFwaVZlcnNpb246IGNyZC5wcm9qZWN0Y2FsaWNvLm9yZy92MQogICAga2luZDogQkdQQ29uZmlndXJhdGlvbgogICAgbWV0YWRhdGE6CiAgICAgIG5hbWU6IGRlZmF1bHQKICAgIHNwZWM6CiAgICAgIGxvZ1NldmVyaXR5U2NyZWVuOiBEZWJ1ZwogICAgICBhc051bWJlcjoge3sgQVNfTlVNQkVSIH19CiAgICBFT0wKICAgIGNhdCA8PCAnRU9MJyA+IC9ob21lL2Nsb3VkL2JncC1wZWVyLnlhbWwKICAgIGFwaVZlcnNpb246IGNyZC5wcm9qZWN0Y2FsaWNvLm9yZy92MQogICAga2luZDogQkdQUGVlcgogICAgbWV0YWRhdGE6CiAgICAgIG5hbWU6IGJncC1wZWVyLTEKICAgIHNwZWM6CiAgICAgIHBlZXJJUDoge3sgZHMubWV0YV9kYXRhLnBlZXJfaXBfYWRkcmVzcyB9fQogICAgICBhc051bWJlcjoge3sgZHMubWV0YV9kYXRhLnBlZXJfYXNfbnVtYmVyIH19CiAgICBFT0wKICAgIEVPRgogIC0gY2htb2QgK3ggL2hvbWUvY2xvdWQvY3JlYXRlLWNvbmZpZ3Muc2gKICAtIC9ob21lL2Nsb3VkL2NyZWF0ZS1jb25maWdzLnNoCiAgLSBmb3IgaSBpbiB7MS4uM307IGRvIHN1ZG8gL29wdC9iaW4va3ViZWN0bCBhcHBseSAtZiAvaG9tZS9jbG91ZC9iZ3AtY29uZmlnLnlhbWwgJiYgYnJlYWsgfHwgc2xlZXAgNTsgZG9uZQogIC0gZm9yIGkgaW4gezEuLjN9OyBkbyBzdWRvIC9vcHQvYmluL2t1YmVjdGwgYXBwbHkgLWYgL2hvbWUvY2xvdWQvYmdwLXBlZXIueWFtbCAmJiBicmVhayB8fCBzbGVlcCA1OyBkb25l"
      + id         = (known after apply)
      + name       = "calico-cni-config-terraform11"
      + params     = [
          + "AS_NUMBER",
          + "peer_as_number",
          + "peer_ip_address",
        ]
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

cloudstack_cni_configuration.calico-terraform: Creating...
cloudstack_cni_configuration.calico-terraform: Creation complete after 1s [id=9c2258db-268c-4648-b835-55a1415bc50a]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

@kiranchavala
Copy link
Collaborator

@Pearl1594 , there are some merge conflicts

Copy link
Contributor

@DaanHoogland DaanHoogland left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clgtm

@DaanHoogland DaanHoogland merged commit e4ecc98 into main Sep 29, 2025
47 checks passed
@DaanHoogland DaanHoogland deleted the support-cks-enhancements branch September 29, 2025 12:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support for CKS Enhancements

4 participants