Skip to content

Commit 02f141d

Browse files
authored
Merge pull request #8799 from fabriziopandini/add-in-memory-provider
✨ Add in memory provider
2 parents 985d9df + 6d9349a commit 02f141d

File tree

122 files changed

+10405
-11
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

122 files changed

+10405
-11
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,7 @@ As of today there are following OWNERS files/Owner groups defining sub areas:
534534
- [kubeadm Control Plane Provider (KCP)](https://github.com/kubernetes-sigs/cluster-api/tree/main/controlplane/kubeadm)
535535
- [Cluster Managed topologies, ClusterClass](https://github.com/kubernetes-sigs/cluster-api/tree/main/internal/controllers/topology)
536536
- [Infrastructure Provider Docker (CAPD)](https://github.com/kubernetes-sigs/cluster-api/tree/main/test/infrastructure/docker)
537+
- [Infrastructure Provider in-memory](https://github.com/kubernetes-sigs/cluster-api/tree/main/test/infrastructure/inmemory)
537538
- [Test](https://github.com/kubernetes-sigs/cluster-api/tree/main/test)
538539
- [Test Framework](https://github.com/kubernetes-sigs/cluster-api/tree/main/test/framework)
539540
- [Docs](https://github.com/kubernetes-sigs/cluster-api/tree/main/docs)

Makefile

Lines changed: 75 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ TOOLS_DIR := hack/tools
6161
TOOLS_BIN_DIR := $(abspath $(TOOLS_DIR)/$(BIN_DIR))
6262
E2E_FRAMEWORK_DIR := $(TEST_DIR)/framework
6363
CAPD_DIR := $(TEST_DIR)/infrastructure/docker
64+
CAPIM_DIR := $(TEST_DIR)/infrastructure/inmemory
6465
TEST_EXTENSION_DIR := $(TEST_DIR)/extension
6566
GO_INSTALL := ./scripts/go_install.sh
6667
OBSERVABILITY_DIR := hack/observability
@@ -200,6 +201,10 @@ KUBEADM_CONTROL_PLANE_CONTROLLER_IMG ?= $(REGISTRY)/$(KUBEADM_CONTROL_PLANE_IMAG
200201
CAPD_IMAGE_NAME ?= capd-manager
201202
CAPD_CONTROLLER_IMG ?= $(REGISTRY)/$(CAPD_IMAGE_NAME)
202203

204+
# capim
205+
CAPIM_IMAGE_NAME ?= capim-manager
206+
CAPIM_CONTROLLER_IMG ?= $(REGISTRY)/$(CAPIM_IMAGE_NAME)
207+
203208
# clusterctl
204209
CLUSTERCTL_MANIFEST_DIR := cmd/clusterctl/config
205210
CLUSTERCTL_IMAGE_NAME ?= clusterctl
@@ -234,15 +239,15 @@ LDFLAGS := $(shell hack/version.sh)
234239
all: test managers clusterctl
235240

236241
help: # Display this help
237-
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[0-9A-Za-z_-]+:.*?##/ { printf " \033[36m%-45s\033[0m %s\n", $$1, $$2 } /^\$$\([0-9A-Za-z_-]+\):.*?##/ { gsub("_","-", $$1); printf " \033[36m%-45s\033[0m %s\n", tolower(substr($$1, 3, length($$1)-7)), $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
242+
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[0-9A-Za-z_-]+:.*?##/ { printf " \033[36m%-50s\033[0m %s\n", $$1, $$2 } /^\$$\([0-9A-Za-z_-]+\):.*?##/ { gsub("_","-", $$1); printf " \033[36m%-50s\033[0m %s\n", tolower(substr($$1, 3, length($$1)-7)), $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
238243

239244
## --------------------------------------
240245
## Generate / Manifests
241246
## --------------------------------------
242247

243248
##@ generate:
244249

245-
ALL_GENERATE_MODULES = core kubeadm-bootstrap kubeadm-control-plane docker-infrastructure
250+
ALL_GENERATE_MODULES = core kubeadm-bootstrap kubeadm-control-plane docker-infrastructure in-memory-infrastructure
246251

247252
.PHONY: generate
248253
generate: ## Run all generate-manifests-*, generate-go-deepcopy-*, generate-go-conversions-* and generate-go-openapi targets
@@ -318,6 +323,19 @@ generate-manifests-docker-infrastructure: $(CONTROLLER_GEN) ## Generate manifest
318323
output:webhook:dir=./config/webhook \
319324
webhook
320325

326+
327+
.PHONY: generate-manifests-in-memory-infrastructure
328+
generate-manifests-in-memory-infrastructure: $(CONTROLLER_GEN) ## Generate manifests e.g. CRD, RBAC etc. for in-memory infrastructure provider
329+
$(MAKE) clean-generated-yaml SRC_DIRS="$(CAPIM_DIR)/config/crd/bases"
330+
cd $(CAPIM_DIR); $(CONTROLLER_GEN) \
331+
paths=./api/... \
332+
paths=./internal/controllers/... \
333+
crd:crdVersions=v1 \
334+
rbac:roleName=manager-role \
335+
output:crd:dir=./config/crd/bases \
336+
output:webhook:dir=./config/webhook \
337+
webhook
338+
321339
.PHONY: generate-go-deepcopy
322340
generate-go-deepcopy: ## Run all generate-go-deepcopy-* targets
323341
$(MAKE) $(addprefix generate-go-deepcopy-,$(ALL_GENERATE_MODULES))
@@ -360,6 +378,14 @@ generate-go-deepcopy-docker-infrastructure: $(CONTROLLER_GEN) ## Generate deepco
360378
paths=./api/... \
361379
paths=./$(EXP_DIR)/api/...
362380

381+
.PHONY: generate-go-deepcopy-in-memory-infrastructure
382+
generate-go-deepcopy-in-memory-infrastructure: $(CONTROLLER_GEN) ## Generate deepcopy go code for in-memory infrastructure provider
383+
$(MAKE) clean-generated-deepcopy SRC_DIRS="$(CAPIM_DIR)/api,$(CAPIM_DIR)/internal/cloud/api"
384+
cd $(CAPIM_DIR); $(CONTROLLER_GEN) \
385+
object:headerFile=../../../hack/boilerplate/boilerplate.generatego.txt \
386+
paths=./api/... \
387+
paths=./internal/cloud/api/...
388+
363389
.PHONY: generate-go-conversions
364390
generate-go-conversions: ## Run all generate-go-conversions-* targets
365391
$(MAKE) $(addprefix generate-go-conversions-,$(ALL_GENERATE_MODULES))
@@ -450,6 +476,10 @@ generate-go-conversions-docker-infrastructure: $(CONVERSION_GEN) ## Generate con
450476
--output-file-base=zz_generated.conversion $(CONVERSION_GEN_OUTPUT_BASE_CAPD) \
451477
--go-header-file=../../../hack/boilerplate/boilerplate.generatego.txt
452478

479+
.PHONY: generate-go-conversions-in-memory-infrastructure
480+
generate-go-conversions-in-memory-infrastructure: $(CONVERSION_GEN) ## Generate conversions go code for in-memory infrastructure provider
481+
cd $(CAPIM_DIR)
482+
453483
# The tmp/sigs.k8s.io/cluster-api symlink is a workaround to make this target run outside of GOPATH
454484
.PHONY: generate-go-openapi
455485
generate-go-openapi: $(OPENAPI_GEN) $(CONTROLLER_GEN) ## Generate openapi go code for runtime SDK
@@ -627,7 +657,7 @@ verify-container-images: ## Verify container images
627657
clusterctl: ## Build the clusterctl binary
628658
go build -trimpath -ldflags "$(LDFLAGS)" -o $(BIN_DIR)/clusterctl sigs.k8s.io/cluster-api/cmd/clusterctl
629659

630-
ALL_MANAGERS = core kubeadm-bootstrap kubeadm-control-plane docker-infrastructure
660+
ALL_MANAGERS = core kubeadm-bootstrap kubeadm-control-plane docker-infrastructure in-memory-infrastructure
631661

632662
.PHONY: managers
633663
managers: $(addprefix manager-,$(ALL_MANAGERS)) ## Run all manager-* targets
@@ -648,6 +678,10 @@ manager-kubeadm-control-plane: ## Build the kubeadm control plane manager binary
648678
manager-docker-infrastructure: ## Build the docker infrastructure manager binary into the ./bin folder
649679
cd $(CAPD_DIR); go build -trimpath -ldflags "$(LDFLAGS)" -o ../../../$(BIN_DIR)/capd-manager sigs.k8s.io/cluster-api/test/infrastructure/docker
650680

681+
.PHONY: manager-in-memory-infrastructure
682+
manager-in-memory-infrastructure: ## Build the in-memory-infrastructure infrastructure manager binary into the ./bin folder
683+
cd $(CAPIM_DIR); go build -trimpath -ldflags "$(LDFLAGS)" -o ../../../$(BIN_DIR)/capim-manager sigs.k8s.io/cluster-api/test/infrastructure/inmemory
684+
651685
.PHONY: docker-pull-prerequisites
652686
docker-pull-prerequisites:
653687
docker pull docker.io/docker/dockerfile:1.4
@@ -660,13 +694,13 @@ docker-build-all: $(addprefix docker-build-,$(ALL_ARCH)) ## Build docker images
660694
docker-build-%:
661695
$(MAKE) ARCH=$* docker-build
662696

663-
ALL_DOCKER_BUILD = core kubeadm-bootstrap kubeadm-control-plane docker-infrastructure test-extension clusterctl
697+
ALL_DOCKER_BUILD = core kubeadm-bootstrap kubeadm-control-plane docker-infrastructure in-memory-infrastructure test-extension clusterctl
664698

665699
.PHONY: docker-build
666700
docker-build: docker-pull-prerequisites ## Run docker-build-* targets for all the images
667701
$(MAKE) ARCH=$(ARCH) $(addprefix docker-build-,$(ALL_DOCKER_BUILD))
668702

669-
ALL_DOCKER_BUILD_E2E = core kubeadm-bootstrap kubeadm-control-plane docker-infrastructure test-extension
703+
ALL_DOCKER_BUILD_E2E = core kubeadm-bootstrap kubeadm-control-plane docker-infrastructure in-memory-infrastructure test-extension
670704

671705
.PHONY: docker-build-e2e
672706
docker-build-e2e: ## Run docker-build-* targets for all the images with settings to be used for the e2e tests
@@ -698,6 +732,12 @@ docker-build-docker-infrastructure: ## Build the docker image for docker infrast
698732
$(MAKE) set-manifest-image MANIFEST_IMG=$(CAPD_CONTROLLER_IMG)-$(ARCH) MANIFEST_TAG=$(TAG) TARGET_RESOURCE="$(CAPD_DIR)/config/default/manager_image_patch.yaml"
699733
$(MAKE) set-manifest-pull-policy TARGET_RESOURCE="$(CAPD_DIR)/config/default/manager_pull_policy.yaml"
700734

735+
.PHONY: docker-build-in-memory-infrastructure
736+
docker-build-in-memory-infrastructure: ## Build the docker image for in-memory infrastructure controller manager
737+
cd $(CAPIM_DIR); DOCKER_BUILDKIT=1 docker build --build-arg builder_image=$(GO_CONTAINER_IMAGE) --build-arg goproxy=$(GOPROXY) --build-arg ARCH=$(ARCH) --build-arg ldflags="$(LDFLAGS)" ../../.. -t $(CAPIM_CONTROLLER_IMG)-$(ARCH):$(TAG) --file ../../../Dockerfile
738+
$(MAKE) set-manifest-image MANIFEST_IMG=$(CAPIM_CONTROLLER_IMG)-$(ARCH) MANIFEST_TAG=$(TAG) TARGET_RESOURCE="$(CAPIM_DIR)/config/default/manager_image_patch.yaml"
739+
$(MAKE) set-manifest-pull-policy TARGET_RESOURCE="$(CAPIM_DIR)/config/default/manager_pull_policy.yaml"
740+
701741
.PHONY: docker-build-clusterctl
702742
docker-build-clusterctl: ## Build the docker image for clusterctl
703743
DOCKER_BUILDKIT=1 docker build --build-arg builder_image=$(GO_CONTAINER_IMAGE) --build-arg goproxy=$(GOPROXY) --build-arg ARCH=$(ARCH) --build-arg package=./cmd/clusterctl --build-arg ldflags="$(LDFLAGS)" -f ./cmd/clusterctl/Dockerfile . -t $(CLUSTERCTL_IMG)-$(ARCH):$(TAG)
@@ -764,6 +804,20 @@ test-docker-infrastructure-junit: $(SETUP_ENVTEST) $(GOTESTSUM) ## Run unit and
764804
$(GOTESTSUM) --junitfile $(ARTIFACTS)/junit.infra_docker.xml --raw-command cat $(ARTIFACTS)/junit.infra_docker.stdout
765805
exit $$(cat $(ARTIFACTS)/junit.infra_docker.exitcode)
766806

807+
.PHONY: test-in-memory-infrastructure
808+
test-in-memory-infrastructure: $(SETUP_ENVTEST) ## Run unit and integration tests for in-memory infrastructure provider
809+
cd $(CAPIM_DIR); KUBEBUILDER_ASSETS="$(KUBEBUILDER_ASSETS)" go test ./... $(TEST_ARGS)
810+
811+
.PHONY: test-in-memory-infrastructure-verbose
812+
test-in-memory-infrastructure-verbose: ## Run unit and integration tests for in-memory infrastructure provider with verbose flag
813+
$(MAKE) test-in-memory-infrastructure TEST_ARGS="$(TEST_ARGS) -v"
814+
815+
.PHONY: test-in-memory-infrastructure-junit
816+
test-in-memory-infrastructure-junit: $(SETUP_ENVTEST) $(GOTESTSUM) ## Run unit and integration tests and generate a junit report for in-memory infrastructure provider
817+
cd $(CAPIM_DIR); set +o errexit; (KUBEBUILDER_ASSETS="$(KUBEBUILDER_ASSETS)" go test -json ./... $(TEST_ARGS); echo $$? > $(ARTIFACTS)/junit.infra_inmemory.exitcode) | tee $(ARTIFACTS)/junit.infra_inmemory.stdout
818+
$(GOTESTSUM) --junitfile $(ARTIFACTS)/junit.infra_inmemory.xml --raw-command cat $(ARTIFACTS)/junit.infra_inmemory.stdout
819+
exit $$(cat $(ARTIFACTS)/junit.infra_inmemory.exitcode)
820+
767821
.PHONY: test-test-extension
768822
test-test-extension: $(SETUP_ENVTEST) ## Run unit and integration tests for the test extension
769823
cd $(TEST_EXTENSION_DIR); KUBEBUILDER_ASSETS="$(KUBEBUILDER_ASSETS)" go test ./... $(TEST_ARGS)
@@ -876,13 +930,16 @@ manifest-modification-dev: # Set the manifest images to the staging bucket.
876930
MANIFEST_IMG=$(REGISTRY)/$(CAPD_IMAGE_NAME) MANIFEST_TAG=$(RELEASE_TAG) \
877931
TARGET_RESOURCE="$(CAPD_DIR)/config/default/manager_image_patch.yaml"
878932
$(MAKE) set-manifest-pull-policy PULL_POLICY=IfNotPresent TARGET_RESOURCE="$(CAPD_DIR)/config/default/manager_pull_policy.yaml"
933+
$(MAKE) set-manifest-image \
934+
MANIFEST_IMG=$(REGISTRY)/$(CAPIM_IMAGE_NAME) MANIFEST_TAG=$(RELEASE_TAG) \
935+
TARGET_RESOURCE="$(CAPIM_DIR)/config/default/manager_image_patch.yaml"
936+
$(MAKE) set-manifest-pull-policy PULL_POLICY=IfNotPresent TARGET_RESOURCE="$(CAPIM_DIR)/config/default/manager_pull_policy.yaml"
879937
$(MAKE) set-manifest-image \
880938
MANIFEST_IMG=$(REGISTRY)/$(TEST_EXTENSION_IMAGE_NAME) MANIFEST_TAG=$(RELEASE_TAG) \
881939
TARGET_RESOURCE="$(TEST_EXTENSION_DIR)/config/default/manager_image_patch.yaml"
882940
$(MAKE) set-manifest-pull-policy PULL_POLICY=IfNotPresent TARGET_RESOURCE="$(CAPD_DIR)/config/default/manager_pull_policy.yaml"
883941

884942

885-
886943
.PHONY: release-manifests
887944
release-manifests: $(RELEASE_DIR) $(KUSTOMIZE) $(RUNTIME_OPENAPI_GEN) ## Build the manifests to publish with a release
888945
# Build core-components.
@@ -908,6 +965,8 @@ release-manifests: $(RELEASE_DIR) $(KUSTOMIZE) $(RUNTIME_OPENAPI_GEN) ## Build t
908965
release-manifests-dev: $(RELEASE_DIR) $(KUSTOMIZE) ## Build the development manifests and copies them in the release folder
909966
cd $(CAPD_DIR); $(KUSTOMIZE) build config/default > ../../../$(RELEASE_DIR)/infrastructure-components-development.yaml
910967
cp $(CAPD_DIR)/templates/* $(RELEASE_DIR)/
968+
cd $(CAPIM_DIR); $(KUSTOMIZE) build config/default > ../../../$(RELEASE_DIR)/infrastructure-components-inmemory-development.yaml
969+
cp $(CAPIM_DIR)/templates/* $(RELEASE_DIR)/
911970
cd $(TEST_EXTENSION_DIR); $(KUSTOMIZE) build config/default > ../../$(RELEASE_DIR)/runtime-extension-components-development.yaml
912971

913972
.PHONY: release-binaries
@@ -961,6 +1020,7 @@ release-alias-tag: ## Add the release alias tag to the last build tag
9611020
gcloud container images add-tag $(KUBEADM_CONTROL_PLANE_CONTROLLER_IMG):$(TAG) $(KUBEADM_CONTROL_PLANE_CONTROLLER_IMG):$(RELEASE_ALIAS_TAG)
9621021
gcloud container images add-tag $(CLUSTERCTL_IMG):$(TAG) $(CLUSTERCTL_IMG):$(RELEASE_ALIAS_TAG)
9631022
gcloud container images add-tag $(CAPD_CONTROLLER_IMG):$(TAG) $(CAPD_CONTROLLER_IMG):$(RELEASE_ALIAS_TAG)
1023+
gcloud container images add-tag $(CAPIM_CONTROLLER_IMG):$(TAG) $(CAPIM_CONTROLLER_IMG):$(RELEASE_ALIAS_TAG)
9641024
gcloud container images add-tag $(TEST_EXTENSION_IMG):$(TAG) $(TEST_EXTENSION_IMG):$(RELEASE_ALIAS_TAG)
9651025

9661026
.PHONY: release-notes
@@ -985,6 +1045,7 @@ docker-push-all: $(addprefix docker-push-,$(ALL_ARCH)) ## Push the docker image
9851045
$(MAKE) docker-push-manifest-kubeadm-bootstrap
9861046
$(MAKE) docker-push-manifest-kubeadm-control-plane
9871047
$(MAKE) docker-push-manifest-docker-infrastructure
1048+
$(MAKE) docker-push-manifest-in-memory-infrastructure
9881049
$(MAKE) docker-push-manifest-test-extension
9891050
$(MAKE) docker-push-clusterctl
9901051

@@ -998,6 +1059,7 @@ docker-push: ## Push the docker images to be included in the release
9981059
docker push $(KUBEADM_CONTROL_PLANE_CONTROLLER_IMG)-$(ARCH):$(TAG)
9991060
docker push $(CLUSTERCTL_IMG)-$(ARCH):$(TAG)
10001061
docker push $(CAPD_CONTROLLER_IMG)-$(ARCH):$(TAG)
1062+
docker push $(CAPIM_CONTROLLER_IMG)-$(ARCH):$(TAG)
10011063
docker push $(TEST_EXTENSION_IMG)-$(ARCH):$(TAG)
10021064

10031065
.PHONY: docker-push-manifest-core
@@ -1032,6 +1094,13 @@ docker-push-manifest-docker-infrastructure: ## Push the multiarch manifest for t
10321094
$(MAKE) set-manifest-image MANIFEST_IMG=$(CAPD_CONTROLLER_IMG) MANIFEST_TAG=$(TAG) TARGET_RESOURCE="$(CAPD_DIR)/config/default/manager_image_patch.yaml"
10331095
$(MAKE) set-manifest-pull-policy TARGET_RESOURCE="$(CAPD_DIR)/config/default/manager_pull_policy.yaml"
10341096

1097+
.PHONY: docker-push-manifest-in-memory-infrastructure
1098+
docker-push-manifest-in-memory-infrastructure: ## Push the multiarch manifest for the in-memory infrastructure provider images
1099+
docker manifest create --amend $(CAPIM_CONTROLLER_IMG):$(TAG) $(shell echo $(ALL_ARCH) | sed -e "s~[^ ]*~$(CAPIM_CONTROLLER_IMG)\-&:$(TAG)~g")
1100+
@for arch in $(ALL_ARCH); do docker manifest annotate --arch $${arch} ${CAPIM_CONTROLLER_IMG}:${TAG} ${CAPIM_CONTROLLER_IMG}-$${arch}:${TAG}; done
1101+
docker manifest push --purge $(CAPIM_CONTROLLER_IMG):$(TAG)
1102+
$(MAKE) set-manifest-image MANIFEST_IMG=$(CAPIM_CONTROLLER_IMG) MANIFEST_TAG=$(TAG) TARGET_RESOURCE="$(CAPIM_DIR)/config/default/manager_image_patch.yaml"
1103+
$(MAKE) set-manifest-pull-policy TARGET_RESOURCE="$(CAPIM_DIR)/config/default/manager_pull_policy.yaml"
10351104

10361105
.PHONY: docker-push-manifest-test-extension
10371106
docker-push-manifest-test-extension: ## Push the multiarch manifest for the test extension provider images

OWNERS_ALIASES

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,13 @@ aliases:
104104
- chrischdi
105105
- elmiko
106106

107+
# -----------------------------------------------------------
108+
# OWNER_ALIASES for test/infrastructure/inmemory
109+
# -----------------------------------------------------------
110+
111+
cluster-api-provider-inmemory-maintainers:
112+
cluster-api-provider-inmemory-reviewers:
113+
107114
# -----------------------------------------------------------
108115
# OWNER_ALIASES for docs
109116
# -----------------------------------------------------------

Tiltfile

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,26 @@ providers = {
103103
"../../go.sum",
104104
"../container",
105105
"api",
106-
"cloudinit",
107106
"controllers",
108107
"docker",
109108
"exp",
110109
"internal",
111-
"third_party",
112110
],
113111
"label": "CAPD",
114112
},
113+
"in-memory": {
114+
"context": "test/infrastructure/inmemory", # NOTE: this should be kept in sync with corresponding setting in tilt-prepare
115+
"image": "gcr.io/k8s-staging-cluster-api/capim-manager",
116+
"live_reload_deps": [
117+
"main.go",
118+
"../../go.mod",
119+
"../../go.sum",
120+
"api",
121+
"controllers",
122+
"internal",
123+
],
124+
"label": "CAPIM",
125+
},
115126
"test-extension": {
116127
"context": "test/extension", # NOTE: this should be kept in sync with corresponding setting in tilt-prepare
117128
"image": "gcr.io/k8s-staging-cluster-api/test-extension",
@@ -469,6 +480,7 @@ def cluster_templates():
469480

470481
template_dirs = settings.get("template_dirs", {
471482
"docker": ["./test/infrastructure/docker/templates"],
483+
"in-memory": ["./test/infrastructure/inmemory/templates"],
472484
})
473485

474486
for provider, provider_dirs in template_dirs.items():

cmd/clusterctl/client/config/providers_client.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ const (
4747
HetznerProviderName = "hetzner"
4848
OutscaleProviderName = "outscale"
4949
IBMCloudProviderName = "ibmcloud"
50+
InMemoryProviderName = "in-memory"
5051
Metal3ProviderName = "metal3"
5152
NestedProviderName = "nested"
5253
NutanixProviderName = "nutanix"
@@ -234,6 +235,11 @@ func (p *providersClient) defaults() []Provider {
234235
url: "https://github.com/kubernetes-sigs/cluster-api-provider-ibmcloud/releases/latest/infrastructure-components.yaml",
235236
providerType: clusterctlv1.InfrastructureProviderType,
236237
},
238+
&provider{
239+
name: InMemoryProviderName,
240+
url: "https://github.com/kubernetes-sigs/cluster-api/releases/latest/infrastructure-components-inmemory-development.yaml",
241+
providerType: clusterctlv1.InfrastructureProviderType,
242+
},
237243
&provider{
238244
name: NutanixProviderName,
239245
url: "https://github.com/nutanix-cloud-native/cluster-api-provider-nutanix/releases/latest/infrastructure-components.yaml",

cmd/clusterctl/client/config_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) {
7575
config.GCPProviderName,
7676
config.HetznerProviderName,
7777
config.IBMCloudProviderName,
78+
config.InMemoryProviderName,
7879
config.KubeKeyProviderName,
7980
config.KubevirtProviderName,
8081
config.MAASProviderName,
@@ -122,6 +123,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) {
122123
config.GCPProviderName,
123124
config.HetznerProviderName,
124125
config.IBMCloudProviderName,
126+
config.InMemoryProviderName,
125127
config.KubeKeyProviderName,
126128
config.KubevirtProviderName,
127129
config.MAASProviderName,

0 commit comments

Comments
 (0)