The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .dockerignore
├── .gitattributes
├── .github
    ├── ISSUE_TEMPLATE
    │   ├── bug_report.yaml
    │   ├── failing_test.yaml
    │   ├── feature_request.yaml
    │   ├── flaking_test.yaml
    │   ├── kubernetes_bump.md
    │   └── release_tracking.md
    ├── PULL_REQUEST_TEMPLATE.md
    ├── dependabot.yaml
    └── workflows
    │   ├── pr-dependabot.yaml
    │   ├── pr-gh-workflow-approve.yaml
    │   ├── pr-golangci-lint.yaml
    │   ├── pr-md-link-check.yaml
    │   ├── pr-verify.yaml
    │   ├── release.yaml
    │   ├── weekly-md-link-check.yaml
    │   ├── weekly-security-scan.yaml
    │   └── weekly-test-release.yaml
├── .gitignore
├── .golangci-kal.yml
├── .golangci.yml
├── .markdownlinkcheck.json
├── CHANGELOG
    ├── OWNERS
    ├── README.md
    ├── v1.10.0-beta.0.md
    ├── v1.10.0-beta.1.md
    ├── v1.10.0-rc.0.md
    ├── v1.10.0-rc.1.md
    ├── v1.10.0.md
    ├── v1.10.1.md
    ├── v1.10.2.md
    ├── v1.10.3.md
    ├── v1.11.0-alpha.0.md
    ├── v1.11.0-alpha.1.md
    ├── v1.11.0-alpha.2.md
    ├── v1.4.6.md
    ├── v1.4.7.md
    ├── v1.4.8.md
    ├── v1.4.9.md
    ├── v1.5.1.md
    ├── v1.5.2.md
    ├── v1.5.3.md
    ├── v1.5.4.md
    ├── v1.5.5.md
    ├── v1.5.6.md
    ├── v1.5.7.md
    ├── v1.5.8.md
    ├── v1.6.0-beta.0.md
    ├── v1.6.0-beta.1.md
    ├── v1.6.0-rc.0.md
    ├── v1.6.0-rc.1.md
    ├── v1.6.0.md
    ├── v1.6.1.md
    ├── v1.6.2.md
    ├── v1.6.3.md
    ├── v1.6.4.md
    ├── v1.6.5.md
    ├── v1.6.6.md
    ├── v1.6.7.md
    ├── v1.6.8.md
    ├── v1.7.0-beta.0.md
    ├── v1.7.0-beta.1.md
    ├── v1.7.0-rc.0.md
    ├── v1.7.0-rc.1.md
    ├── v1.7.0.md
    ├── v1.7.1.md
    ├── v1.7.2.md
    ├── v1.7.3.md
    ├── v1.7.4.md
    ├── v1.7.5.md
    ├── v1.7.6.md
    ├── v1.7.7.md
    ├── v1.7.8.md
    ├── v1.7.9.md
    ├── v1.8.0-beta.0.md
    ├── v1.8.0-beta.1.md
    ├── v1.8.0-rc.0.md
    ├── v1.8.0-rc.1.md
    ├── v1.8.0.md
    ├── v1.8.1.md
    ├── v1.8.10.md
    ├── v1.8.11.md
    ├── v1.8.12.md
    ├── v1.8.2.md
    ├── v1.8.3.md
    ├── v1.8.4.md
    ├── v1.8.5.md
    ├── v1.8.6.md
    ├── v1.8.7.md
    ├── v1.8.8.md
    ├── v1.8.9.md
    ├── v1.9.0-beta.0.md
    ├── v1.9.0-beta.1.md
    ├── v1.9.0-rc.0.md
    ├── v1.9.0-rc.1.md
    ├── v1.9.0.md
    ├── v1.9.1.md
    ├── v1.9.2.md
    ├── v1.9.3.md
    ├── v1.9.4.md
    ├── v1.9.5.md
    ├── v1.9.6.md
    ├── v1.9.7.md
    ├── v1.9.8.md
    └── v1.9.9.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── Makefile
├── OWNERS
├── OWNERS_ALIASES
├── README.md
├── REVIEWING.md
├── SECURITY_CONTACTS
├── Tiltfile
├── api
    ├── .import-restrictions
    ├── addons
    │   ├── v1beta1
    │   │   ├── .import-restrictions
    │   │   ├── clusterresourceset_types.go
    │   │   ├── clusterresourcesetbinding_types.go
    │   │   ├── clusterresourcesetbinding_types_test.go
    │   │   ├── condition_consts.go
    │   │   ├── conversion.go
    │   │   ├── conversion_test.go
    │   │   ├── doc.go
    │   │   ├── groupversion_info.go
    │   │   ├── v1beta2_condition_consts.go
    │   │   ├── zz_generated.conversion.go
    │   │   └── zz_generated.deepcopy.go
    │   └── v1beta2
    │   │   ├── clusterresourceset_types.go
    │   │   ├── clusterresourcesetbinding_types.go
    │   │   ├── clusterresourcesetbinding_types_test.go
    │   │   ├── conversion.go
    │   │   ├── doc.go
    │   │   ├── groupversion_info.go
    │   │   ├── v1beta1_condition_consts.go
    │   │   └── zz_generated.deepcopy.go
    ├── bootstrap
    │   └── kubeadm
    │   │   ├── v1beta1
    │   │       ├── .import-restrictions
    │   │       ├── condition_consts.go
    │   │       ├── conversion.go
    │   │       ├── conversion_test.go
    │   │       ├── doc.go
    │   │       ├── groupversion_info.go
    │   │       ├── kubeadm_types.go
    │   │       ├── kubeadm_types_test.go
    │   │       ├── kubeadmconfig_types.go
    │   │       ├── kubeadmconfigtemplate_types.go
    │   │       ├── v1beta2_condition_consts.go
    │   │       ├── zz_generated.conversion.go
    │   │       └── zz_generated.deepcopy.go
    │   │   └── v1beta2
    │   │       ├── conversion.go
    │   │       ├── conversion_test.go
    │   │       ├── doc.go
    │   │       ├── groupversion_info.go
    │   │       ├── kubeadm_types.go
    │   │       ├── kubeadm_types_test.go
    │   │       ├── kubeadmconfig_types.go
    │   │       ├── kubeadmconfigtemplate_types.go
    │   │       ├── v1beta1_condition_consts.go
    │   │       └── zz_generated.deepcopy.go
    ├── controlplane
    │   └── kubeadm
    │   │   ├── v1beta1
    │   │       ├── .import-restrictions
    │   │       ├── condition_consts.go
    │   │       ├── conversion.go
    │   │       ├── conversion_test.go
    │   │       ├── doc.go
    │   │       ├── groupversion_info.go
    │   │       ├── kubeadm_control_plane_types.go
    │   │       ├── kubeadmcontrolplanetemplate_types.go
    │   │       ├── v1beta2_condition_consts.go
    │   │       ├── zz_generated.conversion.go
    │   │       └── zz_generated.deepcopy.go
    │   │   └── v1beta2
    │   │       ├── conversion.go
    │   │       ├── doc.go
    │   │       ├── groupversion_info.go
    │   │       ├── kubeadm_control_plane_types.go
    │   │       ├── kubeadmcontrolplanetemplate_types.go
    │   │       ├── v1beta1_condition_consts.go
    │   │       └── zz_generated.deepcopy.go
    ├── core
    │   ├── v1beta1
    │   │   ├── .import-restrictions
    │   │   ├── cluster_phase_types.go
    │   │   ├── cluster_types.go
    │   │   ├── cluster_types_test.go
    │   │   ├── clusterclass_types.go
    │   │   ├── common_types.go
    │   │   ├── condition_consts.go
    │   │   ├── condition_types.go
    │   │   ├── conversion.go
    │   │   ├── conversion_test.go
    │   │   ├── doc.go
    │   │   ├── groupversion_info.go
    │   │   ├── machine_phase_types.go
    │   │   ├── machine_types.go
    │   │   ├── machinedeployment_types.go
    │   │   ├── machinedrainrules_types.go
    │   │   ├── machinehealthcheck_types.go
    │   │   ├── machinepool_types.go
    │   │   ├── machineset_types.go
    │   │   ├── v1beta2_condition_consts.go
    │   │   ├── zz_generated.conversion.go
    │   │   ├── zz_generated.deepcopy.go
    │   │   └── zz_generated.openapi.go
    │   └── v1beta2
    │   │   ├── cluster_phase_types.go
    │   │   ├── cluster_types.go
    │   │   ├── clusterclass_types.go
    │   │   ├── common_types.go
    │   │   ├── condition_consts.go
    │   │   ├── condition_types.go
    │   │   ├── conversion.go
    │   │   ├── conversion_test.go
    │   │   ├── doc.go
    │   │   ├── groupversion_info.go
    │   │   ├── index
    │   │       ├── .import-restrictions
    │   │       ├── cluster.go
    │   │       ├── cluster_test.go
    │   │       ├── index.go
    │   │       ├── machine.go
    │   │       ├── machine_test.go
    │   │       ├── machinepool.go
    │   │       ├── machinepool_test.go
    │   │       ├── node.go
    │   │       └── node_test.go
    │   │   ├── machine_phase_types.go
    │   │   ├── machine_types.go
    │   │   ├── machinedeployment_types.go
    │   │   ├── machinedrainrules_types.go
    │   │   ├── machinehealthcheck_types.go
    │   │   ├── machinepool_types.go
    │   │   ├── machineset_types.go
    │   │   ├── v1beta1_condition_consts.go
    │   │   ├── zz_generated.deepcopy.go
    │   │   └── zz_generated.openapi.go
    ├── ipam
    │   ├── v1alpha1
    │   │   ├── .import-restrictions
    │   │   ├── conversion.go
    │   │   ├── conversion_test.go
    │   │   ├── doc.go
    │   │   ├── groupversion_info.go
    │   │   ├── ipaddress_types.go
    │   │   ├── ipaddressclaim_types.go
    │   │   ├── zz_generated.conversion.go
    │   │   └── zz_generated.deepcopy.go
    │   ├── v1beta1
    │   │   ├── .import-restrictions
    │   │   ├── condition_consts.go
    │   │   ├── conversion.go
    │   │   ├── conversion_test.go
    │   │   ├── doc.go
    │   │   ├── groupversion_info.go
    │   │   ├── ipaddress_types.go
    │   │   ├── ipaddressclaim_types.go
    │   │   ├── zz_generated.conversion.go
    │   │   └── zz_generated.deepcopy.go
    │   └── v1beta2
    │   │   ├── conversion.go
    │   │   ├── doc.go
    │   │   ├── groupversion_info.go
    │   │   ├── ipaddress_types.go
    │   │   ├── ipaddressclaim_types.go
    │   │   ├── v1beta1_condition_consts.go
    │   │   └── zz_generated.deepcopy.go
    └── runtime
    │   ├── hooks
    │       └── v1alpha1
    │       │   ├── common_types.go
    │       │   ├── discovery_types.go
    │       │   ├── doc.go
    │       │   ├── groupversion_info.go
    │       │   ├── lifecyclehooks_types.go
    │       │   ├── topologymutation_types.go
    │       │   ├── topologymutation_variable_types.go
    │       │   ├── zz_generated.deepcopy.go
    │       │   └── zz_generated.openapi.go
    │   ├── v1alpha1
    │       ├── .import-restrictions
    │       ├── conversion.go
    │       ├── conversion_test.go
    │       ├── doc.go
    │       ├── extensionconfig_types.go
    │       ├── groupversion_info.go
    │       ├── zz_generated.conversion.go
    │       └── zz_generated.deepcopy.go
    │   └── v1beta2
    │       ├── conversion.go
    │       ├── doc.go
    │       ├── extensionconfig_types.go
    │       ├── groupversion_info.go
    │       └── zz_generated.deepcopy.go
├── bootstrap
    ├── kubeadm
    │   ├── OWNERS
    │   ├── config
    │   │   ├── certmanager
    │   │   │   ├── certificate.yaml
    │   │   │   ├── kustomization.yaml
    │   │   │   └── kustomizeconfig.yaml
    │   │   ├── crd
    │   │   │   ├── bases
    │   │   │   │   ├── bootstrap.cluster.x-k8s.io_kubeadmconfigs.yaml
    │   │   │   │   └── bootstrap.cluster.x-k8s.io_kubeadmconfigtemplates.yaml
    │   │   │   ├── kustomization.yaml
    │   │   │   ├── kustomizeconfig.yaml
    │   │   │   └── patches
    │   │   │   │   ├── webhook_in_kubeadmconfigs.yaml
    │   │   │   │   └── webhook_in_kubeadmconfigtemplates.yaml
    │   │   ├── default
    │   │   │   ├── kustomization.yaml
    │   │   │   ├── manager_image_patch.yaml
    │   │   │   ├── manager_pull_policy.yaml
    │   │   │   ├── manager_webhook_patch.yaml
    │   │   │   ├── namespace.yaml
    │   │   │   └── webhookcainjection_patch.yaml
    │   │   ├── manager
    │   │   │   ├── kustomization.yaml
    │   │   │   └── manager.yaml
    │   │   ├── rbac
    │   │   │   ├── kustomization.yaml
    │   │   │   ├── leader_election_role.yaml
    │   │   │   ├── leader_election_role_binding.yaml
    │   │   │   ├── role.yaml
    │   │   │   ├── role_binding.yaml
    │   │   │   └── service_account.yaml
    │   │   └── webhook
    │   │   │   ├── kustomization.yaml
    │   │   │   ├── kustomizeconfig.yaml
    │   │   │   ├── manifests.yaml
    │   │   │   └── service.yaml
    │   ├── controllers
    │   │   ├── alias.go
    │   │   └── doc.go
    │   ├── internal
    │   │   ├── builder
    │   │   │   ├── builders.go
    │   │   │   └── doc.go
    │   │   ├── cloudinit
    │   │   │   ├── boot_commands.go
    │   │   │   ├── cloudinit.go
    │   │   │   ├── cloudinit_test.go
    │   │   │   ├── commands.go
    │   │   │   ├── controlplane_init.go
    │   │   │   ├── controlplane_join.go
    │   │   │   ├── controlplane_test.go
    │   │   │   ├── disk_setup.go
    │   │   │   ├── doc.go
    │   │   │   ├── files.go
    │   │   │   ├── fs_setup.go
    │   │   │   ├── mounts.go
    │   │   │   ├── node.go
    │   │   │   ├── node_test.go
    │   │   │   ├── ntp.go
    │   │   │   ├── users.go
    │   │   │   └── utils.go
    │   │   ├── controllers
    │   │   │   ├── doc.go
    │   │   │   ├── kubeadmconfig_controller.go
    │   │   │   ├── kubeadmconfig_controller_reconciler_test.go
    │   │   │   ├── kubeadmconfig_controller_test.go
    │   │   │   ├── suite_test.go
    │   │   │   └── token.go
    │   │   ├── ignition
    │   │   │   ├── OWNERS
    │   │   │   ├── clc
    │   │   │   │   ├── clc.go
    │   │   │   │   └── clc_test.go
    │   │   │   ├── ignition.go
    │   │   │   └── ignition_test.go
    │   │   ├── locking
    │   │   │   ├── control_plane_init_mutex.go
    │   │   │   └── control_plane_init_mutex_test.go
    │   │   └── webhooks
    │   │   │   ├── doc.go
    │   │   │   ├── kubeadmconfig.go
    │   │   │   ├── kubeadmconfig_test.go
    │   │   │   ├── kubeadmconfigtemplate.go
    │   │   │   └── kubeadmconfigtemplate_test.go
    │   ├── main.go
    │   ├── types
    │   │   ├── README.md
    │   │   ├── doc.go
    │   │   ├── upstream
    │   │   │   └── upstream.go
    │   │   ├── upstreamhub
    │   │   │   ├── conversions.go
    │   │   │   ├── doc.go
    │   │   │   ├── types.go
    │   │   │   └── zz_generated.deepcopy.go
    │   │   ├── upstreamv1beta3
    │   │   │   ├── bootstraptokenstring.go
    │   │   │   ├── bootstraptokenstring_test.go
    │   │   │   ├── conversion.go
    │   │   │   ├── conversion_test.go
    │   │   │   ├── doc.go
    │   │   │   ├── groupversion_info.go
    │   │   │   ├── types.go
    │   │   │   ├── zz_generated.conversion.go
    │   │   │   └── zz_generated.deepcopy.go
    │   │   ├── upstreamv1beta4
    │   │   │   ├── bootstraptokenstring.go
    │   │   │   ├── bootstraptokenstring_test.go
    │   │   │   ├── conversion.go
    │   │   │   ├── conversion_test.go
    │   │   │   ├── doc.go
    │   │   │   ├── groupversion_info.go
    │   │   │   ├── types.go
    │   │   │   ├── zz_generated.conversion.go
    │   │   │   └── zz_generated.deepcopy.go
    │   │   ├── utils.go
    │   │   └── utils_test.go
    │   └── webhooks
    │   │   ├── alias.go
    │   │   └── doc.go
    └── util
    │   ├── configowner.go
    │   ├── configowner_test.go
    │   └── suite_test.go
├── cloudbuild-nightly.yaml
├── cloudbuild.yaml
├── cmd
    └── clusterctl
    │   ├── Dockerfile
    │   ├── OWNERS
    │   ├── README.md
    │   ├── api
    │       ├── .import-restrictions
    │       └── v1alpha3
    │       │   ├── annotations.go
    │       │   ├── groupversion_info.go
    │       │   ├── labels.go
    │       │   ├── metadata_type.go
    │       │   ├── metadata_type_test.go
    │       │   ├── provider_type.go
    │       │   ├── provider_type_test.go
    │       │   └── zz_generated.deepcopy.go
    │   ├── client
    │       ├── alias.go
    │       ├── alpha
    │       │   ├── client.go
    │       │   ├── doc.go
    │       │   ├── kubeadmcontrolplane.go
    │       │   ├── machinedeployment.go
    │       │   ├── rollout.go
    │       │   ├── rollout_pauser.go
    │       │   ├── rollout_pauser_test.go
    │       │   ├── rollout_restarter.go
    │       │   ├── rollout_restarter_test.go
    │       │   ├── rollout_resumer.go
    │       │   └── rollout_resumer_test.go
    │       ├── client.go
    │       ├── client_test.go
    │       ├── cluster
    │       │   ├── assets
    │       │   │   ├── cert-manager-test-resources.yaml
    │       │   │   └── topology-test
    │       │   │   │   ├── existing-my-cluster.yaml
    │       │   │   │   ├── existing-my-second-cluster.yaml
    │       │   │   │   ├── mock-CRDs.yaml
    │       │   │   │   ├── modified-CP-dockermachinepooltemplate.yaml
    │       │   │   │   ├── modified-CP-dockermachinetemplate.yaml
    │       │   │   │   ├── modified-my-cluster.yaml
    │       │   │   │   ├── my-cluster-class.yaml
    │       │   │   │   ├── new-clusterclass-and-cluster.yaml
    │       │   │   │   └── objects-in-different-namespaces.yaml
    │       │   ├── cert_manager.go
    │       │   ├── cert_manager_test.go
    │       │   ├── client.go
    │       │   ├── client_test.go
    │       │   ├── components.go
    │       │   ├── components_test.go
    │       │   ├── crd_migration.go
    │       │   ├── crd_migration_test.go
    │       │   ├── doc.go
    │       │   ├── installer.go
    │       │   ├── installer_test.go
    │       │   ├── inventory.go
    │       │   ├── inventory_test.go
    │       │   ├── mover.go
    │       │   ├── mover_test.go
    │       │   ├── objectgraph.go
    │       │   ├── objectgraph_test.go
    │       │   ├── ownergraph.go
    │       │   ├── proxy.go
    │       │   ├── proxy_test.go
    │       │   ├── template.go
    │       │   ├── template_test.go
    │       │   ├── upgrader.go
    │       │   ├── upgrader_info.go
    │       │   ├── upgrader_info_test.go
    │       │   ├── upgrader_test.go
    │       │   ├── workload_cluster.go
    │       │   └── workload_cluster_test.go
    │       ├── clusterclass.go
    │       ├── clusterclass_test.go
    │       ├── common.go
    │       ├── common_test.go
    │       ├── config.go
    │       ├── config
    │       │   ├── cert_manager.go
    │       │   ├── cert_manager_client.go
    │       │   ├── cert_manager_client_test.go
    │       │   ├── client.go
    │       │   ├── doc.go
    │       │   ├── imagemeta_client.go
    │       │   ├── imagemeta_client_test.go
    │       │   ├── provider.go
    │       │   ├── providers_client.go
    │       │   ├── providers_client_test.go
    │       │   ├── reader_memory.go
    │       │   ├── reader_memory_test.go
    │       │   ├── reader_viper.go
    │       │   ├── reader_viper_test.go
    │       │   ├── variables_client.go
    │       │   └── variables_client_test.go
    │       ├── config_test.go
    │       ├── delete.go
    │       ├── delete_test.go
    │       ├── describe.go
    │       ├── doc.go
    │       ├── generate_provider.go
    │       ├── get_kubeconfig.go
    │       ├── get_kubeconfig_test.go
    │       ├── init.go
    │       ├── init_test.go
    │       ├── move.go
    │       ├── move_test.go
    │       ├── repository
    │       │   ├── client.go
    │       │   ├── client_test.go
    │       │   ├── clusterclass_client.go
    │       │   ├── clusterclass_client_test.go
    │       │   ├── components.go
    │       │   ├── components_client.go
    │       │   ├── components_client_test.go
    │       │   ├── components_test.go
    │       │   ├── doc.go
    │       │   ├── metadata_client.go
    │       │   ├── metadata_client_test.go
    │       │   ├── overrides.go
    │       │   ├── overrides_test.go
    │       │   ├── repository_github.go
    │       │   ├── repository_github_test.go
    │       │   ├── repository_gitlab.go
    │       │   ├── repository_gitlab_test.go
    │       │   ├── repository_local.go
    │       │   ├── repository_local_test.go
    │       │   ├── repository_memory.go
    │       │   ├── repository_memory_test.go
    │       │   ├── repository_versions.go
    │       │   ├── template.go
    │       │   ├── template_client.go
    │       │   ├── template_client_test.go
    │       │   └── template_test.go
    │       ├── rollout.go
    │       ├── rollout_test.go
    │       ├── tree
    │       │   ├── annotations.go
    │       │   ├── discovery.go
    │       │   ├── discovery_test.go
    │       │   ├── doc.go
    │       │   ├── node_object.go
    │       │   ├── options.go
    │       │   ├── tree.go
    │       │   ├── tree_test.go
    │       │   └── util.go
    │       ├── upgrade.go
    │       ├── upgrade_test.go
    │       └── yamlprocessor
    │       │   ├── processor.go
    │       │   ├── simple_processor.go
    │       │   └── simple_processor_test.go
    │   ├── cmd
    │       ├── alpha.go
    │       ├── completion.go
    │       ├── config.go
    │       ├── config_repositories.go
    │       ├── config_repositories_test.go
    │       ├── delete.go
    │       ├── describe.go
    │       ├── describe_cluster.go
    │       ├── doc.go
    │       ├── generate.go
    │       ├── generate_cluster.go
    │       ├── generate_provider.go
    │       ├── generate_yaml.go
    │       ├── generate_yaml_test.go
    │       ├── get.go
    │       ├── get_kubeconfig.go
    │       ├── init.go
    │       ├── init_list_images.go
    │       ├── internal
    │       │   └── templates
    │       │   │   └── normalizers.go
    │       ├── move.go
    │       ├── rollout.go
    │       ├── rollout
    │       │   ├── pause.go
    │       │   ├── restart.go
    │       │   └── resume.go
    │       ├── root.go
    │       ├── upgrade.go
    │       ├── upgrade_apply.go
    │       ├── upgrade_plan.go
    │       ├── util.go
    │       ├── version.go
    │       ├── version_checker.go
    │       └── version_checker_test.go
    │   ├── config
    │       ├── crd
    │       │   ├── bases
    │       │   │   ├── clusterctl.cluster.x-k8s.io_metadata.yaml
    │       │   │   └── clusterctl.cluster.x-k8s.io_providers.yaml
    │       │   └── kustomization.yaml
    │       ├── embedded_manifest.go
    │       └── manifest
    │       │   └── clusterctl-api.yaml
    │   ├── hack
    │       └── create-local-repository.py
    │   ├── internal
    │       ├── scheme
    │       │   └── scheme.go
    │       ├── test
    │       │   ├── doc.go
    │       │   ├── fake_github.go
    │       │   ├── fake_objects.go
    │       │   ├── fake_processor.go
    │       │   ├── fake_proxy.go
    │       │   ├── fake_reader.go
    │       │   ├── fake_variable_client.go
    │       │   └── providers
    │       │   │   ├── bootstrap
    │       │   │       ├── generic_types.go
    │       │   │       ├── groupversion_info.go
    │       │   │       └── zz_generated.deepcopy.go
    │       │   │   ├── controlplane
    │       │   │       ├── generic_types.go
    │       │   │       ├── groupversion_info.go
    │       │   │       └── zz_generated.deepcopy.go
    │       │   │   ├── external
    │       │   │       ├── generic_types.go
    │       │   │       ├── groupversion_info.go
    │       │   │       └── zz_generated.deepcopy.go
    │       │   │   └── infrastructure
    │       │   │       ├── generic_types.go
    │       │   │       ├── groupversion_info.go
    │       │   │       └── zz_generated.deepcopy.go
    │       └── util
    │       │   ├── doc.go
    │       │   ├── obj_refs.go
    │       │   ├── obj_refs_test.go
    │       │   ├── objs.go
    │       │   └── objs_test.go
    │   ├── log
    │       ├── doc.go
    │       ├── log.go
    │       ├── logger.go
    │       ├── logger_test.go
    │       └── util.go
    │   └── main.go
├── code-of-conduct.md
├── config
    ├── certmanager
    │   ├── certificate.yaml
    │   ├── kustomization.yaml
    │   └── kustomizeconfig.yaml
    ├── crd
    │   ├── bases
    │   │   ├── addons.cluster.x-k8s.io_clusterresourcesetbindings.yaml
    │   │   ├── addons.cluster.x-k8s.io_clusterresourcesets.yaml
    │   │   ├── cluster.x-k8s.io_clusterclasses.yaml
    │   │   ├── cluster.x-k8s.io_clusters.yaml
    │   │   ├── cluster.x-k8s.io_machinedeployments.yaml
    │   │   ├── cluster.x-k8s.io_machinedrainrules.yaml
    │   │   ├── cluster.x-k8s.io_machinehealthchecks.yaml
    │   │   ├── cluster.x-k8s.io_machinepools.yaml
    │   │   ├── cluster.x-k8s.io_machines.yaml
    │   │   ├── cluster.x-k8s.io_machinesets.yaml
    │   │   ├── ipam.cluster.x-k8s.io_ipaddressclaims.yaml
    │   │   ├── ipam.cluster.x-k8s.io_ipaddresses.yaml
    │   │   └── runtime.cluster.x-k8s.io_extensionconfigs.yaml
    │   ├── kustomization.yaml
    │   ├── kustomizeconfig.yaml
    │   └── patches
    │   │   ├── webhook_in_clusterclasses.yaml
    │   │   ├── webhook_in_clusterresourcesetbindings.yaml
    │   │   ├── webhook_in_clusterresourcesets.yaml
    │   │   ├── webhook_in_clusters.yaml
    │   │   ├── webhook_in_extensionconfigs.yaml
    │   │   ├── webhook_in_ipaddressclaims.yaml
    │   │   ├── webhook_in_ipaddresses.yaml
    │   │   ├── webhook_in_machinedeployments.yaml
    │   │   ├── webhook_in_machinedrainrules.yaml
    │   │   ├── webhook_in_machinehealthchecks.yaml
    │   │   ├── webhook_in_machinepools.yaml
    │   │   ├── webhook_in_machines.yaml
    │   │   └── webhook_in_machinesets.yaml
    ├── default
    │   ├── kustomization.yaml
    │   ├── manager_image_patch.yaml
    │   ├── manager_pull_policy.yaml
    │   ├── manager_role_aggregation_patch.yaml
    │   ├── manager_webhook_patch.yaml
    │   ├── namespace.yaml
    │   └── webhookcainjection_patch.yaml
    ├── manager
    │   ├── kustomization.yaml
    │   └── manager.yaml
    ├── metrics
    │   ├── crd-clusterrole.yaml
    │   ├── crd-metrics-config.yaml
    │   ├── kustomization.yaml
    │   └── templates
    │   │   ├── README.md
    │   │   ├── cluster.yaml
    │   │   ├── clusterclass.yaml
    │   │   ├── common_metrics.yaml
    │   │   ├── header.yaml
    │   │   ├── kubeadmconfig.yaml
    │   │   ├── kubeadmcontrolplane.yaml
    │   │   ├── machine.yaml
    │   │   ├── machinedeployment.yaml
    │   │   ├── machinehealthcheck.yaml
    │   │   ├── machinepool.yaml
    │   │   ├── machineset.yaml
    │   │   └── owner_metric.yaml
    ├── rbac
    │   ├── aggregated_role.yaml
    │   ├── kustomization.yaml
    │   ├── leader_election_role.yaml
    │   ├── leader_election_role_binding.yaml
    │   ├── role.yaml
    │   ├── role_binding.yaml
    │   └── service_account.yaml
    └── webhook
    │   ├── kustomization.yaml
    │   ├── kustomizeconfig.yaml
    │   ├── manifests.yaml
    │   └── service.yaml
├── controllers
    ├── alias.go
    ├── clustercache
    │   ├── cluster_accessor.go
    │   ├── cluster_accessor_client.go
    │   ├── cluster_accessor_client_test.go
    │   ├── cluster_accessor_test.go
    │   ├── cluster_cache.go
    │   ├── cluster_cache_fake.go
    │   ├── cluster_cache_test.go
    │   ├── doc.go
    │   ├── index.go
    │   ├── metrics.go
    │   └── suite_test.go
    ├── crdmigrator
    │   ├── crd_migrator.go
    │   ├── crd_migrator_test.go
    │   ├── suite_test.go
    │   └── test
    │   │   ├── t1
    │   │       ├── crd
    │   │       │   └── test.cluster.x-k8s.io_testclusters.yaml
    │   │       └── v1beta1
    │   │       │   ├── types.go
    │   │       │   └── zz_generated.deepcopy.go
    │   │   ├── t2
    │   │       ├── crd
    │   │       │   └── test.cluster.x-k8s.io_testclusters.yaml
    │   │       ├── v1beta1
    │   │       │   ├── types.go
    │   │       │   └── zz_generated.deepcopy.go
    │   │       └── v1beta2
    │   │       │   ├── types.go
    │   │       │   └── zz_generated.deepcopy.go
    │   │   ├── t3
    │   │       ├── crd
    │   │       │   └── test.cluster.x-k8s.io_testclusters.yaml
    │   │       ├── v1beta1
    │   │       │   ├── types.go
    │   │       │   └── zz_generated.deepcopy.go
    │   │       └── v1beta2
    │   │       │   ├── types.go
    │   │       │   └── zz_generated.deepcopy.go
    │   │   └── t4
    │   │       ├── crd
    │   │           └── test.cluster.x-k8s.io_testclusters.yaml
    │   │       └── v1beta2
    │   │           ├── types.go
    │   │           └── zz_generated.deepcopy.go
    ├── doc.go
    ├── external
    │   ├── doc.go
    │   ├── fake
    │   │   ├── controller.go
    │   │   └── doc.go
    │   ├── tracker.go
    │   ├── tracker_test.go
    │   ├── types.go
    │   ├── util.go
    │   └── util_test.go
    ├── noderefutil
    │   ├── util.go
    │   └── util_test.go
    └── remote
    │   ├── cluster.go
    │   ├── cluster_test.go
    │   ├── doc.go
    │   ├── fake
    │       └── cluster.go
    │   └── restconfig.go
├── controlplane
    └── kubeadm
    │   ├── OWNERS
    │   ├── config
    │       ├── certmanager
    │       │   ├── certificate.yaml
    │       │   ├── kustomization.yaml
    │       │   └── kustomizeconfig.yaml
    │       ├── crd
    │       │   ├── bases
    │       │   │   ├── controlplane.cluster.x-k8s.io_kubeadmcontrolplanes.yaml
    │       │   │   └── controlplane.cluster.x-k8s.io_kubeadmcontrolplanetemplates.yaml
    │       │   ├── kustomization.yaml
    │       │   ├── kustomizeconfig.yaml
    │       │   └── patches
    │       │   │   ├── webhook_in_kubeadmcontrolplanes.yaml
    │       │   │   └── webhook_in_kubeadmcontrolplanetemplates.yaml
    │       ├── default
    │       │   ├── kustomization.yaml
    │       │   ├── manager_image_patch.yaml
    │       │   ├── manager_pull_policy.yaml
    │       │   ├── manager_role_aggregation_patch.yaml
    │       │   ├── manager_webhook_patch.yaml
    │       │   ├── namespace.yaml
    │       │   └── webhookcainjection_patch.yaml
    │       ├── manager
    │       │   ├── kustomization.yaml
    │       │   └── manager.yaml
    │       ├── rbac
    │       │   ├── aggregated_role.yaml
    │       │   ├── kustomization.yaml
    │       │   ├── leader_election_role.yaml
    │       │   ├── leader_election_role_binding.yaml
    │       │   ├── role.yaml
    │       │   ├── role_binding.yaml
    │       │   └── service_account.yaml
    │       └── webhook
    │       │   ├── kustomization.yaml
    │       │   ├── kustomizeconfig.yaml
    │       │   ├── manifests.yaml
    │       │   └── service.yaml
    │   ├── controllers
    │       ├── alias.go
    │       └── doc.go
    │   ├── internal
    │       ├── cluster.go
    │       ├── cluster_labels.go
    │       ├── cluster_test.go
    │       ├── control_plane.go
    │       ├── control_plane_test.go
    │       ├── controllers
    │       │   ├── consts.go
    │       │   ├── controller.go
    │       │   ├── controller_test.go
    │       │   ├── doc.go
    │       │   ├── fakes_test.go
    │       │   ├── helpers.go
    │       │   ├── helpers_test.go
    │       │   ├── remediation.go
    │       │   ├── remediation_test.go
    │       │   ├── scale.go
    │       │   ├── scale_test.go
    │       │   ├── status.go
    │       │   ├── status_test.go
    │       │   ├── suite_test.go
    │       │   ├── upgrade.go
    │       │   └── upgrade_test.go
    │       ├── doc.go
    │       ├── etcd
    │       │   ├── doc.go
    │       │   ├── etcd.go
    │       │   ├── etcd_test.go
    │       │   ├── fake
    │       │   │   └── client.go
    │       │   └── util
    │       │   │   ├── util.go
    │       │   │   └── util_test.go
    │       ├── etcd_client_generator.go
    │       ├── etcd_client_generator_test.go
    │       ├── filters.go
    │       ├── filters_test.go
    │       ├── proxy
    │       │   ├── addr.go
    │       │   ├── conn.go
    │       │   ├── dial.go
    │       │   └── proxy.go
    │       ├── suite_test.go
    │       ├── webhooks
    │       │   ├── doc.go
    │       │   ├── kubeadm_control_plane.go
    │       │   ├── kubeadm_control_plane_test.go
    │       │   ├── kubeadmcontrolplanetemplate.go
    │       │   ├── kubeadmcontrolplanetemplate_test.go
    │       │   ├── scale.go
    │       │   └── scale_test.go
    │       ├── workload_cluster.go
    │       ├── workload_cluster_conditions.go
    │       ├── workload_cluster_conditions_test.go
    │       ├── workload_cluster_coredns.go
    │       ├── workload_cluster_coredns_test.go
    │       ├── workload_cluster_etcd.go
    │       ├── workload_cluster_etcd_test.go
    │       ├── workload_cluster_rbac.go
    │       └── workload_cluster_test.go
    │   ├── main.go
    │   └── webhooks
    │       ├── alias.go
    │       └── doc.go
├── dev
    └── vscode-example-configuration
    │   ├── settings.json
    │   ├── tasks.json
    │   └── test.env
├── docs
    ├── OWNERS
    ├── book
    │   ├── Makefile
    │   ├── book.toml
    │   ├── src
    │   │   ├── CONTRIBUTING.md
    │   │   ├── REVIEWING.md
    │   │   ├── SUMMARY.md
    │   │   ├── clusterctl
    │   │   │   ├── commands
    │   │   │   │   ├── additional-commands.md
    │   │   │   │   ├── alpha-rollout.md
    │   │   │   │   ├── commands.md
    │   │   │   │   ├── completion.md
    │   │   │   │   ├── delete.md
    │   │   │   │   ├── describe-cluster.md
    │   │   │   │   ├── generate-cluster.md
    │   │   │   │   ├── generate-provider.md
    │   │   │   │   ├── generate-yaml.md
    │   │   │   │   ├── get-kubeconfig.md
    │   │   │   │   ├── init.md
    │   │   │   │   ├── move.md
    │   │   │   │   └── upgrade.md
    │   │   │   ├── configuration.md
    │   │   │   ├── developers.md
    │   │   │   ├── overview.md
    │   │   │   └── plugins.md
    │   │   ├── code-of-conduct.md
    │   │   ├── developer
    │   │   │   ├── core
    │   │   │   │   ├── controllers
    │   │   │   │   │   ├── cluster-resource-set.md
    │   │   │   │   │   ├── cluster-topology.md
    │   │   │   │   │   ├── cluster.md
    │   │   │   │   │   ├── machine-deployment.md
    │   │   │   │   │   ├── machine-health-check.md
    │   │   │   │   │   ├── machine-pool.md
    │   │   │   │   │   ├── machine-set.md
    │   │   │   │   │   ├── machine.md
    │   │   │   │   │   └── overview.md
    │   │   │   │   ├── e2e.md
    │   │   │   │   ├── logging.md
    │   │   │   │   ├── overview.md
    │   │   │   │   ├── repository-layout.md
    │   │   │   │   ├── support-multiple-instances.md
    │   │   │   │   ├── testing.md
    │   │   │   │   ├── tilt.md
    │   │   │   │   └── tuning.md
    │   │   │   ├── getting-started.md
    │   │   │   └── providers
    │   │   │   │   ├── best-practices.md
    │   │   │   │   ├── contracts
    │   │   │   │       ├── bootstrap-config.md
    │   │   │   │       ├── clusterctl.md
    │   │   │   │       ├── control-plane.md
    │   │   │   │       ├── infra-cluster.md
    │   │   │   │       ├── infra-machine.md
    │   │   │   │       ├── ipam.md
    │   │   │   │       └── overview.md
    │   │   │   │   ├── getting-started
    │   │   │   │       ├── building-running-and-testing.md
    │   │   │   │       ├── cluster-email.png
    │   │   │   │       ├── configure-the-deployment.md
    │   │   │   │       ├── controllers-and-reconciliation.md
    │   │   │   │       ├── implement-api-types.md
    │   │   │   │       ├── initialize-repo-and-api-types.md
    │   │   │   │       ├── naming.md
    │   │   │   │       ├── overview.md
    │   │   │   │       └── webhooks.md
    │   │   │   │   ├── migrations
    │   │   │   │       ├── overview.md
    │   │   │   │       ├── v1.10-to-v1.11.md
    │   │   │   │       ├── v1.8-to-v1.9.md
    │   │   │   │       └── v1.9-to-v1.10.md
    │   │   │   │   ├── overview.md
    │   │   │   │   └── security-guidelines.md
    │   │   ├── images
    │   │   │   ├── bootstrap-provider.plantuml
    │   │   │   ├── bootstrap-provider.png
    │   │   │   ├── cluster-admission-cluster-controller.plantuml
    │   │   │   ├── cluster-admission-cluster-controller.png
    │   │   │   ├── cluster-admission-machine-controller.plantuml
    │   │   │   ├── cluster-admission-machine-controller.png
    │   │   │   ├── cluster-admission-machinedeployment-controller.plantuml
    │   │   │   ├── cluster-admission-machinedeployment-controller.png
    │   │   │   ├── cluster-admission-machinedeployment-controller.svg
    │   │   │   ├── cluster-admission-machinepool-controller.plantuml
    │   │   │   ├── cluster-admission-machinepool-controller.png
    │   │   │   ├── cluster-admission-machineset-controller.plantuml
    │   │   │   ├── cluster-admission-machineset-controller.png
    │   │   │   ├── cluster-infra-provider.plantuml
    │   │   │   ├── cluster-infra-provider.png
    │   │   │   ├── cluster-resource-set-controller.plantuml
    │   │   │   ├── cluster-resource-set-controller.png
    │   │   │   ├── cluster-topology-controller.plantuml
    │   │   │   ├── cluster-topology-controller.png
    │   │   │   ├── cluster-topology-reconciller.plantuml
    │   │   │   ├── cluster-topology-reconciller.png
    │   │   │   ├── control-plane-controller.plantuml
    │   │   │   ├── control-plane-controller.png
    │   │   │   ├── describe-cluster-disable-grouping.png
    │   │   │   ├── describe-cluster-echo.png
    │   │   │   ├── describe-cluster-how-grouping-works.png
    │   │   │   ├── describe-cluster-show-conditions.png
    │   │   │   ├── describe-cluster.png
    │   │   │   ├── introduction.png
    │   │   │   ├── introduction.svg
    │   │   │   ├── kubeadm-control-plane-machines-resources.plantuml
    │   │   │   ├── kubeadm-control-plane-machines-resources.png
    │   │   │   ├── machine-infra-provider.plantuml
    │   │   │   ├── machine-infra-provider.png
    │   │   │   ├── machine-phases.plantuml
    │   │   │   ├── machine-phases.png
    │   │   │   ├── machinehealthcheck-controller.plantuml
    │   │   │   ├── machinehealthcheck-controller.png
    │   │   │   ├── management-cluster.svg
    │   │   │   ├── management-workload-same-cluster.plantuml
    │   │   │   ├── management-workload-same-cluster.png
    │   │   │   ├── management-workload-separate-clusters.plantuml
    │   │   │   ├── management-workload-separate-clusters.png
    │   │   │   ├── metadata-propagation.jpg
    │   │   │   ├── metadata-propagation.pptx
    │   │   │   ├── runtime-sdk-lifecycle-hooks.png
    │   │   │   ├── runtime-sdk-topology-mutation.plantuml
    │   │   │   ├── runtime-sdk-topology-mutation.png
    │   │   │   ├── worker-machines-resources.plantuml
    │   │   │   └── worker-machines-resources.png
    │   │   ├── introduction.md
    │   │   ├── reference
    │   │   │   ├── api
    │   │   │   │   ├── crd-relationships.md
    │   │   │   │   ├── labels-and-annotations.md
    │   │   │   │   ├── metadata-propagation.md
    │   │   │   │   ├── owner-references.md
    │   │   │   │   └── reference.md
    │   │   │   ├── glossary.md
    │   │   │   ├── ports.md
    │   │   │   ├── providers.md
    │   │   │   ├── reference.md
    │   │   │   └── versions.md
    │   │   ├── security
    │   │   │   ├── index.md
    │   │   │   └── pod-security-standards.md
    │   │   ├── tasks
    │   │   │   ├── automated-machine-management
    │   │   │   │   ├── autoscaling.md
    │   │   │   │   ├── healthchecking.md
    │   │   │   │   ├── index.md
    │   │   │   │   ├── machine_deletions.md
    │   │   │   │   └── scaling.md
    │   │   │   ├── bootstrap
    │   │   │   │   ├── index.md
    │   │   │   │   ├── kubeadm-bootstrap
    │   │   │   │   │   ├── index.md
    │   │   │   │   │   └── kubelet-config.md
    │   │   │   │   └── microk8s-bootstrap.md
    │   │   │   ├── certs
    │   │   │   │   ├── auto-rotate-certificates-in-kcp.md
    │   │   │   │   ├── generate-kubeconfig.md
    │   │   │   │   ├── index.md
    │   │   │   │   └── using-custom-certificates.md
    │   │   │   ├── cluster-resource-set.md
    │   │   │   ├── control-plane
    │   │   │   │   ├── index.md
    │   │   │   │   ├── kubeadm-control-plane.md
    │   │   │   │   └── microk8s-control-plane.md
    │   │   │   ├── diagnostics.md
    │   │   │   ├── experimental-features
    │   │   │   │   ├── cluster-class
    │   │   │   │   │   ├── change-clusterclass.md
    │   │   │   │   │   ├── index.md
    │   │   │   │   │   ├── operate-cluster.md
    │   │   │   │   │   └── write-clusterclass.md
    │   │   │   │   ├── experimental-features.md
    │   │   │   │   ├── ignition.md
    │   │   │   │   ├── machine-pools.md
    │   │   │   │   ├── machineset-preflight-checks.md
    │   │   │   │   └── runtime-sdk
    │   │   │   │   │   ├── .gitignore
    │   │   │   │   │   ├── deploy-runtime-extension.md
    │   │   │   │   │   ├── implement-extensions.md
    │   │   │   │   │   ├── implement-lifecycle-hooks.md
    │   │   │   │   │   ├── implement-topology-mutation-hook.md
    │   │   │   │   │   └── index.md
    │   │   │   ├── external-etcd.md
    │   │   │   ├── index.md
    │   │   │   ├── multiple-providers.md
    │   │   │   ├── updating-machine-templates.md
    │   │   │   ├── upgrading-cluster-api-versions.md
    │   │   │   ├── upgrading-clusters.md
    │   │   │   ├── using-kustomize.md
    │   │   │   ├── verify-container-images.md
    │   │   │   └── workload-bootstrap-gitops.md
    │   │   └── user
    │   │   │   ├── concepts.md
    │   │   │   ├── manifesto.md
    │   │   │   ├── quick-start-operator.md
    │   │   │   ├── quick-start.md
    │   │   │   └── troubleshooting.md
    │   ├── theme
    │   │   ├── css
    │   │   │   ├── chrome.css
    │   │   │   └── custom.css
    │   │   ├── favicon.png
    │   │   └── highlight.css
    │   ├── util-embed.sh
    │   ├── util-releaselink.sh
    │   └── util-tabulate.sh
    ├── community
    │   ├── 20231016-in-place-updates.md
    │   ├── 20241112-node-bootstrapping.md
    │   └── retired
    │   │   ├── 20221115-managed-kubernetes.md
    │   │   ├── 20230111-alternative-communication-patterns.md
    │   │   └── 20231018-karpenter-integration.md
    ├── proposals
    │   ├── 20181121-machine-api.md
    │   ├── 20190610-machine-states-preboot-bootstrapping.md
    │   ├── 20190709-cluster-spec-crds.md
    │   ├── 20190919-machinepool-api.md
    │   ├── 20191016-clusterctl-redesign.md
    │   ├── 20191016-e2e-test-framework.md
    │   ├── 20191017-kubeadm-based-control-plane.md
    │   ├── 20191030-machine-health-checking.md
    │   ├── 20200220-cluster-resource-set.md
    │   ├── 20200330-spot-instances.md
    │   ├── 20200423-etcd-data-disk.md
    │   ├── 20200506-conditions.md
    │   ├── 20200511-clusterctl-extensible-template-processing.md
    │   ├── 20200602-machine-deletion-phase-hooks.md
    │   ├── 20200804-windows-support.md
    │   ├── 20201020-capi-provider-operator.md
    │   ├── 20210203-externally-managed-cluster-infrastructure.md
    │   ├── 20210210-insulate-users-from-kubeadm-API-changes.md
    │   ├── 20210222-kubelet-authentication.md
    │   ├── 20210310-opt-in-autoscaling-from-zero.md
    │   ├── 20210526-cluster-class-and-managed-topologies.md
    │   ├── 20220125-ipam-integration.md
    │   ├── 20220209-machinepool-machines.md
    │   ├── 20220221-runtime-SDK.md
    │   ├── 20220330-topology-mutation-hook.md
    │   ├── 20220411-cluster-api-state-metrics.md
    │   ├── 20220414-runtime-hooks.md
    │   ├── 20220712-cluster-api-addon-orchestration.md
    │   ├── 20220725-managed-kubernetes.md
    │   ├── 20220927-labels-and-annotations-sync-between-machine-and-nodes.md
    │   ├── 20221003-In-place-propagation-of-Kubernetes-objects-only-changes.md
    │   ├── 20230407-flexible-managed-k8s-endpoints.md
    │   ├── 20240807-in-place-updates.md
    │   ├── 20240916-improve-status-in-CAPI-resources.md
    │   ├── 20240930-machine-drain-rules.md
    │   ├── 20250124-From CAPD(docker) to CAPD(dev) .md
    │   ├── YYYYMMDD-template.md
    │   └── images
    │   │   ├── capi-provider-operator
    │   │       ├── fig1.plantuml
    │   │       ├── fig1.png
    │   │       ├── fig2.plantuml
    │   │       ├── fig2.png
    │   │       ├── fig3.png
    │   │       └── fig4.png
    │   │   ├── cluster-class
    │   │       ├── create.plantuml
    │   │       ├── create.png
    │   │       ├── update.plantuml
    │   │       └── update.png
    │   │   ├── cluster-spec-crds
    │   │       ├── figure1.plantuml
    │   │       ├── figure1.png
    │   │       ├── figure2.plantuml
    │   │       └── figure2.png
    │   │   ├── clusterctl-extensible-templates
    │   │       ├── pkgCalls.plantuml
    │   │       ├── pkgCalls.png
    │   │       ├── templateClient.plantuml
    │   │       ├── templateClient.png
    │   │       ├── yamlProcessor.plantuml
    │   │       └── yamlProcessor.png
    │   │   ├── clusterctl-redesign
    │   │       ├── components.png
    │   │       ├── config.plantuml
    │   │       ├── config.png
    │   │       ├── init.plantuml
    │   │       └── init.png
    │   │   ├── conditions
    │   │       ├── cluster-provision-workflow.png
    │   │       └── upgrade-workflow.png
    │   │   ├── controlplane
    │   │       ├── controlplane-init-1.plantuml
    │   │       ├── controlplane-init-1.png
    │   │       ├── controlplane-init-2.plantuml
    │   │       ├── controlplane-init-2.png
    │   │       ├── controlplane-init-3.plantuml
    │   │       ├── controlplane-init-3.png
    │   │       ├── controlplane-init-4.plantuml
    │   │       ├── controlplane-init-4.png
    │   │       ├── controlplane-init-6.plantuml
    │   │       ├── controlplane-init-6.png
    │   │       ├── controlplane-init-7.plantuml
    │   │       └── controlplane-init-7.png
    │   │   ├── developer
    │   │       ├── diagram.plantuml
    │   │       └── diagram.png
    │   │   ├── externally-managed-cluster-infrastructure
    │   │       └── infrastructure.png
    │   │   ├── in-place-propagation
    │   │       ├── Metadata propagation.pptx
    │   │       ├── current-state.jpg
    │   │       ├── optional-changes.jpg
    │   │       └── proposed-changes.jpg
    │   │   ├── ipam-integration
    │   │       ├── consumption.png
    │   │       ├── sequence.png
    │   │       └── sequence.txt
    │   │   ├── kubelet-authentication
    │   │       ├── client-authenticator-flow.plantuml
    │   │       └── client-authenticator-flow.png
    │   │   ├── machine-health-check
    │   │       ├── mhc.plantuml
    │   │       ├── mhc.png
    │   │       └── mhc.svg
    │   │   ├── machine-states-preboot
    │   │       ├── Figure2.png
    │   │       ├── Figure3.plantuml
    │   │       ├── Figure3.png
    │   │       ├── Figure4.plantuml
    │   │       ├── Figure4.png
    │   │       ├── Figure5.plantuml
    │   │       ├── Figure5.png
    │   │       ├── Figure6.plantuml
    │   │       ├── Figure6.png
    │   │       ├── Figure7.plantuml
    │   │       ├── Figure7.png
    │   │       ├── Figure8.plantuml
    │   │       └── Figure8.png
    │   │   ├── machinepool-api
    │   │       ├── figure1.plantuml
    │   │       └── figure1.png
    │   │   ├── machinepool-machines
    │   │       ├── inframachinepool-scale-down.plantuml
    │   │       ├── inframachinepool-scale-down.png
    │   │       ├── inframachinepool-scale-up.plantuml
    │   │       ├── inframachinepool-scale-up.png
    │   │       ├── machinepool-machine-reconcile.plantuml
    │   │       ├── machinepool-machine-reconcile.png
    │   │       ├── machinepool-reconcile.plantuml
    │   │       └── machinepool-reconcile.png
    │   │   ├── runtime-hooks
    │   │       ├── runtime-hooks-openapi.yaml
    │   │       └── runtime-hooks.png
    │   │   ├── runtime-sdk
    │   │       ├── overview.png
    │   │       └── swagger-ui.png
    │   │   └── topology-mutation-hook
    │   │       ├── runtime-sdk-openapi.yaml
    │   │       ├── topology-reconciliation.plantuml
    │   │       └── topology-reconciliation.png
    └── release
    │   ├── OWNERS
    │   ├── release-cycle-overview.png
    │   ├── release-cycle.md
    │   ├── release-team-onboarding.md
    │   ├── release-team.md
    │   ├── release-templates.md
    │   ├── releases
    │       ├── release-1.10.md
    │       ├── release-1.11.md
    │       ├── release-1.3.md
    │       ├── release-1.4.md
    │       ├── release-1.5.md
    │       ├── release-1.6.md
    │       ├── release-1.7.md
    │       ├── release-1.8.md
    │       └── release-1.9.md
    │   └── role-handbooks
    │       ├── ci-signal
    │           └── README.md
    │       ├── communications
    │           └── README.md
    │       └── release-lead
    │           └── README.md
├── errors
    ├── clusters.go
    ├── consts.go
    ├── doc.go
    ├── kubeadmcontrolplane.go
    ├── machines.go
    └── pointer.go
├── exp
    ├── README.md
    ├── controllers
    │   ├── alias.go
    │   └── doc.go
    ├── doc.go
    ├── hack
    │   └── boilerplate.go.txt
    ├── internal
    │   ├── controllers
    │   │   ├── doc.go
    │   │   ├── machinepool_controller.go
    │   │   ├── machinepool_controller_noderef.go
    │   │   ├── machinepool_controller_noderef_test.go
    │   │   ├── machinepool_controller_phases.go
    │   │   ├── machinepool_controller_phases_test.go
    │   │   ├── machinepool_controller_test.go
    │   │   └── suite_test.go
    │   └── webhooks
    │   │   ├── doc.go
    │   │   ├── machinepool.go
    │   │   └── machinepool_test.go
    ├── ipam
    │   ├── internal
    │   │   └── webhooks
    │   │   │   ├── doc.go
    │   │   │   ├── ipaddress.go
    │   │   │   ├── ipaddress_test.go
    │   │   │   ├── ipaddressclaim.go
    │   │   │   └── ipaddressclaim_test.go
    │   └── webhooks
    │   │   ├── alias.go
    │   │   └── doc.go
    ├── runtime
    │   ├── catalog
    │   │   ├── builder.go
    │   │   ├── catalog.go
    │   │   ├── doc.go
    │   │   ├── openapi.go
    │   │   └── test
    │   │   │   └── catalog_test.go
    │   ├── client
    │   │   └── client.go
    │   ├── controllers
    │   │   ├── alias.go
    │   │   └── doc.go
    │   ├── internal
    │   │   └── controllers
    │   │   │   ├── doc.go
    │   │   │   ├── extensionconfig_controller.go
    │   │   │   ├── extensionconfig_controller_test.go
    │   │   │   ├── index.go
    │   │   │   ├── index_test.go
    │   │   │   ├── suite_test.go
    │   │   │   ├── warmup.go
    │   │   │   └── warmup_test.go
    │   ├── server
    │   │   └── server.go
    │   └── topologymutation
    │   │   ├── doc.go
    │   │   ├── errors.go
    │   │   ├── logRef.go
    │   │   ├── logRef_test.go
    │   │   ├── variables.go
    │   │   ├── variables_test.go
    │   │   ├── walker.go
    │   │   └── walker_test.go
    ├── topology
    │   ├── desiredstate
    │   │   ├── desired_state.go
    │   │   └── desired_state_test.go
    │   └── scope
    │   │   ├── blueprint.go
    │   │   ├── blueprint_test.go
    │   │   ├── doc.go
    │   │   ├── hookresponsetracker.go
    │   │   ├── hookresponsetracker_test.go
    │   │   ├── scope.go
    │   │   ├── scope_test.go
    │   │   ├── state.go
    │   │   ├── state_test.go
    │   │   ├── upgradetracker.go
    │   │   └── upgradetracker_test.go
    ├── util
    │   ├── suite_test.go
    │   ├── util.go
    │   └── util_test.go
    └── webhooks
    │   ├── alias.go
    │   └── doc.go
├── feature
    ├── feature.go
    └── gates.go
├── go.mod
├── go.sum
├── hack
    ├── boilerplate.go.txt
    ├── boilerplate
    │   ├── README.md
    │   ├── boilerplate.Dockerfile.txt
    │   ├── boilerplate.Makefile.txt
    │   ├── boilerplate.bzl.txt
    │   ├── boilerplate.generatebzl.txt
    │   ├── boilerplate.generatego.txt
    │   ├── boilerplate.go.txt
    │   ├── boilerplate.py
    │   ├── boilerplate.py.txt
    │   ├── boilerplate.sh.txt
    │   ├── boilerplate_test.py
    │   └── test
    │   │   ├── fail.go
    │   │   ├── fail.py
    │   │   ├── pass.go
    │   │   └── pass.py
    ├── docker-image-verify.sh
    ├── ensure-go.sh
    ├── ensure-kind.sh
    ├── ensure-trivy.sh
    ├── generate-doctoc.sh
    ├── get-project-maintainers.sh
    ├── kind-install-for-capd.sh
    ├── kind-install-for-capk.sh
    ├── kind-install.sh
    ├── observability
    │   ├── .gitignore
    │   ├── grafana
    │   │   ├── chart
    │   │   │   ├── kustomization.yaml
    │   │   │   └── values.yaml
    │   │   ├── dashboards
    │   │   │   ├── cluster-api-mgmt-apiserver-requests.json
    │   │   │   ├── cluster-api-performance.json
    │   │   │   ├── cluster-api-state.json
    │   │   │   ├── cluster-api-wl-apiserver-requests.json
    │   │   │   ├── controller-runtime.json
    │   │   │   └── runtime-extensions.json
    │   │   └── kustomization.yaml
    │   ├── kube-state-metrics
    │   │   ├── crd-sidecar-cm.yaml
    │   │   ├── crd-sidecar-patch.yaml
    │   │   ├── kustomization.yaml
    │   │   ├── rbac-crd-aggregation.yaml
    │   │   └── values.yaml
    │   ├── loki
    │   │   ├── kustomization.yaml
    │   │   └── values.yaml
    │   ├── metrics-server
    │   │   ├── kustomization.yaml
    │   │   └── values.yaml
    │   ├── namespace.yaml
    │   ├── parca
    │   │   ├── kustomization.yaml
    │   │   ├── rbac-pprof.yaml
    │   │   └── values.yaml
    │   ├── prometheus
    │   │   ├── kustomization.yaml
    │   │   └── values.yaml
    │   ├── promtail
    │   │   ├── kustomization.yaml
    │   │   └── values.yaml
    │   ├── tempo
    │   │   ├── kustomization.yaml
    │   │   └── values.yaml
    │   └── visualizer
    │   │   ├── kustomization.yaml
    │   │   └── values.yaml
    ├── pin-dependency.sh
    ├── setup-envtest-with-kind.sh
    ├── tools
    │   ├── .custom-gcl.yaml
    │   ├── conversion-verifier
    │   │   ├── doc.go
    │   │   └── main.go
    │   ├── go.mod
    │   ├── go.sum
    │   ├── internal
    │   │   ├── log-push
    │   │   │   ├── main.go
    │   │   │   └── main_test.go
    │   │   └── tilt-prepare
    │   │   │   └── main.go
    │   ├── mdbook
    │   │   ├── embed
    │   │   │   └── embed.go
    │   │   ├── releaselink
    │   │   │   └── releaselink.go
    │   │   └── tabulate
    │   │   │   └── tabulate.go
    │   ├── prowjob-gen
    │   │   ├── README.md
    │   │   ├── config.go
    │   │   ├── generator.go
    │   │   ├── main.go
    │   │   ├── main_test.go
    │   │   └── test
    │   │   │   ├── test-configuration.yaml
    │   │   │   ├── test-main.yaml.golden
    │   │   │   └── test.yaml.tpl
    │   ├── release
    │   │   ├── OWNERS
    │   │   ├── internal
    │   │   │   ├── constants.go
    │   │   │   └── update_providers
    │   │   │   │   ├── README.md
    │   │   │   │   ├── provider_issues.go
    │   │   │   │   └── provider_issues_test.go
    │   │   ├── notes
    │   │   │   ├── generator.go
    │   │   │   ├── github.go
    │   │   │   ├── list.go
    │   │   │   ├── list_test.go
    │   │   │   ├── main.go
    │   │   │   ├── main_test.go
    │   │   │   ├── print.go
    │   │   │   ├── process.go
    │   │   │   ├── ref.go
    │   │   │   ├── release_notes_integration_test.go
    │   │   │   └── test
    │   │   │   │   └── golden
    │   │   │   │       ├── v1.3.10.md
    │   │   │   │       └── v1.5.0.md
    │   │   └── weekly
    │   │   │   └── main.go
    │   ├── runtime-openapi-gen
    │   │   ├── main.go
    │   │   └── vendored_openapi.go
    │   └── triage
    │   │   ├── .gitignore
    │   │   ├── config.yaml
    │   │   └── triage-improvements.patch
    ├── utils.sh
    ├── verify-boilerplate.sh
    ├── verify-capi-book-summary.sh
    ├── verify-container-images.sh
    ├── verify-go-directive.sh
    ├── verify-import-restrictions.sh
    ├── verify-licenses.sh
    ├── verify-pr-title.sh
    ├── verify-shellcheck.sh
    ├── verify-starlark.sh
    └── version.sh
├── internal
    ├── api
    │   ├── addons
    │   │   ├── v1alpha3
    │   │   │   ├── clusterresourceset_types.go
    │   │   │   ├── clusterresourcesetbinding_types.go
    │   │   │   ├── clusterresourcesetbinding_types_test.go
    │   │   │   ├── condition_consts.go
    │   │   │   ├── conversion.go
    │   │   │   ├── conversion_test.go
    │   │   │   ├── doc.go
    │   │   │   ├── groupversion_info.go
    │   │   │   ├── zz_generated.conversion.go
    │   │   │   └── zz_generated.deepcopy.go
    │   │   └── v1alpha4
    │   │   │   ├── clusterresourceset_types.go
    │   │   │   ├── clusterresourcesetbinding_types.go
    │   │   │   ├── clusterresourcesetbinding_types_test.go
    │   │   │   ├── condition_consts.go
    │   │   │   ├── conversion.go
    │   │   │   ├── conversion_test.go
    │   │   │   ├── doc.go
    │   │   │   ├── groupversion_info.go
    │   │   │   ├── zz_generated.conversion.go
    │   │   │   └── zz_generated.deepcopy.go
    │   ├── bootstrap
    │   │   └── kubeadm
    │   │   │   ├── v1alpha3
    │   │   │       ├── condition_consts.go
    │   │   │       ├── conversion.go
    │   │   │       ├── conversion_test.go
    │   │   │       ├── doc.go
    │   │   │       ├── groupversion_info.go
    │   │   │       ├── kubeadmconfig_types.go
    │   │   │       ├── kubeadmconfigtemplate_types.go
    │   │   │       ├── upstream_bootstraptokenstring.go
    │   │   │       ├── upstream_bootstraptokenstring_test.go
    │   │   │       ├── upstream_conversion.go
    │   │   │       ├── upstream_types.go
    │   │   │       ├── zz_generated.conversion.go
    │   │   │       └── zz_generated.deepcopy.go
    │   │   │   └── v1alpha4
    │   │   │       ├── condition_consts.go
    │   │   │       ├── conversion.go
    │   │   │       ├── conversion_test.go
    │   │   │       ├── doc.go
    │   │   │       ├── groupversion_info.go
    │   │   │       ├── kubeadm_types.go
    │   │   │       ├── kubeadm_types_test.go
    │   │   │       ├── kubeadmconfig_types.go
    │   │   │       ├── kubeadmconfigtemplate_types.go
    │   │   │       ├── zz_generated.conversion.go
    │   │   │       └── zz_generated.deepcopy.go
    │   ├── controlplane
    │   │   └── kubeadm
    │   │   │   ├── v1alpha3
    │   │   │       ├── condition_consts.go
    │   │   │       ├── conversion.go
    │   │   │       ├── conversion_test.go
    │   │   │       ├── doc.go
    │   │   │       ├── groupversion_info.go
    │   │   │       ├── kubeadm_control_plane_types.go
    │   │   │       ├── zz_generated.conversion.go
    │   │   │       └── zz_generated.deepcopy.go
    │   │   │   └── v1alpha4
    │   │   │       ├── condition_consts.go
    │   │   │       ├── conversion.go
    │   │   │       ├── conversion_test.go
    │   │   │       ├── doc.go
    │   │   │       ├── groupversion_info.go
    │   │   │       ├── kubeadm_control_plane_types.go
    │   │   │       ├── kubeadmcontrolplanetemplate_types.go
    │   │   │       ├── zz_generated.conversion.go
    │   │   │       └── zz_generated.deepcopy.go
    │   └── core
    │   │   ├── v1alpha3
    │   │       ├── cluster_phase_types.go
    │   │       ├── cluster_types.go
    │   │       ├── common_types.go
    │   │       ├── condition_consts.go
    │   │       ├── condition_types.go
    │   │       ├── conversion.go
    │   │       ├── conversion_test.go
    │   │       ├── doc.go
    │   │       ├── groupversion_info.go
    │   │       ├── machine_phase_types.go
    │   │       ├── machine_types.go
    │   │       ├── machinedeployment_types.go
    │   │       ├── machinehealthcheck_types.go
    │   │       ├── machinepool_types.go
    │   │       ├── machineset_types.go
    │   │       ├── zz_generated.conversion.go
    │   │       └── zz_generated.deepcopy.go
    │   │   └── v1alpha4
    │   │       ├── cluster_phase_types.go
    │   │       ├── cluster_types.go
    │   │       ├── cluster_types_test.go
    │   │       ├── clusterclass_types.go
    │   │       ├── common_types.go
    │   │       ├── condition_consts.go
    │   │       ├── condition_types.go
    │   │       ├── conversion.go
    │   │       ├── conversion_test.go
    │   │       ├── doc.go
    │   │       ├── groupversion_info.go
    │   │       ├── machine_phase_types.go
    │   │       ├── machine_types.go
    │   │       ├── machinedeployment_types.go
    │   │       ├── machinehealthcheck_types.go
    │   │       ├── machinepool_types.go
    │   │       ├── machineset_types.go
    │   │       ├── zz_generated.conversion.go
    │   │       └── zz_generated.deepcopy.go
    ├── contract
    │   ├── bootstrap.go
    │   ├── bootstrap_config_template.go
    │   ├── bootstrap_test.go
    │   ├── controlplane.go
    │   ├── controlplane_template.go
    │   ├── controlplane_test.go
    │   ├── doc.go
    │   ├── infrastructure_cluster.go
    │   ├── infrastructure_cluster_template.go
    │   ├── infrastructure_cluster_test.go
    │   ├── infrastructure_machine.go
    │   ├── infrastructure_machine_template.go
    │   ├── infrastructure_machine_test.go
    │   ├── infrastructure_machinepool_template.go
    │   ├── metadata.go
    │   ├── metadata_test.go
    │   ├── references.go
    │   ├── references_test.go
    │   ├── types.go
    │   ├── types_test.go
    │   ├── version.go
    │   └── version_test.go
    ├── controllers
    │   ├── cluster
    │   │   ├── cluster_controller.go
    │   │   ├── cluster_controller_phases.go
    │   │   ├── cluster_controller_phases_test.go
    │   │   ├── cluster_controller_status.go
    │   │   ├── cluster_controller_status_test.go
    │   │   ├── cluster_controller_test.go
    │   │   ├── doc.go
    │   │   └── suite_test.go
    │   ├── clusterclass
    │   │   ├── clusterclass_controller.go
    │   │   ├── clusterclass_controller_status.go
    │   │   ├── clusterclass_controller_status_test.go
    │   │   ├── clusterclass_controller_test.go
    │   │   ├── doc.go
    │   │   └── suite_test.go
    │   ├── clusterresourceset
    │   │   ├── clusterresourceset_controller.go
    │   │   ├── clusterresourceset_controller_test.go
    │   │   ├── clusterresourceset_helpers.go
    │   │   ├── clusterresourceset_helpers_test.go
    │   │   ├── clusterresourceset_scope.go
    │   │   ├── clusterresourceset_scope_test.go
    │   │   ├── doc.go
    │   │   ├── predicates
    │   │   │   └── resource_predicates.go
    │   │   └── suite_test.go
    │   ├── clusterresourcesetbinding
    │   │   ├── clusterresourcesetbinding_controller.go
    │   │   └── doc.go
    │   ├── machine
    │   │   ├── doc.go
    │   │   ├── drain
    │   │   │   ├── drain.go
    │   │   │   ├── drain_test.go
    │   │   │   ├── filters.go
    │   │   │   └── filters_test.go
    │   │   ├── machine_controller.go
    │   │   ├── machine_controller_noderef.go
    │   │   ├── machine_controller_noderef_test.go
    │   │   ├── machine_controller_phases.go
    │   │   ├── machine_controller_phases_test.go
    │   │   ├── machine_controller_status.go
    │   │   ├── machine_controller_status_test.go
    │   │   ├── machine_controller_test.go
    │   │   ├── machine_helpers.go
    │   │   ├── machine_helpers_test.go
    │   │   └── suite_test.go
    │   ├── machinedeployment
    │   │   ├── doc.go
    │   │   ├── machinedeployment_controller.go
    │   │   ├── machinedeployment_controller_test.go
    │   │   ├── machinedeployment_rolling.go
    │   │   ├── machinedeployment_rolling_test.go
    │   │   ├── machinedeployment_rollout_ondelete.go
    │   │   ├── machinedeployment_status.go
    │   │   ├── machinedeployment_status_test.go
    │   │   ├── machinedeployment_sync.go
    │   │   ├── machinedeployment_sync_test.go
    │   │   ├── mdutil
    │   │   │   ├── doc.go
    │   │   │   ├── util.go
    │   │   │   └── util_test.go
    │   │   └── suite_test.go
    │   ├── machinehealthcheck
    │   │   ├── doc.go
    │   │   ├── machinehealthcheck_controller.go
    │   │   ├── machinehealthcheck_controller_test.go
    │   │   ├── machinehealthcheck_status_matcher_test.go
    │   │   ├── machinehealthcheck_targets.go
    │   │   ├── machinehealthcheck_targets_test.go
    │   │   └── suite_test.go
    │   ├── machineset
    │   │   ├── doc.go
    │   │   ├── machineset_controller.go
    │   │   ├── machineset_controller_status.go
    │   │   ├── machineset_controller_status_test.go
    │   │   ├── machineset_controller_test.go
    │   │   ├── machineset_delete_policy.go
    │   │   ├── machineset_delete_policy_test.go
    │   │   ├── machineset_preflight.go
    │   │   ├── machineset_preflight_test.go
    │   │   └── suite_test.go
    │   └── topology
    │   │   ├── OWNERS
    │   │   ├── cluster
    │   │       ├── blueprint.go
    │   │       ├── blueprint_test.go
    │   │       ├── cluster_controller.go
    │   │       ├── cluster_controller_test.go
    │   │       ├── conditions.go
    │   │       ├── conditions_test.go
    │   │       ├── current_state.go
    │   │       ├── current_state_test.go
    │   │       ├── doc.go
    │   │       ├── patches
    │   │       │   ├── api
    │   │       │   │   └── interface.go
    │   │       │   ├── engine.go
    │   │       │   ├── engine_test.go
    │   │       │   ├── external
    │   │       │   │   ├── external_patch_generator.go
    │   │       │   │   ├── external_patch_generator_test.go
    │   │       │   │   └── external_validator.go
    │   │       │   ├── inline
    │   │       │   │   ├── json_patch_generator.go
    │   │       │   │   └── json_patch_generator_test.go
    │   │       │   ├── patch.go
    │   │       │   ├── patch_test.go
    │   │       │   ├── template.go
    │   │       │   └── variables
    │   │       │   │   ├── errors.go
    │   │       │   │   ├── value.go
    │   │       │   │   ├── value_test.go
    │   │       │   │   ├── variables.go
    │   │       │   │   └── variables_test.go
    │   │       ├── reconcile_state.go
    │   │       ├── reconcile_state_test.go
    │   │       ├── structuredmerge
    │   │       │   ├── doc.go
    │   │       │   ├── drop_diff.go
    │   │       │   ├── drop_diff_test.go
    │   │       │   ├── dryrun.go
    │   │       │   ├── dryrun_test.go
    │   │       │   ├── interfaces.go
    │   │       │   ├── options.go
    │   │       │   ├── serversidepathhelper.go
    │   │       │   ├── serversidepathhelper_test.go
    │   │       │   └── suite_test.go
    │   │       ├── suite_test.go
    │   │       ├── util.go
    │   │       └── util_test.go
    │   │   ├── machinedeployment
    │   │       ├── doc.go
    │   │       ├── machinedeployment_controller.go
    │   │       ├── machinedeployment_controller_test.go
    │   │       └── suite_test.go
    │   │   └── machineset
    │   │       ├── doc.go
    │   │       ├── machineset_controller.go
    │   │       ├── machineset_controller_test.go
    │   │       ├── suite_test.go
    │   │       ├── util.go
    │   │       └── util_test.go
    ├── goproxy
    │   ├── doc.go
    │   ├── goproxy.go
    │   ├── goproxy_test.go
    │   └── test
    │   │   └── test_utils.go
    ├── hooks
    │   ├── tracking.go
    │   └── tracking_test.go
    ├── runtime
    │   ├── client
    │   │   ├── client.go
    │   │   ├── client_test.go
    │   │   └── fake
    │   │   │   └── fake_client.go
    │   ├── metrics
    │   │   └── metrics.go
    │   ├── registry
    │   │   ├── doc.go
    │   │   ├── registry.go
    │   │   └── registry_test.go
    │   └── test
    │   │   ├── v1alpha1
    │   │       ├── conversion.go
    │   │       ├── conversion_test.go
    │   │       ├── doc.go
    │   │       ├── fake_types.go
    │   │       ├── groupversion_info.go
    │   │       ├── zz_generated.conversion.go
    │   │       └── zz_generated.deepcopy.go
    │   │   └── v1alpha2
    │   │       ├── doc.go
    │   │       ├── fake_types.go
    │   │       ├── groupversion_info.go
    │   │       └── zz_generated.deepcopy.go
    ├── test
    │   └── envtest
    │   │   ├── doc.go
    │   │   ├── environment.go
    │   │   └── webhooks.go
    ├── topology
    │   ├── check
    │   │   ├── compatibility.go
    │   │   ├── compatibility_test.go
    │   │   ├── upgrade.go
    │   │   └── upgrade_test.go
    │   ├── clustershim
    │   │   └── clustershim.go
    │   ├── names
    │   │   ├── names.go
    │   │   └── names_test.go
    │   ├── ownerrefs
    │   │   └── ownerref.go
    │   ├── selectors
    │   │   └── selectors.go
    │   ├── upgrade
    │   │   ├── clusterctl_upgrade_test.go
    │   │   ├── doc.go
    │   │   ├── suite_test.go
    │   │   └── test
    │   │   │   ├── t1
    │   │   │       ├── crd
    │   │   │       │   ├── test.cluster.x-k8s.io_testresources.yaml
    │   │   │       │   └── test.cluster.x-k8s.io_testresourcetemplates.yaml
    │   │   │       ├── v1beta1
    │   │   │       │   ├── groupversion_info.go
    │   │   │       │   ├── types.go
    │   │   │       │   └── zz_generated.deepcopy.go
    │   │   │       └── webhook
    │   │   │       │   └── webhook.go
    │   │   │   └── t2
    │   │   │       ├── crd
    │   │   │           ├── test.cluster.x-k8s.io_testresources.yaml
    │   │   │           └── test.cluster.x-k8s.io_testresourcetemplates.yaml
    │   │   │       ├── v1beta1
    │   │   │           ├── conversion.go
    │   │   │           ├── conversion_test.go
    │   │   │           ├── doc.go
    │   │   │           ├── groupversion_info.go
    │   │   │           ├── types.go
    │   │   │           ├── zz_generated.conversion.go
    │   │   │           └── zz_generated.deepcopy.go
    │   │   │       ├── v1beta2
    │   │   │           ├── conversion.go
    │   │   │           ├── groupversion_info.go
    │   │   │           ├── types.go
    │   │   │           └── zz_generated.deepcopy.go
    │   │   │       └── webhook
    │   │   │           └── webhook.go
    │   └── variables
    │   │   ├── cluster_variable_defaulting.go
    │   │   ├── cluster_variable_defaulting_test.go
    │   │   ├── cluster_variable_validation.go
    │   │   ├── cluster_variable_validation_test.go
    │   │   ├── clusterclass_variable_validation.go
    │   │   ├── clusterclass_variable_validation_test.go
    │   │   ├── doc.go
    │   │   ├── schema.go
    │   │   ├── schema_test.go
    │   │   └── utils.go
    ├── util
    │   ├── compare
    │   │   ├── equal.go
    │   │   └── equal_test.go
    │   ├── hash
    │   │   └── hash.go
    │   ├── ssa
    │   │   ├── cache.go
    │   │   ├── filterintent.go
    │   │   ├── filterintent_test.go
    │   │   ├── managedfields.go
    │   │   ├── managedfields_test.go
    │   │   ├── matchers.go
    │   │   ├── metrics.go
    │   │   ├── patch.go
    │   │   ├── patch_test.go
    │   │   └── suite_test.go
    │   ├── taints
    │   │   ├── taints.go
    │   │   └── taints_test.go
    │   └── tree
    │   │   ├── doc.go
    │   │   ├── tree.go
    │   │   └── tree_test.go
    └── webhooks
    │   ├── cluster.go
    │   ├── cluster_test.go
    │   ├── clusterclass.go
    │   ├── clusterclass_test.go
    │   ├── clusterresourceset_webhook.go
    │   ├── clusterresourceset_webhook_test.go
    │   ├── clusterresourcesetbinding_webhook.go
    │   ├── clusterresourcesetbinding_webhook_test.go
    │   ├── doc.go
    │   ├── machine.go
    │   ├── machine_test.go
    │   ├── machinedeployment.go
    │   ├── machinedeployment_test.go
    │   ├── machinedrainrules.go
    │   ├── machinehealthcheck.go
    │   ├── machinehealthcheck_test.go
    │   ├── machineset.go
    │   ├── machineset_test.go
    │   ├── patch_validation.go
    │   ├── patch_validation_test.go
    │   ├── runtime
    │       ├── doc.go
    │       ├── extensionconfig_webhook.go
    │       └── extensionconfig_webhook_test.go
    │   ├── test
    │       ├── clusterclass_test.go
    │       ├── doc.go
    │       ├── machinedrainrules_test.go
    │       └── suite_test.go
    │   └── util
    │       └── util.go
├── logos
    ├── LICENSE.md
    ├── README.md
    ├── icons
    │   ├── CAPI icons.ai
    │   ├── README.md
    │   ├── cluster.png
    │   ├── cluster.svg
    │   ├── machine-deployment.png
    │   ├── machine-deployment.svg
    │   ├── machine-set.png
    │   ├── machine-set.svg
    │   ├── machine.png
    │   └── machine.svg
    ├── kubernetes-cluster-logos_1.pdf
    ├── kubernetes-cluster-logos_2.pdf
    ├── kubernetes-cluster-logos_final-01.svg
    └── kubernetes-cluster-logos_final-02.svg
├── main.go
├── metadata.yaml
├── netlify.toml
├── scripts
    ├── build-kind.sh
    ├── ci-apidiff.sh
    ├── ci-build.sh
    ├── ci-e2e-lib.sh
    ├── ci-e2e.sh
    ├── ci-test.sh
    ├── ci-verify.sh
    ├── go_install.sh
    ├── install-mdbook.sh
    └── lint-dockerfiles.sh
├── test
    ├── OWNERS
    ├── README.md
    ├── e2e
    │   ├── .gitignore
    │   ├── autoscaler.go
    │   ├── autoscaler_test.go
    │   ├── cluster_deletion.go
    │   ├── cluster_deletion_test.go
    │   ├── cluster_upgrade.go
    │   ├── cluster_upgrade_runtimesdk.go
    │   ├── cluster_upgrade_runtimesdk_test.go
    │   ├── cluster_upgrade_test.go
    │   ├── clusterclass_changes.go
    │   ├── clusterclass_changes_test.go
    │   ├── clusterclass_rollout.go
    │   ├── clusterclass_rollout_test.go
    │   ├── clusterctl_upgrade.go
    │   ├── clusterctl_upgrade_test.go
    │   ├── common.go
    │   ├── config
    │   │   └── docker.yaml
    │   ├── custom_assertions.go
    │   ├── data
    │   │   ├── autoscaler
    │   │   │   └── autoscaler-to-workload-workload.yaml
    │   │   ├── cni
    │   │   │   └── kindnet
    │   │   │   │   └── kindnet.yaml
    │   │   ├── infrastructure-docker
    │   │   │   ├── README.md
    │   │   │   ├── main
    │   │   │   │   ├── bases
    │   │   │   │   │   ├── cluster-with-kcp.yaml
    │   │   │   │   │   ├── cluster-with-topology.yaml
    │   │   │   │   │   ├── crs.yaml
    │   │   │   │   │   ├── md.yaml
    │   │   │   │   │   └── mp.yaml
    │   │   │   │   ├── cluster-template-ignition
    │   │   │   │   │   ├── ignition.yaml
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template-in-memory.yaml
    │   │   │   │   ├── cluster-template-ipv6
    │   │   │   │   │   ├── cluster-ipv6.yaml
    │   │   │   │   │   ├── kcp-ipv6.yaml
    │   │   │   │   │   ├── kustomization.yaml
    │   │   │   │   │   └── md-ipv6.yaml
    │   │   │   │   ├── cluster-template-kcp-adoption
    │   │   │   │   │   ├── step1
    │   │   │   │   │   │   ├── cluster-with-cp0.yaml
    │   │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   │   └── step2
    │   │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template-kcp-pre-drain
    │   │   │   │   │   ├── cluster.yaml
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template-kcp-remediation
    │   │   │   │   │   ├── cluster-with-kcp.yaml
    │   │   │   │   │   ├── kustomization.yaml
    │   │   │   │   │   └── mhc.yaml
    │   │   │   │   ├── cluster-template-kcp-scale-in
    │   │   │   │   │   ├── kcp-scale-in-variable.yaml
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template-machine-pool
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template-md-remediation
    │   │   │   │   │   ├── kustomization.yaml
    │   │   │   │   │   ├── md.yaml
    │   │   │   │   │   └── mhc.yaml
    │   │   │   │   ├── cluster-template-topology-autoscaler
    │   │   │   │   │   ├── cluster-autoscaler.yaml
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template-topology-dualstack-ipv4-primary
    │   │   │   │   │   ├── cluster.yaml
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template-topology-dualstack-ipv6-primary
    │   │   │   │   │   ├── cluster.yaml
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template-topology-kcp-only
    │   │   │   │   │   ├── cluster-topology-class.yaml
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template-topology-no-workers
    │   │   │   │   │   ├── disable-control-plane-taint-variable.yaml
    │   │   │   │   │   ├── kustomization.yaml
    │   │   │   │   │   └── remove-topology-workers.yaml
    │   │   │   │   ├── cluster-template-topology
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template-upgrades-runtimesdk
    │   │   │   │   │   ├── cluster-runtimesdk.yaml
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template-upgrades
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── clusterclass-in-memory.yaml
    │   │   │   │   ├── clusterclass-quick-start-kcp-only
    │   │   │   │   │   ├── clusterclass-name.yaml
    │   │   │   │   │   ├── kustomization.yaml
    │   │   │   │   │   ├── remove-worker-patches.yaml
    │   │   │   │   │   └── remove-workers.yaml
    │   │   │   │   ├── clusterclass-quick-start-runtimesdk.yaml
    │   │   │   │   └── clusterclass-quick-start.yaml
    │   │   │   ├── v0.3
    │   │   │   │   ├── bases
    │   │   │   │   │   ├── cluster-with-kcp.yaml
    │   │   │   │   │   ├── crs.yaml
    │   │   │   │   │   └── md.yaml
    │   │   │   │   └── cluster-template
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   ├── v0.4
    │   │   │   │   ├── bases
    │   │   │   │   │   ├── cluster-with-kcp.yaml
    │   │   │   │   │   ├── crs.yaml
    │   │   │   │   │   └── md.yaml
    │   │   │   │   └── cluster-template
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   ├── v1.10
    │   │   │   │   ├── bases
    │   │   │   │   │   ├── cluster-with-kcp.yaml
    │   │   │   │   │   ├── cluster-with-topology.yaml
    │   │   │   │   │   ├── crs.yaml
    │   │   │   │   │   └── md.yaml
    │   │   │   │   ├── cluster-template-topology
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   └── clusterclass-quick-start.yaml
    │   │   │   ├── v1.5
    │   │   │   │   ├── bases
    │   │   │   │   │   ├── cluster-with-kcp.yaml
    │   │   │   │   │   ├── cluster-with-topology.yaml
    │   │   │   │   │   ├── crs.yaml
    │   │   │   │   │   └── md.yaml
    │   │   │   │   ├── cluster-template-topology
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   └── clusterclass-quick-start.yaml
    │   │   │   ├── v1.6
    │   │   │   │   ├── bases
    │   │   │   │   │   ├── cluster-with-kcp.yaml
    │   │   │   │   │   ├── cluster-with-topology.yaml
    │   │   │   │   │   ├── crs.yaml
    │   │   │   │   │   ├── md.yaml
    │   │   │   │   │   └── mp.yaml
    │   │   │   │   ├── cluster-template-topology
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   └── clusterclass-quick-start.yaml
    │   │   │   ├── v1.8
    │   │   │   │   ├── bases
    │   │   │   │   │   ├── cluster-with-kcp.yaml
    │   │   │   │   │   ├── cluster-with-topology.yaml
    │   │   │   │   │   ├── crs.yaml
    │   │   │   │   │   └── md.yaml
    │   │   │   │   ├── cluster-template-topology
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   ├── cluster-template
    │   │   │   │   │   └── kustomization.yaml
    │   │   │   │   └── clusterclass-quick-start.yaml
    │   │   │   └── v1.9
    │   │   │   │   ├── bases
    │   │   │   │       ├── cluster-with-kcp.yaml
    │   │   │   │       ├── cluster-with-topology.yaml
    │   │   │   │       ├── crs.yaml
    │   │   │   │       └── md.yaml
    │   │   │   │   ├── cluster-template-topology
    │   │   │   │       └── kustomization.yaml
    │   │   │   │   ├── cluster-template
    │   │   │   │       └── kustomization.yaml
    │   │   │   │   └── clusterclass-quick-start.yaml
    │   │   ├── kubetest
    │   │   │   ├── conformance.yaml
    │   │   │   └── dualstack.yaml
    │   │   └── shared
    │   │   │   ├── main
    │   │   │       └── metadata.yaml
    │   │   │   ├── v0.3
    │   │   │       └── metadata.yaml
    │   │   │   ├── v0.4
    │   │   │       └── metadata.yaml
    │   │   │   ├── v1.10
    │   │   │       └── metadata.yaml
    │   │   │   ├── v1.5
    │   │   │       └── metadata.yaml
    │   │   │   ├── v1.6
    │   │   │       └── metadata.yaml
    │   │   │   ├── v1.8
    │   │   │       └── metadata.yaml
    │   │   │   └── v1.9
    │   │   │       └── metadata.yaml
    │   ├── doc.go
    │   ├── e2e_suite_test.go
    │   ├── internal
    │   │   └── log
    │   │   │   ├── doc.go
    │   │   │   └── log.go
    │   ├── k8s_conformance.go
    │   ├── k8s_conformance_test.go
    │   ├── kcp_adoption.go
    │   ├── kcp_adoption_test.go
    │   ├── kcp_remediations.go
    │   ├── kcp_remediations_test.go
    │   ├── machine_pool.go
    │   ├── machine_pool_test.go
    │   ├── md_remediations.go
    │   ├── md_remediations_test.go
    │   ├── md_rollout.go
    │   ├── md_rollout_test.go
    │   ├── md_scale.go
    │   ├── md_scale_test.go
    │   ├── node_drain.go
    │   ├── node_drain_test.go
    │   ├── quick_start.go
    │   ├── quick_start_test.go
    │   ├── scale.go
    │   ├── scale_test.go
    │   ├── self_hosted.go
    │   └── self_hosted_test.go
    ├── extension
    │   ├── .import-restrictions
    │   ├── Dockerfile
    │   ├── config
    │   │   ├── certmanager
    │   │   │   ├── certificate.yaml
    │   │   │   ├── kustomization.yaml
    │   │   │   └── kustomizeconfig.yaml
    │   │   ├── default
    │   │   │   ├── kustomization.yaml
    │   │   │   ├── manager.yaml
    │   │   │   ├── manager_image_patch.yaml
    │   │   │   ├── manager_pull_policy.yaml
    │   │   │   ├── manager_webhook_patch.yaml
    │   │   │   ├── namespace.yaml
    │   │   │   └── service.yaml
    │   │   ├── rbac
    │   │   │   ├── kustomization.yaml
    │   │   │   ├── leader_election_role.yaml
    │   │   │   ├── leader_election_role_binding.yaml
    │   │   │   ├── role.yaml
    │   │   │   ├── role_binding.yaml
    │   │   │   └── service_account.yaml
    │   │   └── tilt
    │   │   │   └── extensionconfig.yaml
    │   ├── handlers
    │   │   ├── lifecycle
    │   │   │   └── handlers.go
    │   │   └── topologymutation
    │   │   │   ├── handler.go
    │   │   │   ├── handler_integration_test.go
    │   │   │   ├── handler_test.go
    │   │   │   └── testdata
    │   │   │       └── clusterclass-quick-start-runtimesdk.yaml
    │   └── main.go
    ├── framework
    │   ├── OWNERS
    │   ├── README.md
    │   ├── alltypes_helpers.go
    │   ├── autoscaler_helpers.go
    │   ├── bootstrap
    │   │   ├── interfaces.go
    │   │   ├── kind_provider.go
    │   │   └── kind_util.go
    │   ├── cluster_helpers.go
    │   ├── cluster_proxy.go
    │   ├── cluster_topology_helpers.go
    │   ├── clusterctl
    │   │   ├── ca_injection.go
    │   │   ├── client.go
    │   │   ├── clusterctl_config.go
    │   │   ├── clusterctl_helpers.go
    │   │   ├── doc.go
    │   │   ├── e2e_config.go
    │   │   ├── e2e_config_test.go
    │   │   ├── logger
    │   │   │   ├── log_file.go
    │   │   │   └── logger.go
    │   │   └── repository.go
    │   ├── clusterresourceset_helpers.go
    │   ├── clusterresourceset_helpers_test.go
    │   ├── control_plane.go
    │   ├── controller_helpers.go
    │   ├── controlplane_helpers.go
    │   ├── convenience.go
    │   ├── convenience_test.go
    │   ├── crdmigration_helpers.go
    │   ├── daemonset_helpers.go
    │   ├── deployment_helpers.go
    │   ├── deployment_helpers_test.go
    │   ├── doc.go
    │   ├── docker_logcollector.go
    │   ├── exec
    │   │   └── command.go
    │   ├── finalizers_helpers.go
    │   ├── ginkgoextensions
    │   │   └── output.go
    │   ├── interfaces.go
    │   ├── internal
    │   │   └── log
    │   │   │   └── log.go
    │   ├── kubernetesversions
    │   │   ├── data
    │   │   │   ├── debian_injection_script.envsubst.sh.tpl
    │   │   │   └── kustomization.yaml
    │   │   ├── template.go
    │   │   ├── versions.go
    │   │   └── versions_test.go
    │   ├── kubetest
    │   │   ├── run.go
    │   │   └── setup.go
    │   ├── machine_helpers.go
    │   ├── machinedeployment_helpers.go
    │   ├── machinehealthcheck_helpers.go
    │   ├── machinepool_helpers.go
    │   ├── machines.go
    │   ├── machineset_helpers.go
    │   ├── namespace_helpers.go
    │   ├── node_helpers.go
    │   ├── ownerreference_helpers.go
    │   ├── pod_helpers.go
    │   ├── resourceversion_helpers.go
    │   ├── spec_helpers.go
    │   └── suite_helpers.go
    ├── go.mod
    ├── go.sum
    └── infrastructure
    │   ├── container
    │       ├── docker.go
    │       ├── fake.go
    │       ├── interface.go
    │       └── interface_test.go
    │   ├── docker
    │       ├── .gitignore
    │       ├── Dockerfile
    │       ├── OWNERS
    │       ├── README.md
    │       ├── api
    │       │   ├── .import-restrictions
    │       │   ├── v1alpha3
    │       │   │   ├── .import-restrictions
    │       │   │   ├── condition_consts.go
    │       │   │   ├── conversion.go
    │       │   │   ├── conversion_test.go
    │       │   │   ├── doc.go
    │       │   │   ├── dockercluster_types.go
    │       │   │   ├── dockermachine_types.go
    │       │   │   ├── dockermachinetemplate_types.go
    │       │   │   ├── groupversion_info.go
    │       │   │   ├── zz_generated.conversion.go
    │       │   │   └── zz_generated.deepcopy.go
    │       │   ├── v1alpha4
    │       │   │   ├── .import-restrictions
    │       │   │   ├── condition_consts.go
    │       │   │   ├── conversion.go
    │       │   │   ├── conversion_test.go
    │       │   │   ├── doc.go
    │       │   │   ├── dockercluster_types.go
    │       │   │   ├── dockerclustertemplate_types.go
    │       │   │   ├── dockermachine_types.go
    │       │   │   ├── dockermachinetemplate_types.go
    │       │   │   ├── groupversion_info.go
    │       │   │   ├── zz_generated.conversion.go
    │       │   │   └── zz_generated.deepcopy.go
    │       │   ├── v1beta1
    │       │   │   ├── .import-restrictions
    │       │   │   ├── condition_consts.go
    │       │   │   ├── conversion.go
    │       │   │   ├── conversion_test.go
    │       │   │   ├── devcluster_types.go
    │       │   │   ├── devclustertemplate_types.go
    │       │   │   ├── devmachine_types.go
    │       │   │   ├── devmachinetemplate_types.go
    │       │   │   ├── doc.go
    │       │   │   ├── dockercluster_types.go
    │       │   │   ├── dockerclustertemplate_types.go
    │       │   │   ├── dockermachine_types.go
    │       │   │   ├── dockermachinetemplate_types.go
    │       │   │   ├── groupversion_info.go
    │       │   │   ├── v1beta2_condition_consts.go
    │       │   │   ├── zz_generated.conversion.go
    │       │   │   └── zz_generated.deepcopy.go
    │       │   └── v1beta2
    │       │   │   ├── conversion.go
    │       │   │   ├── devcluster_types.go
    │       │   │   ├── devclustertemplate_types.go
    │       │   │   ├── devmachine_types.go
    │       │   │   ├── devmachinetemplate_types.go
    │       │   │   ├── doc.go
    │       │   │   ├── dockercluster_types.go
    │       │   │   ├── dockerclustertemplate_types.go
    │       │   │   ├── dockermachine_types.go
    │       │   │   ├── dockermachinetemplate_types.go
    │       │   │   ├── groupversion_info.go
    │       │   │   ├── v1beta1_condition_consts.go
    │       │   │   └── zz_generated.deepcopy.go
    │       ├── config
    │       │   ├── certmanager
    │       │   │   ├── certificate.yaml
    │       │   │   ├── kustomization.yaml
    │       │   │   └── kustomizeconfig.yaml
    │       │   ├── crd
    │       │   │   ├── bases
    │       │   │   │   ├── infrastructure.cluster.x-k8s.io_devclusters.yaml
    │       │   │   │   ├── infrastructure.cluster.x-k8s.io_devclustertemplates.yaml
    │       │   │   │   ├── infrastructure.cluster.x-k8s.io_devmachines.yaml
    │       │   │   │   ├── infrastructure.cluster.x-k8s.io_devmachinetemplates.yaml
    │       │   │   │   ├── infrastructure.cluster.x-k8s.io_dockerclusters.yaml
    │       │   │   │   ├── infrastructure.cluster.x-k8s.io_dockerclustertemplates.yaml
    │       │   │   │   ├── infrastructure.cluster.x-k8s.io_dockermachinepools.yaml
    │       │   │   │   ├── infrastructure.cluster.x-k8s.io_dockermachinepooltemplates.yaml
    │       │   │   │   ├── infrastructure.cluster.x-k8s.io_dockermachines.yaml
    │       │   │   │   └── infrastructure.cluster.x-k8s.io_dockermachinetemplates.yaml
    │       │   │   ├── kustomization.yaml
    │       │   │   ├── kustomizeconfig.yaml
    │       │   │   └── patches
    │       │   │   │   ├── webhook_in_devclusters.yaml
    │       │   │   │   ├── webhook_in_devclustertemplates.yaml
    │       │   │   │   ├── webhook_in_devmachines.yaml
    │       │   │   │   ├── webhook_in_devmachinetemplates.yaml
    │       │   │   │   ├── webhook_in_dockerclusters.yaml
    │       │   │   │   ├── webhook_in_dockerclustertemplates.yaml
    │       │   │   │   ├── webhook_in_dockermachinepools.yaml
    │       │   │   │   ├── webhook_in_dockermachinepooltemplates.yaml
    │       │   │   │   ├── webhook_in_dockermachines.yaml
    │       │   │   │   └── webhook_in_dockermachinetemplates.yaml
    │       │   ├── default
    │       │   │   ├── kustomization.yaml
    │       │   │   ├── manager_image_patch.yaml
    │       │   │   ├── manager_pull_policy.yaml
    │       │   │   ├── manager_webhook_patch.yaml
    │       │   │   ├── namespace.yaml
    │       │   │   └── webhookcainjection_patch.yaml
    │       │   ├── manager
    │       │   │   ├── kustomization.yaml
    │       │   │   └── manager.yaml
    │       │   ├── rbac
    │       │   │   ├── kustomization.yaml
    │       │   │   ├── leader_election_role.yaml
    │       │   │   ├── leader_election_role_binding.yaml
    │       │   │   ├── role.yaml
    │       │   │   ├── role_binding.yaml
    │       │   │   └── service_account.yaml
    │       │   └── webhook
    │       │   │   ├── kustomization.yaml
    │       │   │   ├── kustomizeconfig.yaml
    │       │   │   ├── manifests.yaml
    │       │   │   └── service.yaml
    │       ├── controllers
    │       │   └── alias.go
    │       ├── examples
    │       │   ├── machine-pool.yaml
    │       │   ├── simple-cluster-ipv6.yaml
    │       │   ├── simple-cluster-without-kcp.yaml
    │       │   └── simple-cluster.yaml
    │       ├── exp
    │       │   ├── README.md
    │       │   ├── api
    │       │   │   ├── .import-restrictions
    │       │   │   ├── v1alpha3
    │       │   │   │   ├── .import-restrictions
    │       │   │   │   ├── conversion.go
    │       │   │   │   ├── conversion_test.go
    │       │   │   │   ├── doc.go
    │       │   │   │   ├── dockermachinepool_types.go
    │       │   │   │   ├── groupversion_info.go
    │       │   │   │   ├── zz_generated.conversion.go
    │       │   │   │   └── zz_generated.deepcopy.go
    │       │   │   ├── v1alpha4
    │       │   │   │   ├── .import-restrictions
    │       │   │   │   ├── conversion.go
    │       │   │   │   ├── conversion_test.go
    │       │   │   │   ├── doc.go
    │       │   │   │   ├── dockermachinepool_types.go
    │       │   │   │   ├── groupversion_info.go
    │       │   │   │   ├── zz_generated.conversion.go
    │       │   │   │   └── zz_generated.deepcopy.go
    │       │   │   ├── v1beta1
    │       │   │   │   ├── .import-restrictions
    │       │   │   │   ├── conversion.go
    │       │   │   │   ├── conversion_test.go
    │       │   │   │   ├── doc.go
    │       │   │   │   ├── dockermachinepool_types.go
    │       │   │   │   ├── dockermachinepooltemplate_types.go
    │       │   │   │   ├── groupversion_info.go
    │       │   │   │   ├── zz_generated.conversion.go
    │       │   │   │   └── zz_generated.deepcopy.go
    │       │   │   └── v1beta2
    │       │   │   │   ├── conversion.go
    │       │   │   │   ├── doc.go
    │       │   │   │   ├── dockermachinepool_types.go
    │       │   │   │   ├── dockermachinepooltemplate_types.go
    │       │   │   │   ├── groupversion_info.go
    │       │   │   │   └── zz_generated.deepcopy.go
    │       │   ├── controllers
    │       │   │   ├── alias.go
    │       │   │   └── exp.go
    │       │   ├── internal
    │       │   │   ├── controllers
    │       │   │   │   ├── dockermachinepool_controller.go
    │       │   │   │   └── dockermachinepool_controller_phases.go
    │       │   │   └── webhooks
    │       │   │   │   ├── doc.go
    │       │   │   │   └── dockermachinepool_webhook.go
    │       │   └── webhooks
    │       │   │   ├── alias.go
    │       │   │   └── doc.go
    │       ├── internal
    │       │   ├── controllers
    │       │   │   ├── backends
    │       │   │   │   ├── cluster.go
    │       │   │   │   ├── doc.go
    │       │   │   │   ├── docker
    │       │   │   │   │   ├── dockercluster_backend.go
    │       │   │   │   │   └── dockermachine_backend.go
    │       │   │   │   ├── inmemory
    │       │   │   │   │   ├── README.md
    │       │   │   │   │   ├── architecture.drawio.svg
    │       │   │   │   │   ├── inmemorycluster_backend.go
    │       │   │   │   │   ├── inmemorymachine_backend.go
    │       │   │   │   │   └── inmemorymachine_controller_test.go
    │       │   │   │   └── machine.go
    │       │   │   ├── devcluster_controller.go
    │       │   │   ├── devmachine_controller.go
    │       │   │   ├── doc.go
    │       │   │   ├── dockercluster_controller.go
    │       │   │   ├── dockermachine_controller.go
    │       │   │   ├── dockermachine_controller_test.go
    │       │   │   └── suite_test.go
    │       │   ├── docker
    │       │   │   ├── doc.go
    │       │   │   ├── errors.go
    │       │   │   ├── loadbalancer.go
    │       │   │   ├── machine.go
    │       │   │   ├── manager.go
    │       │   │   ├── manager_test.go
    │       │   │   ├── types
    │       │   │   │   ├── node.go
    │       │   │   │   └── node_test.go
    │       │   │   └── util.go
    │       │   ├── loadbalancer
    │       │   │   ├── config.go
    │       │   │   ├── config_test.go
    │       │   │   ├── const.go
    │       │   │   └── doc.go
    │       │   ├── provisioning
    │       │   │   ├── cloudinit
    │       │   │   │   ├── adapter.go
    │       │   │   │   ├── adapter_test.go
    │       │   │   │   ├── doc.go
    │       │   │   │   ├── runcmd.go
    │       │   │   │   ├── runcmd_test.go
    │       │   │   │   ├── unknown.go
    │       │   │   │   ├── unknown_test.go
    │       │   │   │   ├── writefiles.go
    │       │   │   │   └── writefiles_test.go
    │       │   │   ├── commands.go
    │       │   │   └── ignition
    │       │   │   │   ├── OWNERS
    │       │   │   │   ├── doc.go
    │       │   │   │   ├── kindadapter.go
    │       │   │   │   └── kindadapter_test.go
    │       │   └── webhooks
    │       │   │   ├── devcluster_webhook.go
    │       │   │   ├── devclustertemplate_webhook.go
    │       │   │   ├── devclustertemplate_webhook_test.go
    │       │   │   ├── devmachine_webhook.go
    │       │   │   ├── devmachinetemplate_webhook.go
    │       │   │   ├── devmachinetemplate_webhook_test.go
    │       │   │   ├── doc.go
    │       │   │   ├── dockercluster_webhook.go
    │       │   │   ├── dockerclustertemplate_webhook.go
    │       │   │   ├── dockerclustertemplate_webhook_test.go
    │       │   │   ├── dockermachinetemplate_webhook.go
    │       │   │   └── dockermachinetemplate_webhook_test.go
    │       ├── main.go
    │       ├── templates
    │       │   ├── cluster-template-development-mp.yaml
    │       │   ├── cluster-template-development.yaml
    │       │   ├── cluster-template-in-memory.yaml
    │       │   ├── clusterclass-in-memory.yaml
    │       │   └── clusterclass-quick-start.yaml
    │       └── webhooks
    │       │   ├── alias.go
    │       │   └── doc.go
    │   ├── inmemory
    │       ├── OWNERS
    │       └── pkg
    │       │   ├── cloud
    │       │       └── api
    │       │       │   └── v1alpha1
    │       │       │       ├── etcdcluster_annotations.go
    │       │       │       ├── groupversion_info.go
    │       │       │       ├── machine_types.go
    │       │       │       └── zz_generated.deepcopy.go
    │       │   ├── runtime
    │       │       ├── alias.go
    │       │       ├── cache
    │       │       │   ├── cache.go
    │       │       │   ├── cache_test.go
    │       │       │   ├── client.go
    │       │       │   ├── client_test.go
    │       │       │   ├── doc.go
    │       │       │   ├── gc.go
    │       │       │   ├── gc_test.go
    │       │       │   ├── hooks.go
    │       │       │   ├── informer.go
    │       │       │   ├── sync.go
    │       │       │   └── sync_test.go
    │       │       ├── client
    │       │       │   ├── client.go
    │       │       │   └── doc.go
    │       │       ├── doc.go
    │       │       ├── manager
    │       │       │   ├── doc.go
    │       │       │   └── manager.go
    │       │       └── resourcegroup
    │       │       │   ├── cached_resourcegroup.go
    │       │       │   ├── doc.go
    │       │       │   └── resourcegroup.go
    │       │   └── server
    │       │       ├── api
    │       │           ├── const.go
    │       │           ├── debug.go
    │       │           ├── doc.go
    │       │           ├── handler.go
    │       │           ├── metrics.go
    │       │           ├── portforward
    │       │           │   ├── doc.go
    │       │           │   └── httpstreams.go
    │       │           └── watch.go
    │       │       ├── certs.go
    │       │       ├── doc.go
    │       │       ├── etcd
    │       │           ├── doc.go
    │       │           ├── handler.go
    │       │           ├── handler_test.go
    │       │           └── metrics.go
    │       │       ├── listener.go
    │       │       ├── mux.go
    │       │       ├── mux_test.go
    │       │       └── proxy
    │       │           ├── addr.go
    │       │           ├── conn.go
    │       │           ├── dial.go
    │       │           ├── doc.go
    │       │           └── proxy.go
    │   └── kind
    │       ├── mapper.go
    │       └── mapper_test.go
├── util
    ├── annotations
    │   ├── helpers.go
    │   └── helpers_test.go
    ├── apiwarnings
    │   ├── doc.go
    │   ├── expressions.go
    │   ├── handler.go
    │   └── handler_test.go
    ├── cache
    │   ├── cache.go
    │   ├── cache_test.go
    │   └── doc.go
    ├── certs
    │   ├── certs.go
    │   ├── certs_test.go
    │   ├── consts.go
    │   └── types.go
    ├── collections
    │   ├── helpers.go
    │   ├── machine_collection.go
    │   ├── machine_collection_test.go
    │   ├── machine_filters.go
    │   ├── machine_filters_test.go
    │   └── suite_test.go
    ├── conditions
    │   ├── aggregate.go
    │   ├── aggregate_test.go
    │   ├── deprecated
    │   │   └── v1beta1
    │   │   │   ├── doc.go
    │   │   │   ├── getter.go
    │   │   │   ├── getter_test.go
    │   │   │   ├── matcher.go
    │   │   │   ├── matcher_test.go
    │   │   │   ├── matchers.go
    │   │   │   ├── merge.go
    │   │   │   ├── merge_strategies.go
    │   │   │   ├── merge_strategies_test.go
    │   │   │   ├── merge_test.go
    │   │   │   ├── patch.go
    │   │   │   ├── patch_test.go
    │   │   │   ├── setter.go
    │   │   │   ├── setter_test.go
    │   │   │   ├── suite_test.go
    │   │   │   ├── unstructured.go
    │   │   │   └── unstructured_test.go
    │   ├── doc.go
    │   ├── getter.go
    │   ├── getter_test.go
    │   ├── matcher.go
    │   ├── matcher_test.go
    │   ├── merge_strategies.go
    │   ├── merge_strategies_test.go
    │   ├── mirror.go
    │   ├── mirror_test.go
    │   ├── options.go
    │   ├── patch.go
    │   ├── patch_test.go
    │   ├── setter.go
    │   ├── setter_test.go
    │   ├── sort.go
    │   ├── sort_test.go
    │   ├── summary.go
    │   └── summary_test.go
    ├── container
    │   ├── image.go
    │   └── image_test.go
    ├── contract
    │   ├── contract.go
    │   └── doc.go
    ├── conversion
    │   ├── conversion.go
    │   └── conversion_test.go
    ├── deprecated
    │   └── v1beta1
    │   │   ├── conditions
    │   │       ├── doc.go
    │   │       ├── getter.go
    │   │       ├── getter_test.go
    │   │       ├── matcher.go
    │   │       ├── matcher_test.go
    │   │       ├── matchers.go
    │   │       ├── merge.go
    │   │       ├── merge_strategies.go
    │   │       ├── merge_strategies_test.go
    │   │       ├── merge_test.go
    │   │       ├── patch.go
    │   │       ├── patch_test.go
    │   │       ├── setter.go
    │   │       ├── setter_test.go
    │   │       ├── suite_test.go
    │   │       ├── unstructured.go
    │   │       ├── unstructured_test.go
    │   │       └── v1beta2
    │   │       │   ├── aggregate.go
    │   │       │   ├── aggregate_test.go
    │   │       │   ├── doc.go
    │   │       │   ├── getter.go
    │   │       │   ├── getter_test.go
    │   │       │   ├── matcher.go
    │   │       │   ├── matcher_test.go
    │   │       │   ├── merge_strategies.go
    │   │       │   ├── merge_strategies_test.go
    │   │       │   ├── mirror.go
    │   │       │   ├── mirror_test.go
    │   │       │   ├── options.go
    │   │       │   ├── patch.go
    │   │       │   ├── patch_test.go
    │   │       │   ├── setter.go
    │   │       │   ├── setter_test.go
    │   │       │   ├── sort.go
    │   │       │   ├── sort_test.go
    │   │       │   ├── summary.go
    │   │       │   └── summary_test.go
    │   │   ├── patch
    │   │       ├── doc.go
    │   │       ├── options.go
    │   │       ├── patch.go
    │   │       ├── patch_test.go
    │   │       ├── suite_test.go
    │   │       ├── utils.go
    │   │       └── utils_test.go
    │   │   ├── paused
    │   │       ├── paused.go
    │   │       └── paused_test.go
    │   │   └── test
    │   │       └── builder
    │   │           ├── crd
    │   │               ├── deprecatedtest.cluster.x-k8s.io_phase0obj.yaml
    │   │               ├── deprecatedtest.cluster.x-k8s.io_phase1obj.yaml
    │   │               ├── deprecatedtest.cluster.x-k8s.io_phase2obj.yaml
    │   │               └── deprecatedtest.cluster.x-k8s.io_phase3obj.yaml
    │   │           ├── doc.go
    │   │           ├── v1beta2_transition.go
    │   │           └── zz_generated.deepcopy.go
    ├── failuredomains
    │   ├── failure_domains.go
    │   └── failure_domains_test.go
    ├── finalizers
    │   ├── finalizers.go
    │   └── finalizers_test.go
    ├── flags
    │   ├── manager.go
    │   └── manager_test.go
    ├── kubeconfig
    │   ├── kubeconfig.go
    │   ├── kubeconfig_test.go
    │   └── testing.go
    ├── labels
    │   ├── format
    │   │   ├── helpers.go
    │   │   └── helpers_test.go
    │   ├── helpers.go
    │   └── helpers_test.go
    ├── log
    │   ├── doc.go
    │   ├── log.go
    │   └── log_test.go
    ├── patch
    │   ├── doc.go
    │   ├── options.go
    │   ├── patch.go
    │   ├── patch_test.go
    │   ├── suite_test.go
    │   ├── utils.go
    │   └── utils_test.go
    ├── paused
    │   ├── paused.go
    │   └── paused_test.go
    ├── predicates
    │   ├── cluster_predicates.go
    │   ├── cluster_predicates_test.go
    │   └── generic_predicates.go
    ├── record
    │   └── recorder.go
    ├── resource
    │   ├── resource.go
    │   └── resource_test.go
    ├── retry.go
    ├── secret
    │   ├── certificates.go
    │   ├── certificates_test.go
    │   ├── consts.go
    │   ├── doc.go
    │   ├── secret.go
    │   └── secret_test.go
    ├── suite_test.go
    ├── test
    │   └── builder
    │   │   ├── README.md
    │   │   ├── bootstrap.go
    │   │   ├── builders.go
    │   │   ├── controlplane.go
    │   │   ├── crd
    │   │       ├── test.cluster.x-k8s.io_phase0obj.yaml
    │   │       ├── test.cluster.x-k8s.io_phase1obj.yaml
    │   │       ├── test.cluster.x-k8s.io_phase2obj.yaml
    │   │       └── test.cluster.x-k8s.io_phase3obj.yaml
    │   │   ├── crds.go
    │   │   ├── doc.go
    │   │   ├── infrastructure.go
    │   │   ├── remediation.go
    │   │   ├── v1beta2_transition.go
    │   │   └── zz_generated.deepcopy.go
    ├── topology
    │   ├── topology.go
    │   └── topology_test.go
    ├── util.go
    ├── util_test.go
    ├── version
    │   ├── version.go
    │   └── version_test.go
    └── yaml
    │   ├── yaml.go
    │   └── yaml_test.go
├── version
    └── version.go
└── webhooks
    ├── alias.go
    └── doc.go


/.gitattributes:
--------------------------------------------------------------------------------
1 | # Hide generated crd yamls by default in the Github diff UX
2 | **/config/crd/bases/*.yaml linguist-generated=true
3 | cmd/clusterctl/config/manifest/clusterctl-api.yaml linguist-generated=true


--------------------------------------------------------------------------------
/.github/workflows/pr-verify.yaml:
--------------------------------------------------------------------------------
 1 | name: PR title verifier
 2 | 
 3 | on:
 4 |   pull_request_target:
 5 |     types: [opened, edited, synchronize, reopened]
 6 | 
 7 | jobs:
 8 |   verify:
 9 |     runs-on: ubuntu-latest
10 | 
11 |     steps:
12 |       - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # tag=v4.2.2
13 | 
14 |       - name: Check if PR title is valid
15 |         env:
16 |           PR_TITLE: ${{ github.event.pull_request.title }}
17 |         run: |
18 |           ./hack/verify-pr-title.sh "${PR_TITLE}"
19 | 
20 | 


--------------------------------------------------------------------------------
/.markdownlinkcheck.json:
--------------------------------------------------------------------------------
 1 | {
 2 |     "ignorePatterns": [{
 3 |         "pattern": "^http://localhost"
 4 |     },{
 5 |         "pattern": "https://azure.microsoft.com/en-us/products/kubernetes-service"
 6 |     }],
 7 |     "httpHeaders": [{
 8 |         "comment": "Workaround as suggested here: https://github.com/tcort/markdown-link-check/issues/201",
 9 |         "urls": ["https://docs.github.com/"],
10 |         "headers": {
11 |             "Accept-Encoding": "zstd, br, gzip, deflate"
12 |         }
13 |     }],
14 |     "timeout": "10s",
15 |     "retryOn429": true,
16 |     "retryCount": 5,
17 |     "fallbackRetryDelay": "30s",
18 |     "aliveStatusCodes": [200, 206]
19 | }
20 | 


--------------------------------------------------------------------------------
/CHANGELOG/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs at https://go.k8s.io/owners
2 | 
3 | approvers:
4 |   - cluster-api-release-lead
5 | 
6 | reviewers:
7 |   - cluster-api-release-team
8 | 


--------------------------------------------------------------------------------
/CHANGELOG/README.md:
--------------------------------------------------------------------------------
1 | # CHANGELOG
2 | 
3 | This folder contains release notes for past releases. Changes to this folder in the main branch trigger a GitHub Action that creates release tags and a draft release.
4 | 
5 | See [release documentation](../docs/release/release-team.md) for more information.
6 | 


--------------------------------------------------------------------------------
/CHANGELOG/v1.7.8.md:
--------------------------------------------------------------------------------
 1 | ## 👌 Kubernetes version support
 2 | 
 3 | - Management Cluster: v1.26.x -> v1.30.x
 4 | - Workload Cluster: v1.24.x -> v1.30.x
 5 | 
 6 | [More information about version support can be found here](https://cluster-api.sigs.k8s.io/reference/versions.html)
 7 | 
 8 | ## Changes since v1.7.7
 9 | ## :chart_with_upwards_trend: Overview
10 | - 2 new commits merged
11 | 
12 | ## :seedling: Others
13 | - clusterctl: Bump cert-manager to 1.16.1 (#11324)
14 | - Dependency: Uplift Go 1.22.8 (#11360)
15 | 
16 | ## Dependencies
17 | 
18 | ### Added
19 | _Nothing has changed._
20 | 
21 | ### Changed
22 | _Nothing has changed._
23 | 
24 | ### Removed
25 | _Nothing has changed._
26 | 
27 | _Thanks to all our contributors!_ 😊
28 | 


--------------------------------------------------------------------------------
/OWNERS:
--------------------------------------------------------------------------------
 1 | # See the OWNERS docs at https://go.k8s.io/owners for information on OWNERS files.
 2 | # See the OWNERS_ALIASES file at https://github.com/kubernetes-sigs/cluster-api/blob/main/OWNERS_ALIASES for a list of members for each alias.
 3 | 
 4 | approvers:
 5 |   - sig-cluster-lifecycle-leads
 6 |   - cluster-api-admins
 7 |   - cluster-api-maintainers
 8 | 
 9 | reviewers:
10 |   - cluster-api-maintainers
11 |   - cluster-api-reviewers
12 | 
13 | emeritus_approvers:
14 |   - CecileRobertMichon
15 |   - chuckha
16 |   - detiber
17 |   - kris-nova
18 |   - ncdc
19 |   - roberthbailey
20 |   - davidewatson
21 |   - ykakarap
22 |   - killianmuldoon
23 | 
24 | 


--------------------------------------------------------------------------------
/SECURITY_CONTACTS:
--------------------------------------------------------------------------------
 1 | # Defined below are the security contacts for this repo.
 2 | #
 3 | # They are the contact point for the Product Security Team to reach out
 4 | # to for triaging and handling of incoming issues.
 5 | #
 6 | # The below names agree to abide by the
 7 | # [Embargo Policy](https://git.k8s.io/sig-release/security-release-process-documentation/security-release-process.md#embargo-policy)
 8 | # and will be removed and replaced if they violate that agreement.
 9 | #
10 | # DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE
11 | # INSTRUCTIONS AT https://kubernetes.io/security/
12 | 
13 | fabriziopandini
14 | justinsb
15 | neolit123
16 | timothysc
17 | vincepri
18 | CecileRobertMichon
19 | 


--------------------------------------------------------------------------------
/api/.import-restrictions:
--------------------------------------------------------------------------------
 1 | rules:
 2 |   # Enforce that our APIs do not depend on internal packages.
 3 |   - selectorRegexp: .*internal.*
 4 |     allowedPrefixes: []
 5 |     forbiddenPrefixes: []
 6 |   # Enforce that our APIs do not depend on CR packages.
 7 |   # This is overwritten e.g. in packages that require conversion.
 8 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
 9 |     allowedPrefixes: []
10 |     forbiddenPrefixes:
11 |       - "sigs.k8s.io/controller-runtime"
12 | 


--------------------------------------------------------------------------------
/api/addons/v1beta1/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/api/bootstrap/kubeadm/v1beta1/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/api/controlplane/kubeadm/v1beta1/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/api/core/v1beta1/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/api/core/v1beta2/index/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/api/ipam/v1alpha1/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/api/ipam/v1beta1/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/api/ipam/v1beta2/conversion.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2025 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | package v1beta2
18 | 
19 | func (*IPAddress) Hub()      {}
20 | func (*IPAddressClaim) Hub() {}
21 | 


--------------------------------------------------------------------------------
/api/runtime/v1alpha1/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/api/runtime/v1beta2/conversion.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2025 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | package v1beta2
18 | 
19 | func (*ExtensionConfig) Hub() {}
20 | 


--------------------------------------------------------------------------------
/api/runtime/v1beta2/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2025 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package v1beta2 contains the v1beta2 implementation of ExtensionConfig.
18 | package v1beta2
19 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs at https://go.k8s.io/owners
2 | 
3 | approvers:
4 |   - cluster-api-bootstrap-provider-kubeadm-maintainers
5 | 
6 | reviewers:
7 |   - cluster-api-reviewers
8 |   - cluster-api-bootstrap-provider-kubeadm-reviewers
9 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/certmanager/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - certificate.yaml
3 | 
4 | configurations:
5 | - kustomizeconfig.yaml
6 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/certmanager/kustomizeconfig.yaml:
--------------------------------------------------------------------------------
1 | # This configuration is for teaching kustomize how to update name ref and var substitution
2 | nameReference:
3 | - kind: Issuer
4 |   group: cert-manager.io
5 |   fieldSpecs:
6 |   - kind: Certificate
7 |     group: cert-manager.io
8 |     path: spec/issuerRef/name
9 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/crd/kustomizeconfig.yaml:
--------------------------------------------------------------------------------
 1 | # This file is for teaching kustomize how to substitute name and namespace reference in CRD
 2 | nameReference:
 3 |   - kind: Service
 4 |     version: v1
 5 |     fieldSpecs:
 6 |       - kind: CustomResourceDefinition
 7 |         group: apiextensions.k8s.io
 8 |         path: spec/conversion/webhook/clientConfig/service/name
 9 | 
10 | namespace:
11 |   - kind: CustomResourceDefinition
12 |     group: apiextensions.k8s.io
13 |     path: spec/conversion/webhook/clientConfig/service/namespace
14 |     create: false
15 | 
16 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/crd/patches/webhook_in_kubeadmconfigs.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: kubeadmconfigs.bootstrap.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: capi-kubeadm-bootstrap-webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/crd/patches/webhook_in_kubeadmconfigtemplates.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: kubeadmconfigtemplates.bootstrap.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/default/manager_image_patch.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |         - image: gcr.io/k8s-staging-cluster-api/kubeadm-bootstrap-controller:main
11 |           name: manager
12 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/default/manager_pull_policy.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       - name: manager
11 |         imagePullPolicy: Always
12 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/default/manager_webhook_patch.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       - name: manager
11 |         ports:
12 |         - containerPort: 9443
13 |           name: webhook-server
14 |           protocol: TCP
15 |         volumeMounts:
16 |         - mountPath: /tmp/k8s-webhook-server/serving-certs
17 |           name: cert
18 |           readOnly: true
19 |       volumes:
20 |       - name: cert
21 |         secret:
22 |           secretName: capi-kubeadm-bootstrap-webhook-service-cert
23 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/default/namespace.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Namespace
3 | metadata:
4 |   labels:
5 |     control-plane: controller-manager
6 |   name: system
7 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/default/webhookcainjection_patch.yaml:
--------------------------------------------------------------------------------
 1 | ---
 2 | apiVersion: admissionregistration.k8s.io/v1
 3 | kind: MutatingWebhookConfiguration
 4 | metadata:
 5 |   name: mutating-webhook-configuration
 6 |   annotations:
 7 |     cert-manager.io/inject-ca-from: CERTIFICATE_NAMESPACE/CERTIFICATE_NAME
 8 | ---
 9 | apiVersion: admissionregistration.k8s.io/v1
10 | kind: ValidatingWebhookConfiguration
11 | metadata:
12 |   name: validating-webhook-configuration
13 |   annotations:
14 |     cert-manager.io/inject-ca-from: CERTIFICATE_NAMESPACE/CERTIFICATE_NAME
15 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/manager/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - manager.yaml
3 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/rbac/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - role.yaml
3 | - role_binding.yaml
4 | - service_account.yaml
5 | - leader_election_role.yaml
6 | - leader_election_role_binding.yaml
7 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/rbac/leader_election_role.yaml:
--------------------------------------------------------------------------------
 1 | # permissions to do leader election.
 2 | apiVersion: rbac.authorization.k8s.io/v1
 3 | kind: Role
 4 | metadata:
 5 |   name: leader-election-role
 6 | rules:
 7 | - apiGroups:
 8 |   - ""
 9 |   resources:
10 |   - events
11 |   verbs:
12 |   - create
13 | - apiGroups:
14 |   - "coordination.k8s.io"
15 |   resources:
16 |   - leases
17 |   verbs:
18 |   - get
19 |   - list
20 |   - watch
21 |   - create
22 |   - update
23 |   - patch
24 |   - delete
25 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/rbac/leader_election_role_binding.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: RoleBinding
 3 | metadata:
 4 |   name: leader-election-rolebinding
 5 | roleRef:
 6 |   apiGroup: rbac.authorization.k8s.io
 7 |   kind: Role
 8 |   name: leader-election-role
 9 | subjects:
10 | - kind: ServiceAccount
11 |   name: manager
12 |   namespace: system
13 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/rbac/role_binding.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: ClusterRoleBinding
 3 | metadata:
 4 |   name: manager-rolebinding
 5 | roleRef:
 6 |   apiGroup: rbac.authorization.k8s.io
 7 |   kind: ClusterRole
 8 |   name: manager-role
 9 | subjects:
10 | - kind: ServiceAccount
11 |   name: manager
12 |   namespace: system
13 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/rbac/service_account.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ServiceAccount
3 | metadata:
4 |   name: manager
5 |   namespace: system
6 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/webhook/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - manifests.yaml
3 | - service.yaml
4 | 
5 | configurations:
6 | - kustomizeconfig.yaml
7 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/config/webhook/service.yaml:
--------------------------------------------------------------------------------
 1 | 
 2 | apiVersion: v1
 3 | kind: Service
 4 | metadata:
 5 |   name: webhook-service
 6 |   namespace: system
 7 | spec:
 8 |   ports:
 9 |     - port: 443
10 |       targetPort: webhook-server
11 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/controllers/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package controllers implements the Kubeadm controllers.
18 | package controllers
19 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/internal/cloudinit/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package cloudinit implements kubeadm cloudinit functionality.
18 | package cloudinit
19 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/internal/controllers/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package controllers implements the Kubeadm controllers.
18 | package controllers
19 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/internal/ignition/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs at https://go.k8s.io/owners
2 | 
3 | approvers:
4 |   - cluster-api-bootstrap-provider-kubeadm-ignition-maintainers
5 | 
6 | reviewers:
7 |   - cluster-api-reviewers
8 |   - cluster-api-bootstrap-provider-kubeadm-ignition-reviewers
9 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/types/README.md:
--------------------------------------------------------------------------------
 1 | # Kubeadm types
 2 | 
 3 | These types were copied in from `kubernetes/kubernetes`.
 4 | 
 5 | The types found in `kubernetes/kubernetes` are incompatible with `controller-gen@v0.2`.
 6 | 
 7 | `controller-gen@v0.2` requires that all fields of all embedded types have json struct tags and kubeadm types are missing a few.
 8 | 
 9 | If the kubeadm types ever escape `kubernetes/kubernetes` then we will adopt those assuming the types do all have json struct tags.
10 | 


--------------------------------------------------------------------------------
/bootstrap/kubeadm/types/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package utils contains Kubeadm utility types.
18 | package utils
19 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs at https://go.k8s.io/owners
2 | 
3 | approvers:
4 |   - cluster-api-clusterctl-maintainers
5 | 
6 | reviewers:
7 |   - cluster-api-reviewers
8 |   - cluster-api-clusterctl-reviewers


--------------------------------------------------------------------------------
/cmd/clusterctl/README.md:
--------------------------------------------------------------------------------
1 | # Clusterctl
2 | 
3 | ## Compatibility notice
4 | 
5 | The `clusterctl` CLI is developed in lock-step with Cluster API. We strongly recommend using the latest released version for the series you're using. For example, if you're managing clusters with Cluster API v0.3.7, the `clusterctl` version should be >= v0.3.7.
6 | 
7 | When this package is used as a library, we do not currently provide any compatibility guarantees. We will make reasonable efforts to follow a typical deprecation period prior to removal, but breaking changes can happen when necessary.
8 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/api/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes: []
4 |     forbiddenPrefixes:
5 |       - "sigs.k8s.io/controller-runtime"
6 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/client/alpha/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package alpha implements clusterctl alpha functionality.
18 | package alpha
19 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/client/cluster/assets/cert-manager-test-resources.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: v1
 2 | kind: Namespace
 3 | metadata:
 4 |   name: cert-manager-test
 5 | ---
 6 | apiVersion: cert-manager.io/v1
 7 | kind: Issuer
 8 | metadata:
 9 |   name: test-selfsigned
10 |   namespace: cert-manager-test
11 | spec:
12 |   selfSigned: {}
13 | ---
14 | apiVersion: cert-manager.io/v1
15 | kind: Certificate
16 | metadata:
17 |   name: selfsigned-cert
18 |   namespace: cert-manager-test
19 | spec:
20 |   dnsNames:
21 |   - example.com
22 |   secretName: selfsigned-cert-tls
23 |   issuerRef:
24 |     name: test-selfsigned
25 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/client/cluster/assets/topology-test/modified-CP-dockermachinepooltemplate.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
 2 | kind: DockerMachinePoolTemplate
 3 | metadata:
 4 |   name: "docker-worker-machinepooltemplate"
 5 |   namespace: default
 6 | spec:
 7 |   template:
 8 |     metadata:
 9 |       labels:
10 |         docker-machinepool-template: test-template-worker
11 |     spec:
12 |       extraMounts:
13 |       - containerPath: "/var/run/docker.sock"
14 |         hostPath: "/var/run/docker.sock"
15 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/client/cluster/assets/topology-test/modified-CP-dockermachinetemplate.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
 2 | kind: DockerMachineTemplate
 3 | metadata:
 4 |   name: "control-plane"
 5 |   namespace: default
 6 | spec:
 7 |   template:
 8 |     metadata:
 9 |       labels:
10 |         docker-machine-template: test-template-control-plane
11 |     spec:
12 |       extraMounts:
13 |       - containerPath: "/var/run/docker.sock"
14 |         hostPath: "/var/run/docker.sock"


--------------------------------------------------------------------------------
/cmd/clusterctl/client/cluster/assets/topology-test/modified-my-cluster.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: cluster.x-k8s.io/v1beta2
 2 | kind: Cluster
 3 | metadata:
 4 |   name: "my-cluster"
 5 |   namespace: default
 6 |   labels:
 7 |     cni: kindnet
 8 | spec:
 9 |   clusterNetwork:
10 |     services:
11 |       cidrBlocks: ["10.128.0.0/12"]
12 |     pods:
13 |       cidrBlocks: ["192.168.0.0/16"]
14 |     serviceDomain: "cluster.local"
15 |   topology:
16 |     classRef:
17 |       name: my-cluster-class
18 |     version: v1.21.2
19 |     controlPlane:
20 |       metadata: {}
21 |       replicas: 3
22 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/client/cluster/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package cluster implements clusterctl cluster functionality.
18 | package cluster
19 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/client/config/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package config implements clusterctl config functionality.
18 | package config
19 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/client/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package client implements clusterctl client functionality.
18 | package client
19 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/client/repository/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package repository implements clusterctl repository functionality.
18 | package repository
19 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/cmd/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package cmd implements clusterctl commands.
18 | package cmd
19 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/config/crd/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 | 
4 | resources:
5 | - bases/clusterctl.cluster.x-k8s.io_providers.yaml
6 | #- bases/clusterctl.cluster.x-k8s.io_metadata.yaml excluding metadata from the CRD manifest generation because metadata will be used as a ComponentConfig file only


--------------------------------------------------------------------------------
/cmd/clusterctl/internal/test/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package test implements test functionality.
18 | package test
19 | 


--------------------------------------------------------------------------------
/cmd/clusterctl/internal/util/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package util implements clusterctl utilty functions.
18 | package util
19 | 


--------------------------------------------------------------------------------
/code-of-conduct.md:
--------------------------------------------------------------------------------
1 | # Kubernetes Community Code of Conduct
2 | 
3 | Please refer to our [Kubernetes Community Code of Conduct](https://git.k8s.io/community/code-of-conduct.md)
4 | 


--------------------------------------------------------------------------------
/config/certmanager/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 | resources:
4 | - certificate.yaml
5 | 
6 | configurations:
7 | - kustomizeconfig.yaml
8 | 


--------------------------------------------------------------------------------
/config/certmanager/kustomizeconfig.yaml:
--------------------------------------------------------------------------------
 1 | # This configuration is for teaching kustomize how to update name ref and var substitution
 2 | nameReference:
 3 | - kind: Issuer
 4 |   group: cert-manager.io
 5 |   fieldSpecs:
 6 |   - kind: Certificate
 7 |     group: cert-manager.io
 8 |     path: spec/issuerRef/name
 9 | 
10 | 


--------------------------------------------------------------------------------
/config/crd/kustomizeconfig.yaml:
--------------------------------------------------------------------------------
 1 | # This file is for teaching kustomize how to substitute name and namespace reference in CRD
 2 | nameReference:
 3 | - kind: Service
 4 |   version: v1
 5 |   fieldSpecs:
 6 |   - kind: CustomResourceDefinition
 7 |     group: apiextensions.k8s.io
 8 |     path: spec/conversion/webhook/clientConfig/service/name
 9 | 
10 | namespace:
11 | - kind: CustomResourceDefinition
12 |   group: apiextensions.k8s.io
13 |   path: spec/conversion/webhook/clientConfig/service/namespace
14 |   create: false
15 | 
16 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_clusterclasses.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: clusterclasses.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_clusterresourcesetbindings.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: clusterresourcesetbindings.addons.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_clusterresourcesets.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: clusterresourcesets.addons.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_clusters.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: clusters.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_extensionconfigs.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: extensionconfigs.runtime.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_ipaddressclaims.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: ipaddressclaims.ipam.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_ipaddresses.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: ipaddresses.ipam.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_machinedeployments.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: machinedeployments.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_machinedrainrules.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: machinedrainrules.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_machinehealthchecks.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: machinehealthchecks.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_machinepools.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: machinepools.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_machines.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: machines.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/crd/patches/webhook_in_machinesets.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: machinesets.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/config/default/manager_image_patch.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       - image: gcr.io/k8s-staging-cluster-api/cluster-api-controller:main
11 |         name: manager
12 | 


--------------------------------------------------------------------------------
/config/default/manager_pull_policy.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       - name: manager
11 |         imagePullPolicy: Always
12 | 


--------------------------------------------------------------------------------
/config/default/manager_role_aggregation_patch.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: ClusterRole
 3 | metadata:
 4 |   name: manager-role
 5 |   labels:
 6 |     cluster.x-k8s.io/aggregate-to-manager: "true"
 7 | ---
 8 | apiVersion: rbac.authorization.k8s.io/v1
 9 | kind: ClusterRoleBinding
10 | metadata:
11 |   name: manager-rolebinding
12 | roleRef:
13 |   apiGroup: rbac.authorization.k8s.io
14 |   kind: ClusterRole
15 |   name: aggregated-manager-role
16 | 


--------------------------------------------------------------------------------
/config/default/manager_webhook_patch.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       - name: manager
11 |         ports:
12 |         - containerPort: 9443
13 |           name: webhook-server
14 |           protocol: TCP
15 |         volumeMounts:
16 |         - mountPath: /tmp/k8s-webhook-server/serving-certs
17 |           name: cert
18 |           readOnly: true
19 |       volumes:
20 |       - name: cert
21 |         secret:
22 |           secretName: capi-webhook-service-cert
23 | 


--------------------------------------------------------------------------------
/config/default/namespace.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Namespace
3 | metadata:
4 |   labels:
5 |     control-plane: controller-manager
6 |   name: system
7 | 


--------------------------------------------------------------------------------
/config/default/webhookcainjection_patch.yaml:
--------------------------------------------------------------------------------
 1 | # This patch add annotation to admission webhook config and
 2 | # the variables CERTIFICATE_NAMESPACE and CERTIFICATE_NAME will be substituted by kustomize.
 3 | # uncomment the following lines to enable mutating webhook
 4 | apiVersion: admissionregistration.k8s.io/v1
 5 | kind: MutatingWebhookConfiguration
 6 | metadata:
 7 |   name: mutating-webhook-configuration
 8 |   annotations:
 9 |     cert-manager.io/inject-ca-from: CERTIFICATE_NAMESPACE/CERTIFICATE_NAME
10 | ---
11 | apiVersion: admissionregistration.k8s.io/v1
12 | kind: ValidatingWebhookConfiguration
13 | metadata:
14 |   name: validating-webhook-configuration
15 |   annotations:
16 |     cert-manager.io/inject-ca-from: CERTIFICATE_NAMESPACE/CERTIFICATE_NAME
17 | 


--------------------------------------------------------------------------------
/config/manager/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - manager.yaml
3 | 


--------------------------------------------------------------------------------
/config/metrics/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | resources:
 2 |   - ./crd-clusterrole.yaml
 3 | 
 4 | namespace: observability
 5 | 
 6 | configMapGenerator:
 7 | - name: kube-state-metrics-crd-config-capi
 8 |   files:
 9 |   - capi.yaml=crd-metrics-config.yaml
10 |   options:
11 |     disableNameSuffixHash: true
12 |     labels:
13 |       kube-state-metrics/custom-resource: "true"
14 | 


--------------------------------------------------------------------------------
/config/metrics/templates/README.md:
--------------------------------------------------------------------------------
1 | # Metrics
2 | 
3 | **Disclaimer**: This is a temporary workaround. The long-term goal is to generate metric configuration from API type markers.
4 | 
5 | The make target `generate-metrics-config` is used to generate a single file which contains the Cluster API specific custom resource configuration for kube-state-metrics.
6 | 
7 | To regenerate the file `../crd-metrics-config.yaml`, execute the `make generate-metrics-config` command.
8 | 


--------------------------------------------------------------------------------
/config/metrics/templates/clusterclass.yaml:
--------------------------------------------------------------------------------
 1 |   - groupVersionKind:
 2 |       group: cluster.x-k8s.io
 3 |       kind: ClusterClass
 4 |       version: v1beta1
 5 |     labelsFromPath:
 6 |       name:
 7 |       - metadata
 8 |       - name
 9 |       namespace:
10 |       - metadata
11 |       - namespace
12 |       uid:
13 |       - metadata
14 |       - uid
15 |     metricNamePrefix: capi_clusterclass
16 |     metrics:
17 |     - name: info
18 |       help: Information about a clusterclass.
19 |       each:
20 |         info:
21 |           # TODO: added metadata.name even it's already defined above as the metric doesn't work with empty labelsFromPath.
22 |           labelsFromPath:
23 |             name:
24 |             - metadata
25 |             - name
26 |         type: Info
27 | 


--------------------------------------------------------------------------------
/config/metrics/templates/header.yaml:
--------------------------------------------------------------------------------
1 | kind: CustomResourceStateMetrics
2 | spec:
3 |   resources:
4 | 


--------------------------------------------------------------------------------
/config/metrics/templates/owner_metric.yaml:
--------------------------------------------------------------------------------
 1 |     - name: owner
 2 |       help: Owner references.
 3 |       each:
 4 |         info:
 5 |           labelsFromPath:
 6 |             owner_is_controller:
 7 |             - controller
 8 |             owner_kind:
 9 |             - kind
10 |             owner_name:
11 |             - name
12 |             owner_uid:
13 |             - uid
14 |           path:
15 |           - metadata
16 |           - ownerReferences
17 |         type: Info
18 | 


--------------------------------------------------------------------------------
/config/rbac/aggregated_role.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: ClusterRole
 3 | metadata:
 4 |   name: aggregated-manager-role
 5 | aggregationRule:
 6 |   clusterRoleSelectors:
 7 |   - matchLabels:
 8 |       cluster.x-k8s.io/aggregate-to-manager: "true"
 9 | rules: []
10 | 


--------------------------------------------------------------------------------
/config/rbac/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: kustomize.config.k8s.io/v1beta1
 2 | kind: Kustomization
 3 | resources:
 4 | - role_binding.yaml
 5 | - role.yaml
 6 | - service_account.yaml
 7 | - leader_election_role.yaml
 8 | - leader_election_role_binding.yaml
 9 | - aggregated_role.yaml
10 | 


--------------------------------------------------------------------------------
/config/rbac/leader_election_role.yaml:
--------------------------------------------------------------------------------
 1 | 
 2 | # permissions to do leader election.
 3 | apiVersion: rbac.authorization.k8s.io/v1
 4 | kind: Role
 5 | metadata:
 6 |   name: leader-election-role
 7 | rules:
 8 | - apiGroups:
 9 |   - ""
10 |   resources:
11 |   - events
12 |   verbs:
13 |   - create
14 | - apiGroups:
15 |   - "coordination.k8s.io"
16 |   resources:
17 |   - leases
18 |   verbs:
19 |   - get
20 |   - list
21 |   - watch
22 |   - create
23 |   - update
24 |   - patch
25 |   - delete
26 | 


--------------------------------------------------------------------------------
/config/rbac/leader_election_role_binding.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: RoleBinding
 3 | metadata:
 4 |   name: leader-election-rolebinding
 5 | roleRef:
 6 |   apiGroup: rbac.authorization.k8s.io
 7 |   kind: Role
 8 |   name: leader-election-role
 9 | subjects:
10 | - kind: ServiceAccount
11 |   name: manager
12 |   namespace: system
13 | 


--------------------------------------------------------------------------------
/config/rbac/role_binding.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: ClusterRoleBinding
 3 | metadata:
 4 |   name: manager-rolebinding
 5 | roleRef:
 6 |   apiGroup: rbac.authorization.k8s.io
 7 |   kind: ClusterRole
 8 |   name: manager-role
 9 | subjects:
10 | - kind: ServiceAccount
11 |   name: manager
12 |   namespace: system
13 | 


--------------------------------------------------------------------------------
/config/rbac/service_account.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ServiceAccount
3 | metadata:
4 |   name: manager
5 |   namespace: system
6 | 


--------------------------------------------------------------------------------
/config/webhook/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - manifests.yaml
3 | - service.yaml
4 | 
5 | configurations:
6 | - kustomizeconfig.yaml
7 | 


--------------------------------------------------------------------------------
/config/webhook/service.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: v1
 2 | kind: Service
 3 | metadata:
 4 |   name: webhook-service
 5 |   namespace: system
 6 | spec:
 7 |   ports:
 8 |     - port: 443
 9 |       targetPort: webhook-server
10 | 


--------------------------------------------------------------------------------
/controllers/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2019 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package controllers implements controllers.
18 | package controllers
19 | 


--------------------------------------------------------------------------------
/controllers/external/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package external implements external controller types.
18 | package external
19 | 


--------------------------------------------------------------------------------
/controllers/external/fake/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2024 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package fake provides a fake controllers for testing.
18 | package fake
19 | 


--------------------------------------------------------------------------------
/controllers/remote/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package remote implements remote controllers.
18 | package remote
19 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs at https://go.k8s.io/owners
2 | 
3 | approvers:
4 |   - cluster-api-controlplane-provider-kubeadm-maintainers
5 | 
6 | reviewers:
7 |   - cluster-api-reviewers
8 |   - cluster-api-controlplane-provider-kubeadm-reviewers
9 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/certmanager/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - certificate.yaml
3 | 
4 | configurations:
5 | - kustomizeconfig.yaml
6 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/certmanager/kustomizeconfig.yaml:
--------------------------------------------------------------------------------
 1 | # This configuration is for teaching kustomize how to update name ref and var substitution
 2 | nameReference:
 3 | - kind: Issuer
 4 |   group: cert-manager.io
 5 |   fieldSpecs:
 6 |   - kind: Certificate
 7 |     group: cert-manager.io
 8 |     path: spec/issuerRef/name
 9 | 
10 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/crd/kustomizeconfig.yaml:
--------------------------------------------------------------------------------
 1 | # This file is for teaching kustomize how to substitute name and namespace reference in CRD
 2 | nameReference:
 3 |   - kind: Service
 4 |     version: v1
 5 |     fieldSpecs:
 6 |       - kind: CustomResourceDefinition
 7 |         group: apiextensions.k8s.io
 8 |         path: spec/conversion/webhook/clientConfig/service/name
 9 | 
10 | namespace:
11 |   - kind: CustomResourceDefinition
12 |     group: apiextensions.k8s.io
13 |     path: spec/conversion/webhook/clientConfig/service/namespace
14 |     create: false
15 | 
16 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/crd/patches/webhook_in_kubeadmcontrolplanes.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: kubeadmcontrolplanes.controlplane.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/crd/patches/webhook_in_kubeadmcontrolplanetemplates.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: kubeadmcontrolplanetemplates.controlplane.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/default/manager_image_patch.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |         - image: gcr.io/k8s-staging-cluster-api/kubeadm-control-plane-controller:main
11 |           name: manager
12 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/default/manager_pull_policy.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       - name: manager
11 |         imagePullPolicy: Always
12 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/default/manager_role_aggregation_patch.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: ClusterRole
 3 | metadata:
 4 |   name: manager-role
 5 |   labels:
 6 |     kubeadm.controlplane.cluster.x-k8s.io/aggregate-to-manager: "true"
 7 | ---
 8 | apiVersion: rbac.authorization.k8s.io/v1
 9 | kind: ClusterRoleBinding
10 | metadata:
11 |   name: manager-rolebinding
12 | roleRef:
13 |   apiGroup: rbac.authorization.k8s.io
14 |   kind: ClusterRole
15 |   name: aggregated-manager-role
16 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/default/manager_webhook_patch.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       - name: manager
11 |         ports:
12 |         - containerPort: 9443
13 |           name: webhook-server
14 |           protocol: TCP
15 |         volumeMounts:
16 |         - mountPath: /tmp/k8s-webhook-server/serving-certs
17 |           name: cert
18 |           readOnly: true
19 |       volumes:
20 |       - name: cert
21 |         secret:
22 |           secretName: capi-kubeadm-control-plane-webhook-service-cert
23 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/default/namespace.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Namespace
3 | metadata:
4 |   labels:
5 |     control-plane: controller-manager
6 |   name: system
7 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/default/webhookcainjection_patch.yaml:
--------------------------------------------------------------------------------
 1 | # This patch add annotation to admission webhook config and
 2 | # the variables CERTIFICATE_NAMESPACE and CERTIFICATE_NAME will be substituted by kustomize.
 3 | apiVersion: admissionregistration.k8s.io/v1
 4 | kind: MutatingWebhookConfiguration
 5 | metadata:
 6 |   name: mutating-webhook-configuration
 7 |   annotations:
 8 |     cert-manager.io/inject-ca-from: CERTIFICATE_NAMESPACE/CERTIFICATE_NAME
 9 | ---
10 | apiVersion: admissionregistration.k8s.io/v1
11 | kind: ValidatingWebhookConfiguration
12 | metadata:
13 |   name: validating-webhook-configuration
14 |   annotations:
15 |     cert-manager.io/inject-ca-from: CERTIFICATE_NAMESPACE/CERTIFICATE_NAME
16 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/manager/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - manager.yaml
3 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/rbac/aggregated_role.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: ClusterRole
 3 | metadata:
 4 |   name: aggregated-manager-role
 5 | aggregationRule:
 6 |   clusterRoleSelectors:
 7 |   - matchLabels:
 8 |       kubeadm.controlplane.cluster.x-k8s.io/aggregate-to-manager: "true"
 9 | rules: []
10 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/rbac/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - role.yaml
3 | - role_binding.yaml
4 | - service_account.yaml
5 | - leader_election_role.yaml
6 | - leader_election_role_binding.yaml
7 | - aggregated_role.yaml
8 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/rbac/leader_election_role.yaml:
--------------------------------------------------------------------------------
 1 | # permissions to do leader election.
 2 | apiVersion: rbac.authorization.k8s.io/v1
 3 | kind: Role
 4 | metadata:
 5 |   name: leader-election-role
 6 | rules:
 7 | - apiGroups:
 8 |   - ""
 9 |   resources:
10 |   - events
11 |   verbs:
12 |   - create
13 | - apiGroups:
14 |   - "coordination.k8s.io"
15 |   resources:
16 |   - leases
17 |   verbs:
18 |   - get
19 |   - list
20 |   - watch
21 |   - create
22 |   - update
23 |   - patch
24 |   - delete
25 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/rbac/leader_election_role_binding.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: RoleBinding
 3 | metadata:
 4 |   name: leader-election-rolebinding
 5 | roleRef:
 6 |   apiGroup: rbac.authorization.k8s.io
 7 |   kind: Role
 8 |   name: leader-election-role
 9 | subjects:
10 | - kind: ServiceAccount
11 |   name: manager
12 |   namespace: system
13 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/rbac/role_binding.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: ClusterRoleBinding
 3 | metadata:
 4 |   name: manager-rolebinding
 5 | roleRef:
 6 |   apiGroup: rbac.authorization.k8s.io
 7 |   kind: ClusterRole
 8 |   name: manager-role
 9 | subjects:
10 | - kind: ServiceAccount
11 |   name: manager
12 |   namespace: system
13 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/rbac/service_account.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ServiceAccount
3 | metadata:
4 |   name: manager
5 |   namespace: system
6 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/webhook/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - manifests.yaml
3 | - service.yaml
4 | 
5 | configurations:
6 | - kustomizeconfig.yaml
7 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/config/webhook/service.yaml:
--------------------------------------------------------------------------------
 1 | 
 2 | apiVersion: v1
 3 | kind: Service
 4 | metadata:
 5 |   name: webhook-service
 6 |   namespace: system
 7 | spec:
 8 |   ports:
 9 |     - port: 443
10 |       targetPort: webhook-server
11 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/controllers/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package controllers implements the Kubeadm controllers.
18 | package controllers
19 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/internal/controllers/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package controllers implements the Kubeadm controllers.
18 | package controllers
19 | 


--------------------------------------------------------------------------------
/controlplane/kubeadm/internal/etcd/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2020 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | /*
18 | Package etcd provides a connection to an etcd member.
19 | */
20 | package etcd
21 | 


--------------------------------------------------------------------------------
/dev/vscode-example-configuration/settings.json:
--------------------------------------------------------------------------------
1 | {
2 |     "go.testEnvFile": "${workspaceFolder}/.vscode/test.env"
3 | }


--------------------------------------------------------------------------------
/dev/vscode-example-configuration/test.env:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/dev/vscode-example-configuration/test.env


--------------------------------------------------------------------------------
/docs/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs at https://go.k8s.io/owners
2 | 
3 | approvers:
4 |   - cluster-api-docs-maintainers
5 | 
6 | reviewers:
7 |   - cluster-api-reviewers
8 |   - cluster-api-docs-reviewers
9 | 


--------------------------------------------------------------------------------
/docs/book/src/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | {{#include ../../../CONTRIBUTING.md}}
2 | 


--------------------------------------------------------------------------------
/docs/book/src/REVIEWING.md:
--------------------------------------------------------------------------------
1 | {{#include ../../../REVIEWING.md}}
2 | 


--------------------------------------------------------------------------------
/docs/book/src/clusterctl/commands/additional-commands.md:
--------------------------------------------------------------------------------
 1 | # clusterctl config repositories
 2 | 
 3 | Display the list of providers and their repository configurations.
 4 | 
 5 | clusterctl ships with a list of known providers; if necessary, edit
 6 | $XDG_CONFIG_HOME/cluster-api/clusterctl.yaml file to add a new provider or to customize existing ones.
 7 | 
 8 | # clusterctl help
 9 | 
10 | Help provides help for any command in the application.
11 | Simply type `clusterctl help [command]` for full details.
12 | 
13 | # clusterctl version
14 | 
15 | Print clusterctl version.
16 | 
17 | # clusterctl init list-images
18 | 
19 | Lists the container images required for initializing the management cluster.


--------------------------------------------------------------------------------
/docs/book/src/clusterctl/commands/get-kubeconfig.md:
--------------------------------------------------------------------------------
 1 | # clusterctl get kubeconfig
 2 | 
 3 | This command prints the kubeconfig of an existing workload cluster into stdout.
 4 | This functionality is available in clusterctl v0.3.9 or newer.
 5 | 
 6 | ## Examples
 7 | 
 8 | Get the kubeconfig of a workload cluster named foo.
 9 | 
10 | ```bash
11 | clusterctl get kubeconfig foo
12 | ```
13 | 
14 | Get the kubeconfig of a workload cluster named foo in the namespace bar
15 | 
16 | ```bash
17 | clusterctl get kubeconfig foo --namespace bar
18 | ```
19 | 
20 | Get the kubeconfig of a workload cluster named foo using a specific context bar
21 | 
22 | ```bash
23 | clusterctl get kubeconfig foo --kubeconfig-context bar
24 | ```
25 | 


--------------------------------------------------------------------------------
/docs/book/src/code-of-conduct.md:
--------------------------------------------------------------------------------
1 | {{#include ../../../code-of-conduct.md}}
2 | 


--------------------------------------------------------------------------------
/docs/book/src/developer/core/controllers/cluster-resource-set.md:
--------------------------------------------------------------------------------
 1 | # `ClusterResourceSet` Controller
 2 | 
 3 | The `ClusterResourceSet` provides a mechanism for applying resources - e.g. pods, deployments, daemonsets, secrets, configMaps - to a cluster once it is created.
 4 | 
 5 | ![ClusterResourceSet Controller Activity Diagram](../../../images/cluster-resource-set-controller.png)
 6 | 
 7 | Its main responsibility is to automatically apply a set of resources to newly-created and existing Clusters. Resources will be applied only once.
 8 | 
 9 | 
10 | ### Additional information
11 | 
12 | * See ClusterResourceSet [proposal](https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20200220-cluster-resource-set.md)
13 | 


--------------------------------------------------------------------------------
/docs/book/src/developer/core/controllers/machine-health-check.md:
--------------------------------------------------------------------------------
 1 | # MachineHealthCheck
 2 | 
 3 | A MachineHealthCheck is responsible for remediating unhealthy Machines.
 4 | 
 5 | Its main responsibilities are:
 6 | * Checking the health of Nodes in the [workload clusters] against a list of unhealthy conditions
 7 | * Remediating Machine's for Nodes determined to be unhealthy
 8 | 
 9 | ![](../../../images/machinehealthcheck-controller.png)
10 | 
11 | <!-- links -->
12 | [workload clusters]: ../../../reference/glossary.md#workload-cluster
13 | 


--------------------------------------------------------------------------------
/docs/book/src/developer/providers/getting-started/cluster-email.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/developer/providers/getting-started/cluster-email.png


--------------------------------------------------------------------------------
/docs/book/src/developer/providers/migrations/overview.md:
--------------------------------------------------------------------------------
 1 | # Version migration
 2 | 
 3 | The following pages provide an overview of relevant changes between versions of Cluster API and their direct successors. These guides are intended to assist 
 4 | maintainers of other providers and consumers of the Go API in upgrading from one version of Cluster API to a subsequent version.
 5 | 
 6 | - [v1.8 to v1.9](v1.8-to-v1.9.md)
 7 | - [v1.9 to v1.10](v1.9-to-v1.10.md)
 8 | - [v1.10 to v1.11](v1.10-to-v1.11.md)
 9 | 
10 | For older versions please refer to [Older Cluster API documentation versions](../../../introduction.md#getting-started)
11 | 


--------------------------------------------------------------------------------
/docs/book/src/developer/providers/overview.md:
--------------------------------------------------------------------------------
1 | # Developing Cluster API providers
2 | 
3 | This section of the book is about developing Cluster API providers.
4 | 


--------------------------------------------------------------------------------
/docs/book/src/images/bootstrap-provider.plantuml:
--------------------------------------------------------------------------------
 1 | @startuml
 2 | 
 3 | start
 4 | 
 5 | :New/Updated resource;
 6 | 
 7 | if (Deleted?) then (yes)
 8 |     stop
 9 | else (no)
10 |     if (Has machine owner?) then (yes)
11 |         if (Cluster exists?) then (no)
12 |             stop
13 |         else (yes)
14 |             if (Bootstrap data secret exists?) then (no)
15 |                 :Generate bootstrap data & create secret;
16 |             else (yes)
17 |             endif
18 | 
19 |             :Set status.dataSecretName;
20 |             :set status.initialization.dataSecretCreated to true;
21 |         endif
22 |     else (no)
23 |     endif
24 | endif
25 | :Patch resource to persist changes;
26 | stop
27 | 
28 | @enduml
29 | 


--------------------------------------------------------------------------------
/docs/book/src/images/bootstrap-provider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/bootstrap-provider.png


--------------------------------------------------------------------------------
/docs/book/src/images/cluster-admission-cluster-controller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/cluster-admission-cluster-controller.png


--------------------------------------------------------------------------------
/docs/book/src/images/cluster-admission-machine-controller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/cluster-admission-machine-controller.png


--------------------------------------------------------------------------------
/docs/book/src/images/cluster-admission-machinedeployment-controller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/cluster-admission-machinedeployment-controller.png


--------------------------------------------------------------------------------
/docs/book/src/images/cluster-admission-machinepool-controller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/cluster-admission-machinepool-controller.png


--------------------------------------------------------------------------------
/docs/book/src/images/cluster-admission-machineset-controller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/cluster-admission-machineset-controller.png


--------------------------------------------------------------------------------
/docs/book/src/images/cluster-infra-provider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/cluster-infra-provider.png


--------------------------------------------------------------------------------
/docs/book/src/images/cluster-resource-set-controller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/cluster-resource-set-controller.png


--------------------------------------------------------------------------------
/docs/book/src/images/cluster-topology-controller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/cluster-topology-controller.png


--------------------------------------------------------------------------------
/docs/book/src/images/cluster-topology-reconciller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/cluster-topology-reconciller.png


--------------------------------------------------------------------------------
/docs/book/src/images/control-plane-controller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/control-plane-controller.png


--------------------------------------------------------------------------------
/docs/book/src/images/describe-cluster-disable-grouping.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/describe-cluster-disable-grouping.png


--------------------------------------------------------------------------------
/docs/book/src/images/describe-cluster-echo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/describe-cluster-echo.png


--------------------------------------------------------------------------------
/docs/book/src/images/describe-cluster-how-grouping-works.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/describe-cluster-how-grouping-works.png


--------------------------------------------------------------------------------
/docs/book/src/images/describe-cluster-show-conditions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/describe-cluster-show-conditions.png


--------------------------------------------------------------------------------
/docs/book/src/images/describe-cluster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/describe-cluster.png


--------------------------------------------------------------------------------
/docs/book/src/images/introduction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/introduction.png


--------------------------------------------------------------------------------
/docs/book/src/images/kubeadm-control-plane-machines-resources.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/kubeadm-control-plane-machines-resources.png


--------------------------------------------------------------------------------
/docs/book/src/images/machine-infra-provider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/machine-infra-provider.png


--------------------------------------------------------------------------------
/docs/book/src/images/machine-phases.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/machine-phases.png


--------------------------------------------------------------------------------
/docs/book/src/images/machinehealthcheck-controller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/machinehealthcheck-controller.png


--------------------------------------------------------------------------------
/docs/book/src/images/management-workload-same-cluster.plantuml:
--------------------------------------------------------------------------------
 1 | @startuml
 2 | 
 3 | [clusterctl]
 4 | 
 5 | package "Management/Workload Cluster" {
 6 |     [Kubeadm Control Plane Provider] as cakcp
 7 |     [Core Provider] as capi
 8 |     [Kubeadm Bootstrap Provider] as cabpk
 9 |     [Infrastructure Provider] as infra #white
10 |     [API Server] as api #white
11 |     [etcd] #white
12 |     capi --> api
13 |     cabpk --> api
14 |     cakcp --> api
15 |     infra --> api
16 |     cakcp --> etcd
17 | }
18 | 
19 | clusterctl -> api
20 | 
21 | @enduml
22 | 


--------------------------------------------------------------------------------
/docs/book/src/images/management-workload-same-cluster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/management-workload-same-cluster.png


--------------------------------------------------------------------------------
/docs/book/src/images/management-workload-separate-clusters.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/management-workload-separate-clusters.png


--------------------------------------------------------------------------------
/docs/book/src/images/metadata-propagation.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/metadata-propagation.jpg


--------------------------------------------------------------------------------
/docs/book/src/images/metadata-propagation.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/metadata-propagation.pptx


--------------------------------------------------------------------------------
/docs/book/src/images/runtime-sdk-lifecycle-hooks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/runtime-sdk-lifecycle-hooks.png


--------------------------------------------------------------------------------
/docs/book/src/images/runtime-sdk-topology-mutation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/runtime-sdk-topology-mutation.png


--------------------------------------------------------------------------------
/docs/book/src/images/worker-machines-resources.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/src/images/worker-machines-resources.png


--------------------------------------------------------------------------------
/docs/book/src/reference/api/reference.md:
--------------------------------------------------------------------------------
 1 | # API Reference
 2 | 
 3 | Cluster API currently exposes the following APIs:
 4 | 
 5 | * the Cluster API Custom Resource Definitions (CRDs): [documentation](https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api)
 6 | 
 7 | * Golang APIs: [godoc](https://pkg.go.dev/sigs.k8s.io/cluster-api)
 8 | 
 9 | Following pages provide additional documentation to better understand and use Cluster API types. 
10 | 
11 | * [Labels and Annotations](labels-and-annotations.md)
12 | 
13 | * [CRD relationships](crd-relationships.md)
14 | 
15 | * [Metadata propagation](metadata-propagation.md)
16 | 
17 | * [Owner References](owner-references.md)
18 | 


--------------------------------------------------------------------------------
/docs/book/src/reference/reference.md:
--------------------------------------------------------------------------------
1 | # Reference
2 | 
3 | This section contains various resources that define the Cluster API project.
4 | 


--------------------------------------------------------------------------------
/docs/book/src/security/index.md:
--------------------------------------------------------------------------------
1 | # Security Guidelines
2 | 
3 | This section provides security guidelines useful to provision clusters which are
4 | _secure by default_ to follow the [secure defaults guidelines for cloud native apps].
5 | 
6 | [secure defaults guidelines for cloud native apps]: https://github.com/cncf/tag-security/blob/main/community/resources/security-whitepaper/secure-defaults-cloud-native-8.md


--------------------------------------------------------------------------------
/docs/book/src/tasks/automated-machine-management/index.md:
--------------------------------------------------------------------------------
1 | # Automated Machine management
2 | 
3 | This section details some tasks related to automated Machine management.
4 | 
5 | - [Scaling](./scaling.md)
6 | - [Autoscaling](./autoscaling.md)
7 | - [Healthchecking](./healthchecking.md)
8 | - [Machine deletion process](./machine_deletions.md)
9 | 


--------------------------------------------------------------------------------
/docs/book/src/tasks/bootstrap/index.md:
--------------------------------------------------------------------------------
1 | # Bootstrap
2 | 
3 | This section provides details about bootstrap providers.
4 | 


--------------------------------------------------------------------------------
/docs/book/src/tasks/certs/index.md:
--------------------------------------------------------------------------------
1 | # Certificate Management
2 | 
3 | This section details some tasks related to certificate management.
4 | 


--------------------------------------------------------------------------------
/docs/book/src/tasks/control-plane/index.md:
--------------------------------------------------------------------------------
1 | # Control Plane Management
2 | 
3 | This section provides details about control plane providers.
4 | 


--------------------------------------------------------------------------------
/docs/book/src/tasks/experimental-features/runtime-sdk/.gitignore:
--------------------------------------------------------------------------------
1 | # Generated via make
2 | runtime-sdk-openapi.yaml
3 | 


--------------------------------------------------------------------------------
/docs/book/src/tasks/index.md:
--------------------------------------------------------------------------------
1 | # Cluster Management Tasks
2 | 
3 | This section provides details for some of the operations that need to be performed
4 | when managing clusters.
5 | 


--------------------------------------------------------------------------------
/docs/book/src/tasks/upgrading-cluster-api-versions.md:
--------------------------------------------------------------------------------
 1 | # Upgrading Cluster API components
 2 | 
 3 | ## When to upgrade
 4 | 
 5 | In general, it's recommended to upgrade to the latest version of Cluster API to take advantage of bug fixes, new
 6 | features and improvements.
 7 | 
 8 | ## Considerations
 9 | 
10 | If moving between different API versions, there may be additional tasks that you need to complete. See below for
11 | detailed instructions.
12 | 
13 | Ensure that the version of Cluster API is compatible with the Kubernetes version of the management cluster.
14 | 
15 | ## Upgrading to newer versions of 1.0.x
16 | 
17 | Use [clusterctl to upgrade between versions of Cluster API 1.0.x](../clusterctl/commands/upgrade.md).
18 | 


--------------------------------------------------------------------------------
/docs/book/src/user/quick-start-operator.md:
--------------------------------------------------------------------------------
1 | # Cluster API Operator Quickstart
2 | 
3 | This section provides a quickstart guide for using the Cluster API Operator to create a Kubernetes cluster.
4 | To use the `clusterctl` quickstart path, visit [this quickstart guide](./quick-start.md).
5 | 
6 | {{#embed-github repo:"kubernetes-sigs/cluster-api-operator" path:"docs/quickstart.md" }}


--------------------------------------------------------------------------------
/docs/book/theme/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/book/theme/favicon.png


--------------------------------------------------------------------------------
/docs/proposals/images/capi-provider-operator/fig1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/capi-provider-operator/fig1.png


--------------------------------------------------------------------------------
/docs/proposals/images/capi-provider-operator/fig2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/capi-provider-operator/fig2.png


--------------------------------------------------------------------------------
/docs/proposals/images/capi-provider-operator/fig3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/capi-provider-operator/fig3.png


--------------------------------------------------------------------------------
/docs/proposals/images/capi-provider-operator/fig4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/capi-provider-operator/fig4.png


--------------------------------------------------------------------------------
/docs/proposals/images/cluster-class/create.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/cluster-class/create.png


--------------------------------------------------------------------------------
/docs/proposals/images/cluster-class/update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/cluster-class/update.png


--------------------------------------------------------------------------------
/docs/proposals/images/cluster-spec-crds/figure1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/cluster-spec-crds/figure1.png


--------------------------------------------------------------------------------
/docs/proposals/images/cluster-spec-crds/figure2.plantuml:
--------------------------------------------------------------------------------
 1 | @startuml
 2 | title Figure 2: Cluster State Transitions
 3 | 
 4 | start
 5 | 
 6 | :Pending;
 7 | 
 8 | note right
 9 | Cluster object is created but
10 | has no associated Infrastructure
11 | end note
12 | 
13 | :Provisioning;
14 | 
15 | note right
16 | Cluster has associated Infrastructure.
17 | Provider is provisioning it
18 | end note
19 | 
20 | :Provisioned;
21 | note right
22 | Infrastructureis ready.
23 | APIEndpoint is set.
24 | end note
25 | 
26 | stop
27 | 
28 | hide footbox
29 | @enduml
30 | 


--------------------------------------------------------------------------------
/docs/proposals/images/cluster-spec-crds/figure2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/cluster-spec-crds/figure2.png


--------------------------------------------------------------------------------
/docs/proposals/images/clusterctl-extensible-templates/pkgCalls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/clusterctl-extensible-templates/pkgCalls.png


--------------------------------------------------------------------------------
/docs/proposals/images/clusterctl-extensible-templates/templateClient.plantuml:
--------------------------------------------------------------------------------
 1 | @startuml
 2 | class templateClient {
 3 |   listVariablesOnly: bool
 4 | 
 5 | 
 6 |   provider: config.Provider
 7 |   repository: Repository
 8 |   configVariablesClient: config.VariablesClient
 9 | 
10 | 
11 |   processor: YamlProcessor
12 |   {method} Get(version, flavor, targetNamespace string) (Template, error)
13 | 
14 | 
15 | }
16 | note right
17 |  An instance of this struct is created
18 |  in newTemplateClient(TemplateClientInput).
19 |  It defaults to using the default processor else
20 |  it uses the specified yaml processor.
21 | end note
22 | @enduml
23 | 


--------------------------------------------------------------------------------
/docs/proposals/images/clusterctl-extensible-templates/templateClient.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/clusterctl-extensible-templates/templateClient.png


--------------------------------------------------------------------------------
/docs/proposals/images/clusterctl-extensible-templates/yamlProcessor.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | interface YamlProcessor{
3 |  {method} ArtifactName(version, flavor string) string
4 |  {method} GetVariables([]byte) ([]string, error)
5 |  {method} Process([]byte) ([]byte, error)
6 | }
7 | @enduml
8 | 


--------------------------------------------------------------------------------
/docs/proposals/images/clusterctl-extensible-templates/yamlProcessor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/clusterctl-extensible-templates/yamlProcessor.png


--------------------------------------------------------------------------------
/docs/proposals/images/clusterctl-redesign/components.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/clusterctl-redesign/components.png


--------------------------------------------------------------------------------
/docs/proposals/images/clusterctl-redesign/config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/clusterctl-redesign/config.png


--------------------------------------------------------------------------------
/docs/proposals/images/clusterctl-redesign/init.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/clusterctl-redesign/init.png


--------------------------------------------------------------------------------
/docs/proposals/images/conditions/cluster-provision-workflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/conditions/cluster-provision-workflow.png


--------------------------------------------------------------------------------
/docs/proposals/images/conditions/upgrade-workflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/conditions/upgrade-workflow.png


--------------------------------------------------------------------------------
/docs/proposals/images/controlplane/controlplane-init-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/controlplane/controlplane-init-1.png


--------------------------------------------------------------------------------
/docs/proposals/images/controlplane/controlplane-init-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/controlplane/controlplane-init-2.png


--------------------------------------------------------------------------------
/docs/proposals/images/controlplane/controlplane-init-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/controlplane/controlplane-init-3.png


--------------------------------------------------------------------------------
/docs/proposals/images/controlplane/controlplane-init-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/controlplane/controlplane-init-4.png


--------------------------------------------------------------------------------
/docs/proposals/images/controlplane/controlplane-init-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/controlplane/controlplane-init-6.png


--------------------------------------------------------------------------------
/docs/proposals/images/controlplane/controlplane-init-7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/controlplane/controlplane-init-7.png


--------------------------------------------------------------------------------
/docs/proposals/images/developer/diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/developer/diagram.png


--------------------------------------------------------------------------------
/docs/proposals/images/externally-managed-cluster-infrastructure/infrastructure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/externally-managed-cluster-infrastructure/infrastructure.png


--------------------------------------------------------------------------------
/docs/proposals/images/in-place-propagation/Metadata propagation.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/in-place-propagation/Metadata propagation.pptx


--------------------------------------------------------------------------------
/docs/proposals/images/in-place-propagation/current-state.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/in-place-propagation/current-state.jpg


--------------------------------------------------------------------------------
/docs/proposals/images/in-place-propagation/optional-changes.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/in-place-propagation/optional-changes.jpg


--------------------------------------------------------------------------------
/docs/proposals/images/in-place-propagation/proposed-changes.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/in-place-propagation/proposed-changes.jpg


--------------------------------------------------------------------------------
/docs/proposals/images/ipam-integration/consumption.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/ipam-integration/consumption.png


--------------------------------------------------------------------------------
/docs/proposals/images/ipam-integration/sequence.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/ipam-integration/sequence.png


--------------------------------------------------------------------------------
/docs/proposals/images/kubelet-authentication/client-authenticator-flow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/kubelet-authentication/client-authenticator-flow.png


--------------------------------------------------------------------------------
/docs/proposals/images/machine-health-check/mhc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machine-health-check/mhc.png


--------------------------------------------------------------------------------
/docs/proposals/images/machine-states-preboot/Figure2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machine-states-preboot/Figure2.png


--------------------------------------------------------------------------------
/docs/proposals/images/machine-states-preboot/Figure3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machine-states-preboot/Figure3.png


--------------------------------------------------------------------------------
/docs/proposals/images/machine-states-preboot/Figure4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machine-states-preboot/Figure4.png


--------------------------------------------------------------------------------
/docs/proposals/images/machine-states-preboot/Figure5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machine-states-preboot/Figure5.png


--------------------------------------------------------------------------------
/docs/proposals/images/machine-states-preboot/Figure6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machine-states-preboot/Figure6.png


--------------------------------------------------------------------------------
/docs/proposals/images/machine-states-preboot/Figure7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machine-states-preboot/Figure7.png


--------------------------------------------------------------------------------
/docs/proposals/images/machine-states-preboot/Figure8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machine-states-preboot/Figure8.png


--------------------------------------------------------------------------------
/docs/proposals/images/machinepool-api/figure1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machinepool-api/figure1.png


--------------------------------------------------------------------------------
/docs/proposals/images/machinepool-machines/inframachinepool-scale-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machinepool-machines/inframachinepool-scale-down.png


--------------------------------------------------------------------------------
/docs/proposals/images/machinepool-machines/inframachinepool-scale-up.plantuml:
--------------------------------------------------------------------------------
 1 | @startuml inframachinepool-scale-up
 2 | :begin reconciling InfraMachinePool;
 3 | if (status.InfrastructureMachineKind is set on InfraMachinePool) then (no)
 4 |   :set status.InfrastructureMachineKind to InfraMachinePoolMachine;
 5 | else (yes)
 6 | endif
 7 | while (~# up to date replicas < # desired replicas ?) is (yes)
 8 |   :create provider specific resource representing a replica;
 9 | endwhile (no)
10 | while (every replica has an InfraMachinePoolMachine?) is (no)
11 |   :create InfraMachinePoolMachine representing a replica;
12 | endwhile (yes)
13 | :end reconciling InfraMachinePool;
14 | stop
15 | @enduml


--------------------------------------------------------------------------------
/docs/proposals/images/machinepool-machines/inframachinepool-scale-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machinepool-machines/inframachinepool-scale-up.png


--------------------------------------------------------------------------------
/docs/proposals/images/machinepool-machines/machinepool-machine-reconcile.plantuml:
--------------------------------------------------------------------------------
 1 | @startuml machinepool-machine-reconcile
 2 | :begin reconciling Machine;
 3 | if (is deleting?) then (no)
 4 |   :ensure InfraMachinePoolMachine has ownerRef to Machine;
 5 | else (yes)
 6 |   :cordon and drain node;
 7 |   :delete InfraMachinePoolMachine;
 8 |   :wait for InfraMachinePoolMachine to be deleted;
 9 |   :delete node;
10 | endif
11 | :continue reconciling Machine;
12 | stop
13 | @enduml
14 | 


--------------------------------------------------------------------------------
/docs/proposals/images/machinepool-machines/machinepool-machine-reconcile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machinepool-machines/machinepool-machine-reconcile.png


--------------------------------------------------------------------------------
/docs/proposals/images/machinepool-machines/machinepool-reconcile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/machinepool-machines/machinepool-reconcile.png


--------------------------------------------------------------------------------
/docs/proposals/images/runtime-hooks/runtime-hooks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/runtime-hooks/runtime-hooks.png


--------------------------------------------------------------------------------
/docs/proposals/images/runtime-sdk/overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/runtime-sdk/overview.png


--------------------------------------------------------------------------------
/docs/proposals/images/runtime-sdk/swagger-ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/runtime-sdk/swagger-ui.png


--------------------------------------------------------------------------------
/docs/proposals/images/topology-mutation-hook/topology-reconciliation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/proposals/images/topology-mutation-hook/topology-reconciliation.png


--------------------------------------------------------------------------------
/docs/release/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs at https://go.k8s.io/owners
2 | 
3 | approvers:
4 |   - cluster-api-release-lead
5 | 
6 | reviewers:
7 |   - cluster-api-release-team
8 | 


--------------------------------------------------------------------------------
/docs/release/release-cycle-overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/docs/release/release-cycle-overview.png


--------------------------------------------------------------------------------
/exp/README.md:
--------------------------------------------------------------------------------
 1 | # Experimental
 2 | 
 3 | ⚠️ This package holds experimental code and API types. ⚠️
 4 | 
 5 | ## Compatibility notice
 6 | 
 7 | This package does not adhere to any compatibility guarantees. Some portions may eventually be promoted out of this package and considered stable/GA, while others may be removed entirely.
 8 | 
 9 | ## Graduation criteria
10 | 
11 | For more information on graduation criteria, see: [Contributing Guidelines](../CONTRIBUTING.md#experiments)
12 | 


--------------------------------------------------------------------------------
/exp/controllers/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package controllers implements experimental controllers.
18 | package controllers
19 | 


--------------------------------------------------------------------------------
/exp/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2019 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package exp implements experimental code.
18 | package exp
19 | 


--------------------------------------------------------------------------------
/exp/hack/boilerplate.go.txt:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | 


--------------------------------------------------------------------------------
/exp/internal/controllers/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package controllers implements experimental controllers.
18 | package controllers
19 | 


--------------------------------------------------------------------------------
/exp/internal/webhooks/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2023 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package webhooks contains external webhook implementations for some of our API types.
18 | package webhooks
19 | 


--------------------------------------------------------------------------------
/exp/ipam/internal/webhooks/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package webhooks implements experimental webhooks.
18 | package webhooks
19 | 


--------------------------------------------------------------------------------
/exp/ipam/webhooks/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package webhooks contains external webhook implementations for some of our API types.
18 | package webhooks
19 | 


--------------------------------------------------------------------------------
/exp/runtime/catalog/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package catalog provides the Catalog and corresponding builders.
18 | package catalog
19 | 


--------------------------------------------------------------------------------
/exp/runtime/controllers/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package controllers implements the exp/runtime controllers.
18 | package controllers
19 | 


--------------------------------------------------------------------------------
/exp/runtime/internal/controllers/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package controllers implements the exp/runtime controllers.
18 | package controllers
19 | 


--------------------------------------------------------------------------------
/exp/webhooks/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2023 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package webhooks contains external webhook implementations for some of our API types.
18 | package webhooks
19 | 


--------------------------------------------------------------------------------
/hack/boilerplate.go.txt:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | 


--------------------------------------------------------------------------------
/hack/boilerplate/README.md:
--------------------------------------------------------------------------------
1 | # Boilerplate utilities
2 | 
3 | The boilerplate validation utilities have been copied and adapted from upstream Kubernetes, see https://github.com/kubernetes/kubernetes/blob/4dfd73940396730caf331e35cbb28235d233f2a0/hack/boilerplate.
4 | 


--------------------------------------------------------------------------------
/hack/boilerplate/boilerplate.Dockerfile.txt:
--------------------------------------------------------------------------------
 1 | # syntax=docker/dockerfile:1.4
 2 | 
 3 | # Copyright YEAR The Kubernetes Authors.
 4 | #
 5 | # Licensed under the Apache License, Version 2.0 (the "License");
 6 | # you may not use this file except in compliance with the License.
 7 | # You may obtain a copy of the License at
 8 | #
 9 | #     http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | 


--------------------------------------------------------------------------------
/hack/boilerplate/boilerplate.Makefile.txt:
--------------------------------------------------------------------------------
 1 | # Copyright YEAR The Kubernetes Authors.
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 
15 | 


--------------------------------------------------------------------------------
/hack/boilerplate/boilerplate.bzl.txt:
--------------------------------------------------------------------------------
 1 | # Copyright YEAR The Kubernetes Authors.
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 


--------------------------------------------------------------------------------
/hack/boilerplate/boilerplate.generatebzl.txt:
--------------------------------------------------------------------------------
 1 | # Copyright The Kubernetes Authors.
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 
15 | 


--------------------------------------------------------------------------------
/hack/boilerplate/boilerplate.generatego.txt:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 


--------------------------------------------------------------------------------
/hack/boilerplate/boilerplate.go.txt:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright YEAR The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 


--------------------------------------------------------------------------------
/hack/boilerplate/boilerplate.py.txt:
--------------------------------------------------------------------------------
 1 | # Copyright YEAR The Kubernetes Authors.
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 


--------------------------------------------------------------------------------
/hack/boilerplate/boilerplate.sh.txt:
--------------------------------------------------------------------------------
 1 | # Copyright YEAR The Kubernetes Authors.
 2 | #
 3 | # Licensed under the Apache License, Version 2.0 (the "License");
 4 | # you may not use this file except in compliance with the License.
 5 | # You may obtain a copy of the License at
 6 | #
 7 | #     http://www.apache.org/licenses/LICENSE-2.0
 8 | #
 9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | 


--------------------------------------------------------------------------------
/hack/boilerplate/test/fail.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2014 The Kubernetes Authors.
 3 | 
 4 | fail
 5 | 
 6 | Licensed under the Apache License, Version 2.0 (the "License");
 7 | you may not use this file except in compliance with the License.
 8 | You may obtain a copy of the License at
 9 | 
10 |     http://www.apache.org/licenses/LICENSE-2.0
11 | 
12 | Unless required by applicable law or agreed to in writing, software
13 | distributed under the License is distributed on an "AS IS" BASIS,
14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | See the License for the specific language governing permissions and
16 | limitations under the License.
17 | */
18 | 
19 | // Package test contains test boilerplate.
20 | package test
21 | 


--------------------------------------------------------------------------------
/hack/boilerplate/test/fail.py:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env python
 2 | 
 3 | # Copyright 2015 The Kubernetes Authors.
 4 | #
 5 | # failed
 6 | #
 7 | # Licensed under the Apache License, Version 2.0 (the "License");
 8 | # you may not use this file except in compliance with the License.
 9 | # You may obtain a copy of the License at
10 | #
11 | #     http://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing, software
14 | # distributed under the License is distributed on an "AS IS" BASIS,
15 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | # See the License for the specific language governing permissions and
17 | # limitations under the License.
18 | 


--------------------------------------------------------------------------------
/hack/boilerplate/test/pass.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2014 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | package test
18 | 


--------------------------------------------------------------------------------
/hack/boilerplate/test/pass.py:
--------------------------------------------------------------------------------
 1 | #!/usr/bin/env python
 2 | 
 3 | # Copyright 2015 The Kubernetes Authors.
 4 | #
 5 | # Licensed under the Apache License, Version 2.0 (the "License");
 6 | # you may not use this file except in compliance with the License.
 7 | # You may obtain a copy of the License at
 8 | #
 9 | #     http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | 
17 | True
18 | 


--------------------------------------------------------------------------------
/hack/observability/.gitignore:
--------------------------------------------------------------------------------
1 | # ignore cached helm charts
2 | .charts
3 | 


--------------------------------------------------------------------------------
/hack/observability/grafana/chart/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | helmCharts:
 2 |   - name: grafana
 3 |     repo: https://grafana.github.io/helm-charts
 4 |     releaseName: grafana
 5 |     namespace: observability
 6 |     valuesFile: values.yaml
 7 |     version: 8.10.1
 8 | 
 9 | helmGlobals:
10 |     # Store chart in ".charts" folder instead of "charts".
11 |     # Otherwise "go mod tidy" picks up dependencies of go files contained in the Helm Chart.
12 |     # "go mod tidy" ignores folders that begin with ".": https://pkg.go.dev/cmd/go#hdr-Package_lists_and_patterns.
13 |     chartHome: .charts
14 | 


--------------------------------------------------------------------------------
/hack/observability/kube-state-metrics/values.yaml:
--------------------------------------------------------------------------------
 1 | # Add the CR configuration from the config map.
 2 | volumeMounts:
 3 | - mountPath: /etc/config
 4 |   name: config-volume
 5 | 
 6 | volumes:
 7 | - emptyDir: {}
 8 |   name: config-volume
 9 | 
10 | extraArgs:
11 | - "--custom-resource-state-config-file=/etc/config/crd-metrics-config.yaml"
12 | 
13 | rbac:
14 |   extraRules:
15 |   - apiGroups:
16 |     - apiextensions.k8s.io
17 |     resources:
18 |     - customresourcedefinitions
19 |     verbs:
20 |     - get
21 |     - list
22 |     - watch
23 | 


--------------------------------------------------------------------------------
/hack/observability/loki/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | resources:
 2 |   - ../namespace.yaml
 3 | 
 4 | helmCharts:
 5 |   - name: loki
 6 |     repo: https://grafana.github.io/helm-charts
 7 |     releaseName: loki
 8 |     namespace: observability
 9 |     valuesFile: values.yaml
10 |     version: 6.27.0
11 | 
12 | helmGlobals:
13 |     # Store chart in ".charts" folder instead of "charts".
14 |     # Otherwise "go mod tidy" picks up dependencies of go files contained in the Helm Chart.
15 |     # "go mod tidy" ignores folders that begin with ".": https://pkg.go.dev/cmd/go#hdr-Package_lists_and_patterns.
16 |     chartHome: .charts
17 | 


--------------------------------------------------------------------------------
/hack/observability/metrics-server/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | resources:
 2 | - ../namespace.yaml
 3 | 
 4 | helmCharts:
 5 | - name: metrics-server
 6 |   repo: https://kubernetes-sigs.github.io/metrics-server/
 7 |   releaseName: metrics-server
 8 |   namespace: observability
 9 |   valuesFile: values.yaml
10 |   version: 3.12.2
11 | 
12 | helmGlobals:
13 |   # Store chart in ".charts" folder instead of "charts".
14 |   # Otherwise "go mod tidy" picks up dependencies of go files contained in the Helm Chart.
15 |   # "go mod tidy" ignores folders that begin with ".": https://pkg.go.dev/cmd/go#hdr-Package_lists_and_patterns.
16 |   chartHome: .charts
17 | 


--------------------------------------------------------------------------------
/hack/observability/metrics-server/values.yaml:
--------------------------------------------------------------------------------
1 | # Use insecure-tls so we can scrape kind Nodes.
2 | args:
3 | - --kubelet-insecure-tls
4 | 


--------------------------------------------------------------------------------
/hack/observability/namespace.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Namespace
3 | metadata:
4 |   name: observability
5 | 
6 | 


--------------------------------------------------------------------------------
/hack/observability/parca/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | resources:
 2 |   - ../namespace.yaml
 3 |   - rbac-pprof.yaml
 4 | 
 5 | helmCharts:
 6 |   - name: parca
 7 |     repo: https://parca-dev.github.io/helm-charts/
 8 |     releaseName: parca
 9 |     # Setting namespace via this field currently does not work with this Helm chart.
10 |     namespace: default
11 |     valuesFile: values.yaml
12 |     version: 4.19.0
13 | 
14 | helmGlobals:
15 |     # Store chart in ".charts" folder instead of "charts".
16 |     # Otherwise "go mod tidy" picks up dependencies of go files contained in the Helm Chart.
17 |     # "go mod tidy" ignores folders that begin with ".": https://pkg.go.dev/cmd/go#hdr-Package_lists_and_patterns.
18 |     chartHome: .charts
19 | 


--------------------------------------------------------------------------------
/hack/observability/parca/rbac-pprof.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: ClusterRole
 3 | metadata:
 4 |   name: parca-debug
 5 | rules:
 6 | - nonResourceURLs:
 7 |   - "/debug/pprof/*"
 8 |   verbs:
 9 |   - get
10 | ---
11 | apiVersion: rbac.authorization.k8s.io/v1
12 | kind: ClusterRoleBinding
13 | metadata:
14 |   name: parca-debug
15 | roleRef:
16 |   apiGroup: rbac.authorization.k8s.io
17 |   kind: ClusterRole
18 |   name: parca-debug
19 | subjects:
20 | - kind: ServiceAccount
21 |   name: parca
22 |   namespace: default
23 | 


--------------------------------------------------------------------------------
/hack/observability/prometheus/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | resources:
 2 |   - ../namespace.yaml
 3 | 
 4 | helmCharts:
 5 |   - name: prometheus
 6 |     repo: https://prometheus-community.github.io/helm-charts
 7 |     releaseName: prometheus
 8 |     namespace: observability
 9 |     valuesFile: values.yaml
10 |     version: 27.5.0
11 | 
12 | helmGlobals:
13 |     # Store chart in ".charts" folder instead of "charts".
14 |     # Otherwise "go mod tidy" picks up dependencies of go files contained in the Helm Chart.
15 |     # "go mod tidy" ignores folders that begin with ".": https://pkg.go.dev/cmd/go#hdr-Package_lists_and_patterns.
16 |     chartHome: .charts
17 | 


--------------------------------------------------------------------------------
/hack/observability/promtail/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | resources:
 2 |   - ../namespace.yaml
 3 | 
 4 | helmCharts:
 5 |   - name: promtail
 6 |     repo: https://grafana.github.io/helm-charts
 7 |     releaseName: promtail
 8 |     namespace: observability
 9 |     valuesFile: values.yaml
10 |     version: 6.16.6
11 | 
12 | helmGlobals:
13 |     # Store chart in ".charts" folder instead of "charts".
14 |     # Otherwise "go mod tidy" picks up dependencies of go files contained in the Helm Chart.
15 |     # "go mod tidy" ignores folders that begin with ".": https://pkg.go.dev/cmd/go#hdr-Package_lists_and_patterns.
16 |     chartHome: .charts
17 | 


--------------------------------------------------------------------------------
/hack/observability/tempo/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | resources:
 2 | - ../namespace.yaml
 3 | 
 4 | helmCharts:
 5 | - name: tempo
 6 |   repo: https://grafana.github.io/helm-charts
 7 |   releaseName: tempo
 8 |   namespace: observability
 9 |   valuesFile: values.yaml
10 |   version: 1.18.2
11 | 
12 | helmGlobals:
13 |   # Store chart in ".charts" folder instead of "charts".
14 |   # Otherwise "go mod tidy" picks up dependencies of go files contained in the Helm Chart.
15 |   # "go mod tidy" ignores folders that begin with ".": https://pkg.go.dev/cmd/go#hdr-Package_lists_and_patterns.
16 |   chartHome: .charts
17 | 


--------------------------------------------------------------------------------
/hack/observability/visualizer/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | resources:
 2 |   - ../namespace.yaml
 3 | 
 4 | helmCharts:
 5 |   - name: cluster-api-visualizer
 6 |     repo: https://jont828.github.io/cluster-api-visualizer/charts
 7 |     releaseName: visualizer
 8 |     namespace: observability
 9 |     valuesFile: values.yaml
10 |     version: 1.4.0
11 | 
12 | helmGlobals:
13 |     # Store chart in ".charts" folder instead of "charts".
14 |     # Otherwise "go mod tidy" picks up dependencies of go files contained in the Helm Chart.
15 |     # "go mod tidy" ignores folders that begin with ".": https://pkg.go.dev/cmd/go#hdr-Package_lists_and_patterns.
16 |     chartHome: .charts
17 | 


--------------------------------------------------------------------------------
/hack/observability/visualizer/values.yaml:
--------------------------------------------------------------------------------
 1 | replicas: 1
 2 | 
 3 | image:
 4 |   repository: ghcr.io/jont828
 5 |   name: cluster-api-visualizer
 6 |   pullPolicy: Always
 7 | 
 8 | label: 
 9 |   key: app
10 |   value: visualizer
11 | 


--------------------------------------------------------------------------------
/hack/tools/.custom-gcl.yaml:
--------------------------------------------------------------------------------
1 | version: v2.1.0
2 | name: golangci-lint-kube-api-linter
3 | destination: ./bin
4 | plugins:
5 | - module: 'sigs.k8s.io/kube-api-linter'
6 |   version: v0.0.0-20250626111229-e719da12d840
7 | 


--------------------------------------------------------------------------------
/hack/tools/prowjob-gen/test/test-main.yaml.golden:
--------------------------------------------------------------------------------
1 | # Code generated by cluster-api's prowjob-gen. DO NOT EDIT.
2 | main
3 | main
4 | bar
5 | foobar
6 | 1.29


--------------------------------------------------------------------------------
/hack/tools/prowjob-gen/test/test.yaml.tpl:
--------------------------------------------------------------------------------
1 | {{ .branch }}
2 | {{ ReplaceAll .branch "." "-" }}
3 | {{ TrimPrefix "foobar" "foo" }}
4 | {{ TrimPrefix "foobar" "bar" }}
5 | {{ (last $.config.Upgrades).From }}


--------------------------------------------------------------------------------
/hack/tools/release/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs at https://go.k8s.io/owners
2 | 
3 | approvers:
4 |   - cluster-api-release-lead
5 | 
6 | reviewers:
7 |   - cluster-api-release-team
8 | 


--------------------------------------------------------------------------------
/hack/tools/triage/.gitignore:
--------------------------------------------------------------------------------
1 | triage-party.tmp/
2 | .cache/
3 | 


--------------------------------------------------------------------------------
/internal/controllers/cluster/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package cluster implements cluster controller.
18 | package cluster
19 | 


--------------------------------------------------------------------------------
/internal/controllers/machine/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package machine implements machine controller.
18 | package machine
19 | 


--------------------------------------------------------------------------------
/internal/controllers/machinedeployment/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package machinedeployment implements machinedeployment controller.
18 | package machinedeployment
19 | 


--------------------------------------------------------------------------------
/internal/controllers/machineset/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package machineset implements machineset controller.
18 | package machineset
19 | 


--------------------------------------------------------------------------------
/internal/controllers/topology/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs at https://go.k8s.io/owners
2 | 
3 | approvers:
4 |   - cluster-api-topology-maintainers
5 | 
6 | reviewers:
7 |   - cluster-api-reviewers
8 |   - cluster-api-topology-reviewers
9 | 


--------------------------------------------------------------------------------
/internal/goproxy/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package goproxy implements a goproxy client.
18 | package goproxy
19 | 


--------------------------------------------------------------------------------
/internal/runtime/registry/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package registry implements the RuntimeSDK registry.
18 | package registry
19 | 


--------------------------------------------------------------------------------
/internal/test/envtest/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package envtest contains the test environment to run integration tests.
18 | package envtest
19 | 


--------------------------------------------------------------------------------
/internal/topology/variables/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package variables implements validation and defaulting for ClusterClass variables.
18 | package variables
19 | 


--------------------------------------------------------------------------------
/internal/util/tree/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2025 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package tree implements utils for representing a tree in clusterctl commands or E2E tests.
18 | package tree
19 | 


--------------------------------------------------------------------------------
/internal/webhooks/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package webhooks contains external webhook implementations for some of our API types.
18 | package webhooks
19 | 


--------------------------------------------------------------------------------
/internal/webhooks/runtime/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package runtime contains the webhook implementation for runtime ExtensionConfig.
18 | package runtime
19 | 


--------------------------------------------------------------------------------
/logos/README.md:
--------------------------------------------------------------------------------
 1 | # Cluster API related logos and artwork
 2 | 
 3 | ## Cluster API - It's Kubernetes all the way down
 4 | 
 5 | ![Cluster API - It's Kubernetes all the way down](kubernetes-cluster-logos_final-02.svg)
 6 | 
 7 | [Pantone color reference](kubernetes-cluster-logos_2.pdf)
 8 | 
 9 | ## Cluster API - Clusters as Cattle
10 | 
11 | ![Cluster API - Clusters as Cattle](kubernetes-cluster-logos_final-01.svg)
12 | 
13 | [Pantone color reference](kubernetes-cluster-logos_1.pdf)
14 | 
15 | Use of any trademark or logo is subject to the trademark policy available at https://www.linuxfoundation.org/trademark-usage


--------------------------------------------------------------------------------
/logos/icons/CAPI icons.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/logos/icons/CAPI icons.ai


--------------------------------------------------------------------------------
/logos/icons/README.md:
--------------------------------------------------------------------------------
 1 | # Cluster API Icons Set
 2 | 
 3 | These icons are a way to standardize Cluster API architecture diagrams, building on top of the [Kubernetes Icon Set](https://git.k8s.io/community/icons). Having uniform architecture diagrams improve understandibility.
 4 | 
 5 | ## License
 6 | The Kubernetes Icons Set is licensed under a choice of either Apache-2.0
 7 | or CC-BY-4.0 (Creative Commons Attribution 4.0 International). The
 8 | Kubernetes logo is a registered trademark of The Linux Foundation, and use
 9 | of it as a trademark is subject to The Linux Foundation's Trademark Usage
10 | Guidelines at https://www.linuxfoundation.org/trademark-usage/.


--------------------------------------------------------------------------------
/logos/icons/cluster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/logos/icons/cluster.png


--------------------------------------------------------------------------------
/logos/icons/machine-deployment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/logos/icons/machine-deployment.png


--------------------------------------------------------------------------------
/logos/icons/machine-set.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/logos/icons/machine-set.png


--------------------------------------------------------------------------------
/logos/icons/machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/logos/icons/machine.png


--------------------------------------------------------------------------------
/logos/icons/machine.svg:
--------------------------------------------------------------------------------
1 | <svg xmlns="http://www.w3.org/2000/svg" width="702.85" height="681.97" viewBox="0 0 702.85 681.97">
2 |   <title>machine</title>
3 |   <g>
4 |     <path d="M349,.06a47,47,0,0,0-17.91,4.53L86.74,121.34a46.41,46.41,0,0,0-25.28,31.44L1.17,415a46,46,0,0,0,6.35,35.53c.82,1.27,1.71,2.5,2.65,3.69L179.3,664.53A46.89,46.89,0,0,0,215.83,682l271.22-.07a46.86,46.86,0,0,0,36.53-17.4L692.64,454.19a46,46,0,0,0,9-39.22L641.3,152.72A46.43,46.43,0,0,0,616,121.28L371.64,4.59A47,47,0,0,0,349,.06Z" style="fill: #326ce5"/>
5 |     <path d="M117.43,312V412h468V312Zm412.62,84.81A34.82,34.82,0,1,1,564.87,362,34.81,34.81,0,0,1,530.05,396.79Z" style="fill: #fff"/>
6 |   </g>
7 | </svg>
8 | 


--------------------------------------------------------------------------------
/logos/kubernetes-cluster-logos_1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/logos/kubernetes-cluster-logos_1.pdf


--------------------------------------------------------------------------------
/logos/kubernetes-cluster-logos_2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/ea6314dcb46a02117d28944726c9b6ef315deb6c/logos/kubernetes-cluster-logos_2.pdf


--------------------------------------------------------------------------------
/test/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs at https://go.k8s.io/owners
2 | 
3 | approvers:
4 |   - cluster-api-test-maintainers
5 | 
6 | reviewers:
7 |   - cluster-api-reviewers
8 |   - cluster-api-test-reviewers
9 | 


--------------------------------------------------------------------------------
/test/README.md:
--------------------------------------------------------------------------------
 1 | # Test
 2 | 
 3 | ## Compatibility notice
 4 | 
 5 | This package is not subject to deprecation notices or compatibility guarantees.
 6 | 
 7 | - We iterate on the test framework quickly and frequently, and breaking changes are likely. External providers using this package should update to the latest API changes when updating Cluster API. Maintainers and contributors must give notice in release notes when a breaking change happens.
 8 | 
 9 | - The docker provider, including its APIs, should only be used for development/testing purposes. APIs and code can change at any time without notice.
10 | 


--------------------------------------------------------------------------------
/test/e2e/.gitignore:
--------------------------------------------------------------------------------
1 | *.xml
2 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-ignition/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-kcp.yaml
3 | - ../bases/md.yaml
4 | - ../bases/crs.yaml
5 | patches:
6 | - path: ignition.yaml
7 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-ipv6/cluster-ipv6.yaml:
--------------------------------------------------------------------------------
 1 | ---
 2 | apiVersion: cluster.x-k8s.io/v1beta1
 3 | kind: Cluster
 4 | metadata:
 5 |   name: '${CLUSTER_NAME}'
 6 | spec:
 7 |   clusterNetwork:
 8 |     services:
 9 |       cidrBlocks: ['${DOCKER_SERVICE_IPV6_CIDRS}']
10 |     pods:
11 |       cidrBlocks: ['${DOCKER_POD_IPV6_CIDRS}']
12 | ---
13 | apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
14 | kind: DockerCluster
15 | metadata:
16 |   name: '${CLUSTER_NAME}'
17 | spec:
18 |   controlPlaneEndpoint:
19 |     port: 7777
20 |     host: ""
21 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-ipv6/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-kcp.yaml
3 | - ../bases/md.yaml
4 | - ../bases/crs.yaml
5 | patches:
6 | - path: cluster-ipv6.yaml
7 | - path: md-ipv6.yaml
8 | - path: kcp-ipv6.yaml
9 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-ipv6/md-ipv6.yaml:
--------------------------------------------------------------------------------
 1 | ---
 2 | apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
 3 | kind: KubeadmConfigTemplate
 4 | metadata:
 5 |   name: "${CLUSTER_NAME}-md-0"
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       initConfiguration:
10 |         nodeRegistration:
11 |           kubeletExtraArgs:
12 |             node-ip: "::"
13 |       joinConfiguration:
14 |         nodeRegistration:
15 |           kubeletExtraArgs:
16 |             node-ip: "::"
17 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-kcp-adoption/step1/kustomization.yaml:
--------------------------------------------------------------------------------
1 | labels:
2 | - includeSelectors: true
3 |   pairs:
4 |     kcp-adoption.step1: ""
5 | 
6 | resources:
7 | - cluster-with-cp0.yaml
8 | - ../../bases/crs.yaml
9 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-kcp-adoption/step2/kustomization.yaml:
--------------------------------------------------------------------------------
1 | labels:
2 | - includeSelectors: true
3 |   pairs:
4 |     kcp-adoption.step2: ""
5 | 
6 | resources:
7 | - ../../bases/cluster-with-kcp.yaml
8 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-kcp-pre-drain/cluster.yaml:
--------------------------------------------------------------------------------
 1 | ---
 2 | apiVersion: cluster.x-k8s.io/v1beta1
 3 | kind: Cluster
 4 | metadata:
 5 |   name: '${CLUSTER_NAME}'
 6 | spec:
 7 |   topology:
 8 |     class: quick-start
 9 |     controlPlane:
10 |       metadata:
11 |         annotations:
12 |           pre-drain.delete.hook.machine.cluster.x-k8s.io/kcp-ready-check: "true"


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-kcp-pre-drain/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 |   - ../cluster-template-upgrades
3 | patches:
4 | - path: cluster.yaml
5 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-kcp-remediation/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - cluster-with-kcp.yaml
3 | - ../bases/md.yaml
4 | - ../bases/crs.yaml
5 | - mhc.yaml
6 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-kcp-scale-in/kcp-scale-in-variable.yaml:
--------------------------------------------------------------------------------
1 | - op: add
2 |   path: /spec/topology/variables/-
3 |   value:
4 |     name: kubeadmControlPlaneMaxSurge
5 |     value: "0"


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-kcp-scale-in/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | resources:
 2 | - ../bases/crs.yaml
 3 | - ../bases/cluster-with-topology.yaml
 4 | 
 5 | patches:
 6 | - path: kcp-scale-in-variable.yaml
 7 |   target:
 8 |     group: cluster.x-k8s.io
 9 |     version: v1beta1
10 |     kind: Cluster
11 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-machine-pool/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 |   - ../bases/cluster-with-kcp.yaml
3 |   - ../bases/mp.yaml
4 |   - ../bases/crs.yaml
5 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-md-remediation/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-kcp.yaml
3 | - ../bases/md.yaml
4 | - ../bases/crs.yaml
5 | - mhc.yaml
6 | 
7 | patches:
8 | - path: md.yaml
9 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-md-remediation/md.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: cluster.x-k8s.io/v1beta1
 2 | kind: MachineDeployment
 3 | metadata:
 4 |   name: "${CLUSTER_NAME}-md-0"
 5 | spec:
 6 |   template:
 7 |     metadata:
 8 |       labels:
 9 |         "e2e.remediation.label": ""
10 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-md-remediation/mhc.yaml:
--------------------------------------------------------------------------------
 1 | ---
 2 | # MachineHealthCheck object with
 3 | # - a selector that targets all the machines with label e2e.remediation.label=""
 4 | # - unhealthyConditions triggering remediation after 10s the condition is set
 5 | apiVersion: cluster.x-k8s.io/v1beta1
 6 | kind: MachineHealthCheck
 7 | metadata:
 8 |   name: "${CLUSTER_NAME}-mhc-0"
 9 | spec:
10 |   clusterName: "${CLUSTER_NAME}"
11 |   maxUnhealthy: 100%
12 |   selector:
13 |     matchLabels:
14 |       e2e.remediation.label: ""
15 |   unhealthyConditions:
16 |     - type: e2e.remediation.condition
17 |       status: "False"
18 |       timeout: 10s
19 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-topology-autoscaler/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 |   - ../bases/crs.yaml
3 |   - cluster-autoscaler.yaml
4 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-topology-dualstack-ipv4-primary/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-topology.yaml
3 | - ../bases/crs.yaml
4 | 
5 | patches:
6 | - path: cluster.yaml
7 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-topology-dualstack-ipv6-primary/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-topology.yaml
3 | - ../bases/crs.yaml
4 | 
5 | patches:
6 | - path: cluster.yaml
7 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-topology-kcp-only/cluster-topology-class.yaml:
--------------------------------------------------------------------------------
1 | - op: add
2 |   path: /spec/topology/class
3 |   value: "quick-start-kcp-only"
4 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-topology-kcp-only/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | resources:
 2 |   - ../cluster-template-topology-no-workers
 3 | 
 4 | patches:
 5 | - path: cluster-topology-class.yaml
 6 |   target:
 7 |     group: cluster.x-k8s.io
 8 |     version: v1beta1
 9 |     kind: Cluster
10 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-topology-no-workers/disable-control-plane-taint-variable.yaml:
--------------------------------------------------------------------------------
1 | - op: add
2 |   path: /spec/topology/variables/-
3 |   value:
4 |     name: controlPlaneTaint
5 |     value: false
6 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-topology-no-workers/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | resources:
 2 |   - ../bases/cluster-with-topology.yaml
 3 |   - ../bases/crs.yaml
 4 | 
 5 | patches:
 6 | - path: disable-control-plane-taint-variable.yaml
 7 |   target:
 8 |     group: cluster.x-k8s.io
 9 |     version: v1beta1
10 |     kind: Cluster
11 | - path: remove-topology-workers.yaml
12 |   target:
13 |     group: cluster.x-k8s.io
14 |     version: v1beta1
15 |     kind: Cluster
16 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-topology-no-workers/remove-topology-workers.yaml:
--------------------------------------------------------------------------------
1 | - op: remove
2 |   path: /spec/topology/workers
3 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-topology/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 |   - ../bases/cluster-with-topology.yaml
3 |   - ../bases/crs.yaml
4 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-upgrades-runtimesdk/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 |   - ../bases/crs.yaml
3 |   - cluster-runtimesdk.yaml
4 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template-upgrades/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 |   - ../bases/cluster-with-topology.yaml
3 |   - ../bases/crs.yaml
4 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/cluster-template/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-kcp.yaml
3 | - ../bases/md.yaml
4 | - ../bases/crs.yaml
5 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/clusterclass-quick-start-kcp-only/clusterclass-name.yaml:
--------------------------------------------------------------------------------
1 | - op: replace
2 |   path: /metadata/name
3 |   value: quick-start-kcp-only
4 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/clusterclass-quick-start-kcp-only/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | resources:
 2 |   - ../clusterclass-quick-start.yaml
 3 | 
 4 | patches:
 5 | - path: remove-workers.yaml
 6 |   target:
 7 |     group: cluster.x-k8s.io
 8 |     version: v1beta1
 9 |     kind: ClusterClass
10 | - path: clusterclass-name.yaml
11 |   target:
12 |     group: cluster.x-k8s.io
13 |     version: v1beta1
14 |     kind: ClusterClass
15 | - path: remove-worker-patches.yaml
16 |   target:
17 |     group: cluster.x-k8s.io
18 |     version: v1beta1
19 |     kind: ClusterClass
20 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/clusterclass-quick-start-kcp-only/remove-worker-patches.yaml:
--------------------------------------------------------------------------------
 1 | - op: remove
 2 |   path: /spec/patches/14
 3 | - op: remove
 4 |   path: /spec/patches/9
 5 | - op: remove
 6 |   path: /spec/patches/5
 7 | - op: remove
 8 |   path: /spec/patches/4/definitions/0/selector/matchResources/machineDeploymentClass
 9 | - op: remove
10 |   path: /spec/patches/3/definitions/2
11 | - op: remove
12 |   path: /spec/patches/3/definitions/0
13 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/main/clusterclass-quick-start-kcp-only/remove-workers.yaml:
--------------------------------------------------------------------------------
1 | - op: remove
2 |   path: /spec/workers
3 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/v0.3/cluster-template/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-kcp.yaml
3 | - ../bases/md.yaml
4 | - ../bases/crs.yaml
5 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/v0.4/cluster-template/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-kcp.yaml
3 | - ../bases/md.yaml
4 | - ../bases/crs.yaml
5 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/v1.10/cluster-template-topology/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 |   - ../bases/cluster-with-topology.yaml
3 |   - ../bases/crs.yaml
4 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/v1.10/cluster-template/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-kcp.yaml
3 | - ../bases/md.yaml
4 | - ../bases/crs.yaml
5 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/v1.5/cluster-template-topology/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 |   - ../bases/cluster-with-topology.yaml
3 |   - ../bases/crs.yaml


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/v1.5/cluster-template/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-kcp.yaml
3 | - ../bases/md.yaml
4 | - ../bases/crs.yaml


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/v1.6/cluster-template-topology/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 |   - ../bases/cluster-with-topology.yaml
3 |   - ../bases/crs.yaml
4 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/v1.6/cluster-template/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-kcp.yaml
3 | - ../bases/md.yaml
4 | - ../bases/crs.yaml
5 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/v1.8/cluster-template-topology/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 |   - ../bases/cluster-with-topology.yaml
3 |   - ../bases/crs.yaml
4 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/v1.8/cluster-template/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-kcp.yaml
3 | - ../bases/md.yaml
4 | - ../bases/crs.yaml
5 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/v1.9/cluster-template-topology/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 |   - ../bases/cluster-with-topology.yaml
3 |   - ../bases/crs.yaml
4 | 


--------------------------------------------------------------------------------
/test/e2e/data/infrastructure-docker/v1.9/cluster-template/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - ../bases/cluster-with-kcp.yaml
3 | - ../bases/md.yaml
4 | - ../bases/crs.yaml
5 | 


--------------------------------------------------------------------------------
/test/e2e/data/kubetest/conformance.yaml:
--------------------------------------------------------------------------------
 1 | ginkgo.focus: \[Conformance\]
 2 | ginkgo.skip: \[Serial\]
 3 | disable-log-dump: true
 4 | # ginkgo.progress flag is deprecated but its still used in
 5 | # k8s versions <= v1.26, we have to keep it as long as we
 6 | # support these versions.
 7 | ginkgo.progress: true
 8 | ginkgo.slow-spec-threshold: 120s
 9 | ginkgo.flake-attempts: 3
10 | ginkgo.trace: true
11 | ginkgo.v: true
12 | # Use 5m instead of the default 10m to fail faster
13 | # if kube-system Pods are not coming up.
14 | system-pods-startup-timeout: 5m
15 | # TODO: (killianmuldoon) This flag is not currently working with the conformance set-up.
16 | # ginkgo.noColor: true
17 | 


--------------------------------------------------------------------------------
/test/e2e/data/kubetest/dualstack.yaml:
--------------------------------------------------------------------------------
 1 | ginkgo.focus: \[Feature\:IPv6DualStack\]
 2 | ginkgo.skip: \[Feature\:SCTPConnectivity\]
 3 | disable-log-dump: true
 4 | # ginkgo.progress flag is deprecated but its still used when
 5 | # we run kubetest on K8s versions <= v1.26, we have to keep it
 6 | # as long as we support these versions.
 7 | ginkgo.progress: true
 8 | ginkgo.slow-spec-threshold: 120s
 9 | ginkgo.flake-attempts: 3
10 | ginkgo.trace: true
11 | ginkgo.v: true
12 | ginkgo.no-color: true
13 | # Use 5m instead of the default 10m to fail faster
14 | # if kube-system Pods are not coming up.
15 | system-pods-startup-timeout: 5m
16 | 


--------------------------------------------------------------------------------
/test/e2e/data/shared/v0.3/metadata.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3
2 | kind: Metadata
3 | releaseSeries:
4 |   - major: 0
5 |     minor: 3
6 |     contract: v1alpha3
7 |   - major: 0
8 |     minor: 2
9 |     contract: v1alpha2


--------------------------------------------------------------------------------
/test/e2e/data/shared/v0.4/metadata.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3
 2 | kind: Metadata
 3 | releaseSeries:
 4 |   - major: 0
 5 |     minor: 4
 6 |     contract: v1alpha4
 7 |   - major: 0
 8 |     minor: 3
 9 |     contract: v1alpha3
10 |   - major: 0
11 |     minor: 2
12 |     contract: v1alpha2


--------------------------------------------------------------------------------
/test/e2e/data/shared/v1.5/metadata.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3
 2 | kind: Metadata
 3 | releaseSeries:
 4 |   - major: 1
 5 |     minor: 5
 6 |     contract: v1beta1
 7 |   - major: 1
 8 |     minor: 4
 9 |     contract: v1beta1
10 |   - major: 1
11 |     minor: 3
12 |     contract: v1beta1
13 |   - major: 1
14 |     minor: 2
15 |     contract: v1beta1
16 |   - major: 1
17 |     minor: 1
18 |     contract: v1beta1
19 |   - major: 1
20 |     minor: 0
21 |     contract: v1beta1
22 |   - major: 0
23 |     minor: 4
24 |     contract: v1alpha4
25 |   - major: 0
26 |     minor: 3
27 |     contract: v1alpha3
28 |   - major: 0
29 |     minor: 2
30 |     contract: v1alpha2


--------------------------------------------------------------------------------
/test/e2e/data/shared/v1.6/metadata.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3
 2 | kind: Metadata
 3 | releaseSeries:
 4 |   - major: 1
 5 |     minor: 6
 6 |     contract: v1beta1
 7 |   - major: 1
 8 |     minor: 5
 9 |     contract: v1beta1
10 |   - major: 1
11 |     minor: 4
12 |     contract: v1beta1
13 |   - major: 1
14 |     minor: 3
15 |     contract: v1beta1
16 |   - major: 1
17 |     minor: 2
18 |     contract: v1beta1
19 |   - major: 1
20 |     minor: 1
21 |     contract: v1beta1
22 |   - major: 1
23 |     minor: 0
24 |     contract: v1beta1
25 |   - major: 0
26 |     minor: 4
27 |     contract: v1alpha4
28 |   - major: 0
29 |     minor: 3
30 |     contract: v1alpha3
31 | 


--------------------------------------------------------------------------------
/test/e2e/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package e2e implements end to end testing.
18 | package e2e
19 | 


--------------------------------------------------------------------------------
/test/e2e/internal/log/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package log implements log handling.
18 | package log
19 | 


--------------------------------------------------------------------------------
/test/extension/.import-restrictions:
--------------------------------------------------------------------------------
1 | # Enforce that the test extension implementation and its integration tests
2 | # do not depend on internal packages.
3 | rules:
4 |   - selectorRegexp: .*internal.*
5 |     allowedPrefixes: []
6 |     forbiddenPrefixes: []
7 | 


--------------------------------------------------------------------------------
/test/extension/config/certmanager/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 | resources:
4 | - certificate.yaml
5 | 
6 | configurations:
7 | - kustomizeconfig.yaml
8 | 


--------------------------------------------------------------------------------
/test/extension/config/certmanager/kustomizeconfig.yaml:
--------------------------------------------------------------------------------
1 | # This configuration is for teaching kustomize how to update name ref and var substitution
2 | nameReference:
3 | - kind: Issuer
4 |   group: cert-manager.io
5 |   fieldSpecs:
6 |   - kind: Certificate
7 |     group: cert-manager.io
8 |     path: spec/issuerRef/name
9 | 


--------------------------------------------------------------------------------
/test/extension/config/default/manager_image_patch.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       - image: gcr.io/k8s-staging-cluster-api/test-extension:main
11 |         name: manager
12 | 


--------------------------------------------------------------------------------
/test/extension/config/default/manager_pull_policy.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       - name: manager
11 |         imagePullPolicy: Always
12 | 


--------------------------------------------------------------------------------
/test/extension/config/default/manager_webhook_patch.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       - name: manager
11 |         ports:
12 |         - containerPort: 9443
13 |           name: webhook-server
14 |           protocol: TCP
15 |         volumeMounts:
16 |         - mountPath: /tmp/k8s-webhook-server/serving-certs
17 |           name: cert
18 |           readOnly: true
19 |       volumes:
20 |       - name: cert
21 |         secret:
22 |           secretName: test-extension-webhook-service-cert
23 | 


--------------------------------------------------------------------------------
/test/extension/config/default/namespace.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Namespace
3 | metadata:
4 |   name: system
5 | 


--------------------------------------------------------------------------------
/test/extension/config/default/service.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: v1
 2 | kind: Service
 3 | metadata:
 4 |   name: webhook-service
 5 | spec:
 6 |   ports:
 7 |     - port: 443
 8 |       targetPort: webhook-server
 9 |   selector:
10 |     app: test-extension-manager
11 | 


--------------------------------------------------------------------------------
/test/extension/config/rbac/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 | resources:
4 | - leader_election_role.yaml
5 | - leader_election_role_binding.yaml
6 | - role.yaml
7 | - role_binding.yaml
8 | - service_account.yaml
9 | 


--------------------------------------------------------------------------------
/test/extension/config/rbac/leader_election_role.yaml:
--------------------------------------------------------------------------------
 1 | 
 2 | # permissions to do leader election.
 3 | apiVersion: rbac.authorization.k8s.io/v1
 4 | kind: Role
 5 | metadata:
 6 |   name: leader-election-role
 7 | rules:
 8 | - apiGroups:
 9 |   - ""
10 |   resources:
11 |   - events
12 |   verbs:
13 |   - create
14 | - apiGroups:
15 |   - "coordination.k8s.io"
16 |   resources:
17 |   - leases
18 |   verbs:
19 |   - get
20 |   - list
21 |   - watch
22 |   - create
23 |   - update
24 |   - patch
25 |   - delete
26 | 


--------------------------------------------------------------------------------
/test/extension/config/rbac/leader_election_role_binding.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: RoleBinding
 3 | metadata:
 4 |   name: leader-election-rolebinding
 5 | roleRef:
 6 |   apiGroup: rbac.authorization.k8s.io
 7 |   kind: Role
 8 |   name: leader-election-role
 9 | subjects:
10 | - kind: ServiceAccount
11 |   name: manager
12 |   namespace: system
13 | 


--------------------------------------------------------------------------------
/test/extension/config/rbac/role.yaml:
--------------------------------------------------------------------------------
 1 | ---
 2 | apiVersion: rbac.authorization.k8s.io/v1
 3 | kind: ClusterRole
 4 | metadata:
 5 |   name: manager-role
 6 | rules:
 7 | - apiGroups:
 8 |   - ""
 9 |   resources:
10 |   - configmaps
11 |   verbs:
12 |   - create
13 |   - get
14 |   - list
15 |   - patch
16 |   - update
17 |   - watch
18 | - apiGroups:
19 |   - authentication.k8s.io
20 |   resources:
21 |   - tokenreviews
22 |   verbs:
23 |   - create
24 | - apiGroups:
25 |   - authorization.k8s.io
26 |   resources:
27 |   - subjectaccessreviews
28 |   verbs:
29 |   - create
30 | 


--------------------------------------------------------------------------------
/test/extension/config/rbac/role_binding.yaml:
--------------------------------------------------------------------------------
 1 | # Note: this is specific of the CAPI test-extension, because it uses a ConfigMap to define life-cycle hooks answers.
 2 | # other Runtime extensions provider might want to drop this ClusterRoleBinding or make it scoped to a namespace changing kind to RoleBinding.
 3 | apiVersion: rbac.authorization.k8s.io/v1
 4 | kind: ClusterRoleBinding
 5 | metadata:
 6 |   creationTimestamp: null
 7 |   name: manager-rolebinding
 8 | roleRef:
 9 |   apiGroup: rbac.authorization.k8s.io
10 |   kind: ClusterRole
11 |   name: manager-role
12 | subjects:
13 | - kind: ServiceAccount
14 |   name: manager
15 |   namespace: system
16 | 


--------------------------------------------------------------------------------
/test/extension/config/rbac/service_account.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ServiceAccount
3 | metadata:
4 |   name: manager
5 |   namespace: system
6 | 


--------------------------------------------------------------------------------
/test/framework/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs at https://go.k8s.io/owners
2 | 
3 | approvers:
4 |   - cluster-api-test-framework-maintainers
5 | 
6 | reviewers:
7 |   - cluster-api-reviewers
8 |   - cluster-api-test-framework-reviewers
9 | 


--------------------------------------------------------------------------------
/test/framework/README.md:
--------------------------------------------------------------------------------
1 | # CAPI e2e testing framework
2 | 
3 | This framework aims to define common end-to-end patterns that can be reused across Cluster API providers.
4 | 
5 | See https://cluster-api.sigs.k8s.io/developer/e2e.html for more information.


--------------------------------------------------------------------------------
/test/framework/clusterctl/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package clusterctl implements clusterctl interaction.
18 | package clusterctl
19 | 


--------------------------------------------------------------------------------
/test/framework/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package framework implements the test framework.
18 | package framework
19 | 


--------------------------------------------------------------------------------
/test/framework/kubernetesversions/data/kustomization.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: kustomize.config.k8s.io/v1beta1
 2 | kind: Kustomization
 3 | namespace: default
 4 | resources:
 5 | - ci-artifacts-source-template.yaml
 6 | patches:
 7 | - path: kubeadmcontrolplane-patch.yaml
 8 |   target:
 9 |     group: controlplane.cluster.x-k8s.io
10 |     kind: KubeadmControlPlane
11 |     name: .*-control-plane
12 |     version: v1beta2
13 | - path: kubeadmconfigtemplate-patch.yaml
14 |   target:
15 |     group: bootstrap.cluster.x-k8s.io
16 |     kind: KubeadmConfigTemplate
17 |     name: .*-md-0
18 |     version: v1beta2
19 | - path: platform-kustomization.yaml
20 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/.gitignore:
--------------------------------------------------------------------------------
 1 | # invalid samples.
 2 | config/samples
 3 | 
 4 | # vscode
 5 | .vscode
 6 | 
 7 | # goland
 8 | .idea
 9 | 
10 | # ignore build output
11 | dist
12 | bin
13 | manager_image_patch.yaml-e
14 | cover.out
15 | manager
16 | 
17 | # test results
18 | *.xml
19 | 
20 | e2e/resources/**
21 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs: http://git.k8s.io/community/contributors/guide/owners.md
2 | 
3 | approvers:
4 |   - cluster-api-provider-docker-maintainers
5 | 
6 | reviewers:
7 |   - cluster-api-reviewers
8 |   - cluster-api-provider-docker-reviewers
9 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/api/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   # Enforce that our APIs do not depend on CR packages.
3 |   # This is overwritten e.g. in packages that require conversion.
4 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
5 |     allowedPrefixes: []
6 |     forbiddenPrefixes:
7 |       - "sigs.k8s.io/controller-runtime"
8 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/api/v1alpha3/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/api/v1alpha4/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/api/v1beta1/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/certmanager/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 | 
4 | resources:
5 | - certificate.yaml
6 | 
7 | configurations:
8 | - kustomizeconfig.yaml
9 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/certmanager/kustomizeconfig.yaml:
--------------------------------------------------------------------------------
1 | # This configuration is for teaching kustomize how to update name ref and var substitution
2 | nameReference:
3 | - kind: Issuer
4 |   group: cert-manager.io
5 |   fieldSpecs:
6 |   - kind: Certificate
7 |     group: cert-manager.io
8 |     path: spec/issuerRef/name
9 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/crd/kustomizeconfig.yaml:
--------------------------------------------------------------------------------
 1 | # This file is for teaching kustomize how to substitute name and namespace reference in CRD
 2 | nameReference:
 3 | - kind: Service
 4 |   version: v1
 5 |   fieldSpecs:
 6 |   - kind: CustomResourceDefinition
 7 |     group: apiextensions.k8s.io
 8 |     path: spec/conversion/webhook/clientConfig/service/name
 9 | 
10 | namespace:
11 | - kind: CustomResourceDefinition
12 |   group: apiextensions.k8s.io
13 |   path: spec/conversion/webhook/clientConfig/service/namespace
14 |   create: false
15 | 
16 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/crd/patches/webhook_in_devclusters.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: devclusters.infrastructure.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/crd/patches/webhook_in_devclustertemplates.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: devclustertemplates.infrastructure.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/crd/patches/webhook_in_devmachines.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: devmachines.infrastructure.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/crd/patches/webhook_in_devmachinetemplates.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: devmachinetemplates.infrastructure.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/crd/patches/webhook_in_dockerclusters.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: dockerclusters.infrastructure.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/crd/patches/webhook_in_dockerclustertemplates.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: dockerclustertemplates.infrastructure.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/crd/patches/webhook_in_dockermachinepools.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: dockermachinepools.infrastructure.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/crd/patches/webhook_in_dockermachinepooltemplates.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: dockermachinepooltemplates.infrastructure.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/crd/patches/webhook_in_dockermachines.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: dockermachines.infrastructure.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/crd/patches/webhook_in_dockermachinetemplates.yaml:
--------------------------------------------------------------------------------
 1 | # The following patch enables conversion webhook for CRD
 2 | # CRD conversion requires k8s 1.13 or later.
 3 | apiVersion: apiextensions.k8s.io/v1
 4 | kind: CustomResourceDefinition
 5 | metadata:
 6 |   name: dockermachinetemplates.infrastructure.cluster.x-k8s.io
 7 | spec:
 8 |   conversion:
 9 |     strategy: Webhook
10 |     webhook:
11 |       conversionReviewVersions: ["v1", "v1beta1"]
12 |       clientConfig:
13 |         service:
14 |           namespace: system
15 |           name: webhook-service
16 |           path: /convert
17 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/default/manager_image_patch.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       # Change the value of image field below to your controller image URL
11 |       - image: gcr.io/k8s-staging-cluster-api/capd-manager:main
12 |         name: manager
13 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/default/manager_pull_policy.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       - name: manager
11 |         imagePullPolicy: Always
12 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/default/manager_webhook_patch.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: apps/v1
 2 | kind: Deployment
 3 | metadata:
 4 |   name: controller-manager
 5 |   namespace: system
 6 | spec:
 7 |   template:
 8 |     spec:
 9 |       containers:
10 |       - name: manager
11 |         ports:
12 |         - containerPort: 9443
13 |           name: webhook-server
14 |           protocol: TCP
15 |         volumeMounts:
16 |         - mountPath: /tmp/k8s-webhook-server/serving-certs
17 |           name: cert
18 |           readOnly: true
19 |       volumes:
20 |       - name: cert
21 |         secret:
22 |           secretName: capd-webhook-service-cert # this secret will not be prefixed, since it's not managed by kustomize
23 | 
24 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/default/namespace.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: v1
 2 | kind: Namespace
 3 | metadata:
 4 |   labels:
 5 |     control-plane: controller-manager
 6 |     # CAPD requires the privileged policy because it needs to mount the docker socket using a hostPath.
 7 |     pod-security.kubernetes.io/enforce: privileged
 8 |     pod-security.kubernetes.io/warn: privileged
 9 |     pod-security.kubernetes.io/audit: privileged
10 |   name: system
11 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/default/webhookcainjection_patch.yaml:
--------------------------------------------------------------------------------
 1 | # This patch add annotation to admission webhook config and
 2 | # the variables CERTIFICATE_NAMESPACE and CERTIFICATE_NAME will be substituted by kustomize.
 3 | apiVersion: admissionregistration.k8s.io/v1
 4 | kind: ValidatingWebhookConfiguration
 5 | metadata:
 6 |   name: validating-webhook-configuration
 7 |   annotations:
 8 |     cert-manager.io/inject-ca-from: CERTIFICATE_NAMESPACE/CERTIFICATE_NAME
 9 | ---
10 | apiVersion: admissionregistration.k8s.io/v1
11 | kind: MutatingWebhookConfiguration
12 | metadata:
13 |   name: mutating-webhook-configuration
14 |   annotations:
15 |     cert-manager.io/inject-ca-from: CERTIFICATE_NAMESPACE/CERTIFICATE_NAME
16 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/manager/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - manager.yaml
3 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/rbac/kustomization.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: kustomize.config.k8s.io/v1beta1
2 | kind: Kustomization
3 | resources:
4 | - role.yaml
5 | - role_binding.yaml
6 | - service_account.yaml
7 | - leader_election_role.yaml
8 | - leader_election_role_binding.yaml
9 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/rbac/leader_election_role.yaml:
--------------------------------------------------------------------------------
 1 | # permissions to do leader election.
 2 | apiVersion: rbac.authorization.k8s.io/v1
 3 | kind: Role
 4 | metadata:
 5 |   name: leader-election-role
 6 | rules:
 7 | - apiGroups:
 8 |   - ""
 9 |   resources:
10 |   - events
11 |   verbs:
12 |   - create
13 | - apiGroups:
14 |   - "coordination.k8s.io"
15 |   resources:
16 |   - leases
17 |   verbs:
18 |   - get
19 |   - list
20 |   - watch
21 |   - create
22 |   - update
23 |   - patch
24 |   - delete
25 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/rbac/leader_election_role_binding.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: RoleBinding
 3 | metadata:
 4 |   name: leader-election-rolebinding
 5 | roleRef:
 6 |   apiGroup: rbac.authorization.k8s.io
 7 |   kind: Role
 8 |   name: leader-election-role
 9 | subjects:
10 | - kind: ServiceAccount
11 |   name: manager
12 |   namespace: system
13 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/rbac/role_binding.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: rbac.authorization.k8s.io/v1
 2 | kind: ClusterRoleBinding
 3 | metadata:
 4 |   name: manager-rolebinding
 5 | roleRef:
 6 |   apiGroup: rbac.authorization.k8s.io
 7 |   kind: ClusterRole
 8 |   name: manager-role
 9 | subjects:
10 | - kind: ServiceAccount
11 |   name: manager
12 |   namespace: system
13 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/rbac/service_account.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: ServiceAccount
3 | metadata:
4 |   name: manager
5 |   namespace: system
6 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/webhook/kustomization.yaml:
--------------------------------------------------------------------------------
1 | resources:
2 | - manifests.yaml
3 | - service.yaml
4 | 
5 | configurations:
6 | - kustomizeconfig.yaml
7 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/webhook/kustomizeconfig.yaml:
--------------------------------------------------------------------------------
 1 | # the following config is for teaching kustomize where to look at when substituting vars.
 2 | # It requires kustomize v2.1.0 or newer to work properly.
 3 | nameReference:
 4 | - kind: Service
 5 |   version: v1
 6 |   fieldSpecs:
 7 |   - kind: ValidatingWebhookConfiguration
 8 |     group: admissionregistration.k8s.io
 9 |     path: webhooks/clientConfig/service/name
10 | 
11 | namespace:
12 | - kind: ValidatingWebhookConfiguration
13 |   group: admissionregistration.k8s.io
14 |   path: webhooks/clientConfig/service/namespace
15 |   create: true
16 | 
17 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/config/webhook/service.yaml:
--------------------------------------------------------------------------------
 1 | apiVersion: v1
 2 | kind: Service
 3 | metadata:
 4 |   name: webhook-service
 5 |   namespace: system
 6 | spec:
 7 |   ports:
 8 |     - port: 443
 9 |       targetPort: webhook-server
10 | 
11 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/exp/api/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   # Enforce that our APIs do not depend on CR packages.
3 |   # This is overwritten e.g. in packages that require conversion.
4 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
5 |     allowedPrefixes: []
6 |     forbiddenPrefixes:
7 |       - "sigs.k8s.io/controller-runtime"
8 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/exp/api/v1alpha3/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/exp/api/v1alpha4/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/exp/api/v1beta1/.import-restrictions:
--------------------------------------------------------------------------------
1 | rules:
2 |   - selectorRegexp: sigs[.]k8s[.]io/controller-runtime
3 |     allowedPrefixes:
4 |       - "sigs.k8s.io/controller-runtime/pkg/conversion"
5 |     forbiddenPrefixes: []
6 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/internal/controllers/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package controllers implements the Docker controllers.
18 | package controllers
19 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/internal/docker/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package docker implements docker functionality.
18 | package docker
19 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/internal/provisioning/ignition/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs at https://go.k8s.io/owners
2 | 
3 | approvers:
4 |   - cluster-api-bootstrap-provider-kubeadm-ignition-maintainers
5 | 
6 | reviewers:
7 |   - cluster-api-reviewers
8 |   - cluster-api-bootstrap-provider-kubeadm-ignition-reviewers
9 | 


--------------------------------------------------------------------------------
/test/infrastructure/docker/internal/webhooks/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2023 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package webhooks implements docker infrastructure webhooks.
18 | package webhooks
19 | 


--------------------------------------------------------------------------------
/test/infrastructure/inmemory/OWNERS:
--------------------------------------------------------------------------------
1 | # See the OWNERS docs: http://git.k8s.io/community/contributors/guide/owners.md
2 | 
3 | approvers:
4 |   - cluster-api-provider-inmemory-maintainers
5 | 
6 | reviewers:
7 |   - cluster-api-reviewers
8 |   - cluster-api-provider-inmemory-reviewers
9 | 


--------------------------------------------------------------------------------
/util/apiwarnings/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2024 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package apiwarnings defines warning handlers used with API clients.
18 | package apiwarnings
19 | 


--------------------------------------------------------------------------------
/util/cache/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2024 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package cache implements some cache utils.
18 | package cache
19 | 


--------------------------------------------------------------------------------
/util/conditions/deprecated/v1beta1/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2020 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package v1beta1 implements condition utilities.
18 | package v1beta1
19 | 


--------------------------------------------------------------------------------
/util/contract/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2022 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package contract contains utils related to the Cluster API contract.
18 | package contract
19 | 


--------------------------------------------------------------------------------
/util/log/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2017 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package log provides log utils.
18 | package log
19 | 


--------------------------------------------------------------------------------
/util/patch/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package patch implements patch utilities.
18 | package patch
19 | 


--------------------------------------------------------------------------------
/util/secret/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package secret implements utilities for secret handling.
18 | package secret
19 | 


--------------------------------------------------------------------------------
/util/test/builder/README.md:
--------------------------------------------------------------------------------
1 | # "Generic" custom resource builder
2 | 
3 | This package helps create custom resources definitions of "generic" Cluster API resources. For example, resources for a "generic" infra provider, such as InfraClusters, InfraMachines, InfraTemplates, etc. These resources are used for testing Cluster API controllers that reconcile resources created by different infrastructure, bootstrap, and control-plane providers.
4 | 
5 | ## Compatibility notice
6 | 
7 | This package does not adhere to any compatibility guarantees. This package is meant to be used by tests only.
8 | 


--------------------------------------------------------------------------------
/webhooks/doc.go:
--------------------------------------------------------------------------------
 1 | /*
 2 | Copyright 2021 The Kubernetes Authors.
 3 | 
 4 | Licensed under the Apache License, Version 2.0 (the "License");
 5 | you may not use this file except in compliance with the License.
 6 | You may obtain a copy of the License at
 7 | 
 8 |     http://www.apache.org/licenses/LICENSE-2.0
 9 | 
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | 
17 | // Package webhooks contains external webhook implementations for some of our API types.
18 | package webhooks
19 | 


--------------------------------------------------------------------------------