in pkg/executables/clusterctl.go [250:330]
func (c *Clusterctl) buildConfig(managementComponents *anywherecluster.ManagementComponents, clusterName string, provider providers.Provider) (*clusterctlConfiguration, error) {
t := templater.New(c.writer)
path, err := os.Getwd()
if err != nil {
return nil, err
}
data := map[string]string{
"CertManagerInjectorRepository": imageRepository(managementComponents.CertManager.Cainjector),
"CertManagerInjectorTag": managementComponents.CertManager.Cainjector.Tag(),
"CertManagerControllerRepository": imageRepository(managementComponents.CertManager.Controller),
"CertManagerControllerTag": managementComponents.CertManager.Controller.Tag(),
"CertManagerWebhookRepository": imageRepository(managementComponents.CertManager.Webhook),
"CertManagerWebhookTag": managementComponents.CertManager.Webhook.Tag(),
"CertManagerVersion": managementComponents.CertManager.Version,
"ClusterApiControllerRepository": imageRepository(managementComponents.ClusterAPI.Controller),
"ClusterApiControllerTag": managementComponents.ClusterAPI.Controller.Tag(),
"ClusterApiKubeRbacProxyRepository": imageRepository(managementComponents.ClusterAPI.KubeProxy),
"ClusterApiKubeRbacProxyTag": managementComponents.ClusterAPI.KubeProxy.Tag(),
"KubeadmBootstrapControllerRepository": imageRepository(managementComponents.Bootstrap.Controller),
"KubeadmBootstrapControllerTag": managementComponents.Bootstrap.Controller.Tag(),
"KubeadmBootstrapKubeRbacProxyRepository": imageRepository(managementComponents.Bootstrap.KubeProxy),
"KubeadmBootstrapKubeRbacProxyTag": managementComponents.Bootstrap.KubeProxy.Tag(),
"KubeadmControlPlaneControllerRepository": imageRepository(managementComponents.ControlPlane.Controller),
"KubeadmControlPlaneControllerTag": managementComponents.ControlPlane.Controller.Tag(),
"KubeadmControlPlaneKubeRbacProxyRepository": imageRepository(managementComponents.ControlPlane.KubeProxy),
"KubeadmControlPlaneKubeRbacProxyTag": managementComponents.ControlPlane.KubeProxy.Tag(),
"ClusterApiVSphereControllerRepository": imageRepository(managementComponents.VSphere.ClusterAPIController),
"ClusterApiVSphereControllerTag": managementComponents.VSphere.ClusterAPIController.Tag(),
"ClusterApiNutanixControllerRepository": imageRepository(managementComponents.Nutanix.ClusterAPIController),
"ClusterApiNutanixControllerTag": managementComponents.Nutanix.ClusterAPIController.Tag(),
"ClusterApiCloudStackManagerRepository": imageRepository(managementComponents.CloudStack.ClusterAPIController),
"ClusterApiCloudStackManagerTag": managementComponents.CloudStack.ClusterAPIController.Tag(),
"ClusterApiCloudStackKubeRbacProxyRepository": imageRepository(managementComponents.CloudStack.KubeRbacProxy),
"ClusterApiCloudStackKubeRbacProxyTag": managementComponents.CloudStack.KubeRbacProxy.Tag(),
"ClusterApiVSphereKubeRbacProxyRepository": imageRepository(managementComponents.VSphere.KubeProxy),
"ClusterApiVSphereKubeRbacProxyTag": managementComponents.VSphere.KubeProxy.Tag(),
"DockerKubeRbacProxyRepository": imageRepository(managementComponents.Docker.KubeProxy),
"DockerKubeRbacProxyTag": managementComponents.Docker.KubeProxy.Tag(),
"DockerManagerRepository": imageRepository(managementComponents.Docker.Manager),
"DockerManagerTag": managementComponents.Docker.Manager.Tag(),
"EtcdadmBootstrapProviderRepository": imageRepository(managementComponents.ExternalEtcdBootstrap.Controller),
"EtcdadmBootstrapProviderTag": managementComponents.ExternalEtcdBootstrap.Controller.Tag(),
"EtcdadmBootstrapProviderKubeRbacProxyRepository": imageRepository(managementComponents.ExternalEtcdBootstrap.KubeProxy),
"EtcdadmBootstrapProviderKubeRbacProxyTag": managementComponents.ExternalEtcdBootstrap.KubeProxy.Tag(),
"EtcdadmControllerRepository": imageRepository(managementComponents.ExternalEtcdController.Controller),
"EtcdadmControllerTag": managementComponents.ExternalEtcdController.Controller.Tag(),
"EtcdadmControllerKubeRbacProxyRepository": imageRepository(managementComponents.ExternalEtcdController.KubeProxy),
"EtcdadmControllerKubeRbacProxyTag": managementComponents.ExternalEtcdController.KubeProxy.Tag(),
"DockerProviderVersion": managementComponents.Docker.Version,
"VSphereProviderVersion": managementComponents.VSphere.Version,
"CloudStackProviderVersion": managementComponents.CloudStack.Version,
"SnowProviderVersion": managementComponents.Snow.Version,
"TinkerbellProviderVersion": managementComponents.Tinkerbell.Version,
"NutanixProviderVersion": managementComponents.Nutanix.Version,
"ClusterApiProviderVersion": managementComponents.ClusterAPI.Version,
"KubeadmControlPlaneProviderVersion": managementComponents.ControlPlane.Version,
"KubeadmBootstrapProviderVersion": managementComponents.Bootstrap.Version,
"EtcdadmBootstrapProviderVersion": managementComponents.ExternalEtcdBootstrap.Version,
"EtcdadmControllerProviderVersion": managementComponents.ExternalEtcdController.Version,
"dir": path + "/" + clusterName + capiPrefix,
}
filePath, err := t.WriteToFile(clusterctlConfigTemplate, data, clusterctlConfigFile)
if err != nil {
return nil, fmt.Errorf("generating configuration file for clusterctl: %v", err)
}
if err := c.buildOverridesLayer(managementComponents, clusterName, provider); err != nil {
return nil, err
}
return &clusterctlConfiguration{
configFile: filePath,
bootstrapVersion: fmt.Sprintf("%s:%s", kubeadmBootstrapProviderName, managementComponents.Bootstrap.Version),
controlPlaneVersion: fmt.Sprintf("kubeadm:%s", managementComponents.ControlPlane.Version),
coreVersion: fmt.Sprintf("cluster-api:%s", managementComponents.ClusterAPI.Version),
etcdadmBootstrapVersion: fmt.Sprintf("%s:%s", etcdadmBootstrapProviderName, managementComponents.ExternalEtcdBootstrap.Version),
etcdadmControllerVersion: fmt.Sprintf("%s:%s", etcdadmControllerProviderName, managementComponents.ExternalEtcdController.Version),
}, nil
}