I am in the process of setting up a cluster using the rancher2 terraform provider. However, i want to disable the cloud controller and instead install the external cloud controller manager for openstack.
As recommended in this discussion: https://github.com/rancher/rke2/discussions/6131 i want to install it using the additional manifest flag. However my cluster gets stuck “Waiting for cluster agent to connect”. This doesnt happen when i omit the additional manifest and the disable-cloud-provider=true in the machine_global_config.
resource "rancher2_cluster_v2" "cluster" {
name = var.cluster_name
kubernetes_version = "v1.30.8+rke2r1"
enable_network_policy = false
rke_config {
machine_global_config = <<EOF
kubelet-arg:
- cloud-provider=external
disable-cloud-controller: true
EOF
additional_manifest = <<EOF
---
apiVersion: v1
kind: Secret
metadata:
name: cloud-config
namespace: kube-system
type: Opaque
data:
cloud.conf: $(base64_encode(
<<-CLOUDCONF
[Global]
auth_url="${var.openstack_auth_url}"
region="${var.openstack_region}"
user_domain_name = "${var.openstack_user_domain_name}"
tenant_name=${var.openstack_tenant_name}
application_credential_id="${var.openstack_application_credential_id}"
application_credential_secret="${var.openstack_application_credential_secret}"
[LoadBalancer]
use-octavia=true
subnet-id="${data.terraform_remote_state.network.outputs.subnet_id}"
floating-network-id=${data.terraform_remote_state.network.outputs.external_network_id}
lb-provider="ampohra"
lb-method=ROUND_ROBIN
lb-create-monitor=true
manage-security-groups=true
CLOUDCONF
))
---
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: openstack-cloud-controller-manager
namespace: kube-system
spec:
chart: openstack-cloud-controller-manager
repo: https://kubernetes.github.io/cloud-provider-openstack
targetNamespace: kube-system
bootstrap: true
valuesContent: |-
cloud-config:
secret: cloud-config
EOF
machine_pools {
name = "control-plane-etcd"
control_plane_role = true
etcd_role = true
worker_role = false
quantity = 1
drain_before_delete = true
machine_config {
kind = rancher2_machine_config_v2.machine_config.kind
name = rancher2_machine_config_v2.machine_config.name
}
}
machine_pools {
name = "worker"
control_plane_role = false
etcd_role = false
worker_role = true
quantity = 2
drain_before_delete = true
machine_config {
kind = rancher2_machine_config_v2.machine_config.kind
name = rancher2_machine_config_v2.machine_config.name
}
}
}
}
Does anybody have experience with this ?