diff --git a/docs/book/src/clusterctl/developers.md b/docs/book/src/clusterctl/developers.md index e5f3925794da..1170b016bdf4 100644 --- a/docs/book/src/clusterctl/developers.md +++ b/docs/book/src/clusterctl/developers.md @@ -33,7 +33,7 @@ If you want to create a local artifact, follow these instructions: ### Build artifacts locally -In order to build artifacts for the CAPI core provider, the kubeadm bootstrap provider, the kubeadm control plane provider and the docker infrastructure provider: +In order to build artifacts for the CAPI core provider, the kubeadm bootstrap provider, the kubeadm control plane provider and the Docker infrastructure provider: ```bash make docker-build REGISTRY=gcr.io/k8s-staging-cluster-api PULL_POLICY=IfNotPresent @@ -96,7 +96,7 @@ during your dev session. The above config file changes the location of the [overrides layer] folder thus ensuring you dev session isn't hijacked by other local artifacts. -With the only exception of the docker provider, the local repository folder does not contain cluster templates, +With the only exception of the Docker provider, the local repository folder does not contain cluster templates, so the `clusterctl generate cluster` command will fail. @@ -126,11 +126,11 @@ please note that each `provider_repo` should have its own `clusterctl-settings.j ## Create a kind management cluster [kind] can provide a Kubernetes cluster to be used as a management cluster. -See [Install and/or configure a kubernetes cluster] for more information. +See [Install and/or configure a Kubernetes cluster] for more information. *Before* running clusterctl init, you must ensure all the required images are available in the kind cluster. -This is always the case for images published in some image repository like docker hub or gcr.io, but it can't be +This is always the case for images published in some image repository like Docker Hub or gcr.io, but it can't be the case for images built locally; in this case, you can use `kind load` to move the images built locally. e.g. ```bash @@ -148,7 +148,7 @@ script. Optionally, you may want to check if the components are running properly. The exact components are dependent on which providers you have initialized. Below -is an example output with the docker provider being installed. +is an example output with the Docker provider being installed. ```bash kubectl get deploy -A | grep "cap\|cert" @@ -166,7 +166,7 @@ cert-manager cert-manager-webhook ## Additional Notes for the Docker Provider -### Select the appropriate kubernetes version +### Select the appropriate Kubernetes version When selecting the `--kubernetes-version`, ensure that the `kindest/node` image is available. @@ -205,6 +205,6 @@ sed -i -e "s/server:.*/server: https:\/\/$(docker port capi-quickstart-lb 6443/t [kind]: https://kind.sigs.k8s.io/ [providers repositories]: configuration.md#provider-repositories [overrides layer]: configuration.md#overrides-layer -[Install and/or configure a kubernetes cluster]: ../user/quick-start.md#install-andor-configure-a-kubernetes-cluster +[Install and/or configure a Kubernetes cluster]: ../user/quick-start.md#install-andor-configure-a-kubernetes-cluster [kind-docker-hub]: https://hub.docker.com/r/kindest/node/tags [issue 3795]: https://github.com/kubernetes-sigs/cluster-api/issues/3795 diff --git a/docs/book/src/clusterctl/provider-contract.md b/docs/book/src/clusterctl/provider-contract.md index 6ad30e9cb907..a152d87593a3 100644 --- a/docs/book/src/clusterctl/provider-contract.md +++ b/docs/book/src/clusterctl/provider-contract.md @@ -436,7 +436,7 @@ that are compliant with one of the following rules: * The object is directly or indirectly linked to a `ClusterResourceSet` object (through the `OwnerReference` chain). * The object is directly or indirectly linked to another object with the `clusterctl.cluster.x-k8s.io/move-hierarchy` label, e.g. the infrastructure Provider ClusterIdentity objects (linked through the `OwnerReference` chain). - * The object hase the `clusterctl.cluster.x-k8s.io/move` label or the `clusterctl.cluster.x-k8s.io/move-hierarchy` label, + * The object has the `clusterctl.cluster.x-k8s.io/move` label or the `clusterctl.cluster.x-k8s.io/move-hierarchy` label, e.g. the CPI config secret. Note. `clusterctl.cluster.x-k8s.io/move` and `clusterctl.cluster.x-k8s.io/move-hierarchy` labels could be applied diff --git a/docs/book/src/developer/architecture/controllers/cluster-topology.md b/docs/book/src/developer/architecture/controllers/cluster-topology.md index b1dd4bdfe698..0aeee278061c 100644 --- a/docs/book/src/developer/architecture/controllers/cluster-topology.md +++ b/docs/book/src/developer/architecture/controllers/cluster-topology.md @@ -12,7 +12,7 @@ Its main responsibilities are to: The high level workflow of ClusterTopology reconciliation is shown below. -![ClusterTopology Reconciller Component Diagram](../../../images/cluster-topology-reconciller.png) +![ClusterTopology Reconciler Component Diagram](../../../images/cluster-topology-reconciller.png) ### Additional information diff --git a/docs/book/src/developer/architecture/controllers/control-plane.md b/docs/book/src/developer/architecture/controllers/control-plane.md index 2eece2fa8f2e..0d9e34bb3ea6 100644 --- a/docs/book/src/developer/architecture/controllers/control-plane.md +++ b/docs/book/src/developer/architecture/controllers/control-plane.md @@ -180,7 +180,7 @@ following fields defined: introspection by clients, and is used to provide the CRD-based integration for the scale subresource and additional integrations for things like kubectl describe. The string will be in the same format as the query-param - syntax. More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors + syntax. More info about label selectors: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors diff --git a/docs/book/src/developer/architecture/controllers/machine-pool.md b/docs/book/src/developer/architecture/controllers/machine-pool.md index 04cd327e1144..9644057963b2 100644 --- a/docs/book/src/developer/architecture/controllers/machine-pool.md +++ b/docs/book/src/developer/architecture/controllers/machine-pool.md @@ -10,7 +10,7 @@ The MachinePool controller's main responsibilities are: * The associated InfrastructureMachinePool object. * Copy data from `BootstrapConfig.Status.DataSecretName` to `MachinePool.Spec.Template.Spec.Bootstrap.DataSecretName` if `MachinePool.Spec.Template.Spec.Bootstrap.DataSecretName` is empty. -* Setting NodeRefs on MachinePool instances to be able to associate them with kubernetes nodes. +* Setting NodeRefs on MachinePool instances to be able to associate them with Kubernetes nodes. * Deleting Nodes in the target cluster when the associated MachinePool instance is deleted. * Keeping the MachinePool's Status object up to date with the InfrastructureMachinePool's Status object. * Finding Kubernetes nodes matching the expected providerIDs in the workload cluster. diff --git a/docs/book/src/developer/architecture/controllers/machine.md b/docs/book/src/developer/architecture/controllers/machine.md index 60a235f163c4..679a9cb6f5cc 100644 --- a/docs/book/src/developer/architecture/controllers/machine.md +++ b/docs/book/src/developer/architecture/controllers/machine.md @@ -10,7 +10,7 @@ The Machine controller's main responsibilities are: * The associated InfrastructureMachine object. * Copy data from `BootstrapConfig.Status.DataSecretName` to `Machine.Spec.Bootstrap.DataSecretName` if `Machine.Spec.Bootstrap.DataSecretName` is empty. -* Setting NodeRefs to be able to associate machines and kubernetes nodes. +* Setting NodeRefs to be able to associate machines and Kubernetes nodes. * Deleting Nodes in the target cluster when the associated machine is deleted. * Cleanup of related objects. * Keeping the Machine's Status object up to date with the InfrastructureMachine's Status object. diff --git a/docs/book/src/developer/e2e.md b/docs/book/src/developer/e2e.md index 94762a200d9b..590ec81dc4fd 100644 --- a/docs/book/src/developer/e2e.md +++ b/docs/book/src/developer/e2e.md @@ -18,9 +18,9 @@ test specs for the most common Cluster API use cases. Each E2E test requires a set of artifacts to be available: -- Binaries & docker images for Kubernetes, CNI, CRI & CSI -- Manifests & docker images for the Cluster API core components -- Manifests & docker images for the Cluster API infrastructure provider; in most cases +- Binaries & Docker images for Kubernetes, CNI, CRI & CSI +- Manifests & Docker images for the Cluster API core components +- Manifests & Docker images for the Cluster API infrastructure provider; in most cases machine images are also required (AMI, OVA etc.) - Credentials for the target infrastructure provider - Other support tools (e.g. kustomize, gsutil etc.) diff --git a/docs/book/src/developer/logging.md b/docs/book/src/developer/logging.md index c5afde93b541..fc642c56528e 100644 --- a/docs/book/src/developer/logging.md +++ b/docs/book/src/developer/logging.md @@ -137,7 +137,7 @@ We are working to continuously improving this experience, allowing Cluster API d For the best experience exploring the logs using Tilt: 1. Set `--logging-format=json`. 2. Set a high log verbosity, e.g. `v=5`. -3. Enable promtail, loki, and grafana under deploy_observability. +3. Enable Promtail, Loki, and Grafana under `deploy_observability`. A minimal example of a tilt-settings.yaml file that deploys a ready-to-use logging suite looks like: ```yaml diff --git a/docs/book/src/developer/providers/contracts.md b/docs/book/src/developer/providers/contracts.md index 906e4950818e..6aee482880fe 100644 --- a/docs/book/src/developer/providers/contracts.md +++ b/docs/book/src/developer/providers/contracts.md @@ -5,7 +5,7 @@ Cluster API defines a contract which requires providers to implement certain fie Cluster API defines the following contracts: - [Infrastructure provider contract](./cluster-infrastructure.md) -- [Boostrap provider contract](./bootstrap.md) +- [Bootstrap provider contract](./bootstrap.md) - [Control Plane provider contract](../../developer/architecture/controllers/control-plane.md#crd-contracts) - [Machine provider contract](./machine-infrastructure.md) - [clusterctl provider contract](../../clusterctl/provider-contract.md#clusterctl-provider-contract) @@ -14,7 +14,7 @@ Cluster API defines the following contracts: ## API version labels Providers MUST set `cluster.x-k8s.io/` label on all Custom Resource Definitions related to Cluster API starting with v1alpha3. The label is a map from an API Version of Cluster API (contract) to your Custom Resource Definition versions. -The value is a underscore-delimited (_) list of versions. +The value is an underscore-delimited (_) list of versions. Each value MUST point to an available version in your CRD Spec. The label allows Cluster API controllers to perform automatic conversions for object references, the controllers will pick the last available version in the list if multiple versions are found. @@ -33,4 +33,4 @@ An example of this is in the [Kubeadm Bootstrap provider](https://github.com/kub ## Improving and contributing to the contract -The definition of the contract between Cluster API and providers may be changed in future versions of Cluster API. The Cluster API maintainers welcome feedback and contributions to the contract in order to improve how it's defined, its clarity and visibility to provider implementers and its suitability across the different kinds of Cluster API providers. To provide feedback or open a discussion about the provider contract please [open an issue on the Cluster API](https://github.com/kubernetes-sigs/cluster-api/issues/new?assignees=&labels=&template=feature_request.md) repo or add an item to the agenda in the [Cluster API community meeting](http://git.k8s.io/community/sig-cluster-lifecycle/README.md#cluster-api). +The definition of the contract between Cluster API and providers may be changed in future versions of Cluster API. The Cluster API maintainers welcome feedback and contributions to the contract in order to improve how it's defined, its clarity and visibility to provider implementers and its suitability across the different kinds of Cluster API providers. To provide feedback or open a discussion about the provider contract please [open an issue on the Cluster API](https://github.com/kubernetes-sigs/cluster-api/issues/new?assignees=&labels=&template=feature_request.md) repo or add an item to the agenda in the [Cluster API community meeting](https://git.k8s.io/community/sig-cluster-lifecycle/README.md#cluster-api). diff --git a/docs/book/src/developer/providers/v0.3-to-v0.4.md b/docs/book/src/developer/providers/v0.3-to-v0.4.md index 41481ff8d693..5af8084d6856 100644 --- a/docs/book/src/developer/providers/v0.3-to-v0.4.md +++ b/docs/book/src/developer/providers/v0.3-to-v0.4.md @@ -22,7 +22,7 @@ - The `test` folder now ships with its own Go module `sigs.k8s.io/cluster-api/test`. - The module is going to be tagged and versioned as part of the release. -- Folks importing the test e2e framework or the docker infrastructure provider need to import the new module. +- Folks importing the test e2e framework or the Docker infrastructure provider need to import the new module. - When imported, the test module version should always match the Cluster API one. - Add the following line in `go.mod` to replace the cluster-api dependency in the test module (change the version to your current Cluster API version): ``` @@ -199,7 +199,7 @@ should be executed before this changes. **Changes in the `/config/default` folder:** -1. Edit the `/config/default/kustomization.yaml` file and replace all the occurencies of +1. Edit the `/config/default/kustomization.yaml` file and replace all the occurrences of ``` kind: Certificate group: cert-manager.io diff --git a/docs/book/src/developer/providers/v1.0-to-v1.1.md b/docs/book/src/developer/providers/v1.0-to-v1.1.md index f7b2759df2ab..a0291b85f9f3 100644 --- a/docs/book/src/developer/providers/v1.0-to-v1.1.md +++ b/docs/book/src/developer/providers/v1.0-to-v1.1.md @@ -65,5 +65,5 @@ are kept in sync with the versions used by `sigs.k8s.io/controller-runtime`. fully exploit this feature, it is required to pass the `LogFolder` parameter when calling `CreateKindBootstrapClusterAndLoadImages`. Please see this [PR](https://github.com/kubernetes-sigs/cluster-api/pull/5910) for an example on how to use it. * The `gci` linter has been enabled to enforce consistent imports. As usual, feel free to take a look at our linter config, but of course it's not mandatory to adopt it. * The Tilt dev setup has been extended with: - * [an option to deploy Grafana, Loki and promtail](https://github.com/kubernetes-sigs/cluster-api/pull/5336) + * [an option to deploy Grafana, Loki and Promtail](https://github.com/kubernetes-sigs/cluster-api/pull/5336) * [options to ease debugging of controllers (delve, profiler, metrics)](https://github.com/kubernetes-sigs/cluster-api/pull/5485) diff --git a/docs/book/src/developer/providers/v1.2-to-v1.3.md b/docs/book/src/developer/providers/v1.2-to-v1.3.md index 51f77bbcec22..94d34055bff5 100644 --- a/docs/book/src/developer/providers/v1.2-to-v1.3.md +++ b/docs/book/src/developer/providers/v1.2-to-v1.3.md @@ -62,14 +62,14 @@ The default value is 0, meaning that the volume can be detached without any time - The `Move` function in E2E test framework for clusterctl has been modified to: * print the `clusterctl move` command including the arguments similar to `Init`. * log the output to the a `clusterctl-move.log` file at the subdirectory `logs/`. -- The self-hosted upgrade test now also upgrades the self-hosted clusters kubernetes version by default. For that it requires the following variables to be set: +- The self-hosted upgrade test now also upgrades the self-hosted cluster's Kubernetes version by default. For that it requires the following variables to be set: * `KUBERNETES_VERSION_UPGRADE_FROM` * `KUBERNETES_VERSION_UPGRADE_TO` * `ETCD_VERSION_UPGRADE_TO` * `COREDNS_VERSION_UPGRADE_TO` - The variable `SkipUpgrade` could be set to revert to the old behaviour by making use of the `KUBERNETES_VERSION` variable and skipping the kubernetes upgrade. + The variable `SkipUpgrade` could be set to revert to the old behaviour by making use of the `KUBERNETES_VERSION` variable and skipping the Kubernetes upgrade. - cert-manager upgraded from v1.9.1 to v1.10.1. -- Machine `providerID` is now being strictly checked for equality when compared against Kubernetes node `providerID` data. This is the expected criteria for correlating a Cluster API machine to its corresponding Kubernetes node, but historically this comparison was not strict, and instead compared only against the `ID` substring part of the full `providerID` string. Because different providers construct `providerID` strings differently, the `ID` substring is not uniformly defined and implemented across providers, and thus the existing `providerID` equality can not guarantee the correct Machine-Node correlation. It is very unlikely that this new behavior will break existing providers, but FYI: if strict `providerID` equality will degrade expected behaviors, you may need to update your provider implementation prior to adopting Cluster API v1.3. +- Machine `providerID` is now being strictly checked for equality when compared against Kubernetes node `providerID` data. This is the expected criteria for correlating a Cluster API machine to its corresponding Kubernetes node, but historically this comparison was not strict, and instead compared only against the `ID` substring part of the full `providerID` string. Because different providers construct `providerID` strings differently, the `ID` substring is not uniformly defined and implemented across providers, and thus the existing `providerID` equality cannot guarantee the correct Machine-Node correlation. It is very unlikely that this new behavior will break existing providers, but FYI: if strict `providerID` equality will degrade expected behaviors, you may need to update your provider implementation prior to adopting Cluster API v1.3. - The default minimum TLS version in use by the webhook servers is 1.2. - OwnerReferences are now more strictly enforced for objects managed by Cluster API. Machines, Bootstrap configs, Infrastructure Machines and Secrets created by CAPI components [now have strictly enforced controller owner references](https://github.com/kubernetes-sigs/cluster-api/issues/7575). This is not expected to require changes for providers. diff --git a/docs/book/src/developer/repository-layout.md b/docs/book/src/developer/repository-layout.md index bc6936fd314c..7eb2ddf35e0b 100644 --- a/docs/book/src/developer/repository-layout.md +++ b/docs/book/src/developer/repository-layout.md @@ -29,7 +29,7 @@ cluster-api └───Makefile ``` -### Github +### GitHub [~/.github](https://github.com/kubernetes-sigs/cluster-api/tree/main/.github) @@ -57,7 +57,7 @@ This folder contains a reference implementation of a Cluster API Control Plane p ### Cluster API Provider Docker -[~/test/insfrastructure/docker](https://github.com/kubernetes-sigs/cluster-api/tree/main/test/infrastructure/docker) +[~/test/infrastructure/docker](https://github.com/kubernetes-sigs/cluster-api/tree/main/test/infrastructure/docker) This folder contains a reference implementation of an infrastructure provider for the Cluster API project using Docker. This provider is intended for development purposes only. @@ -148,7 +148,7 @@ The [api](#api) folder contains webhooks consisting of validators and defaults f [~/internal/webhooks](https://github.com/kubernetes-sigs/cluster-api/tree/main/internal/webhooks) -This directory contains the implementation of some of the Cluster API webhooks. The internal implementation means that the methods supplied by this package can not be imported by external code bases. +This directory contains the implementation of some of the Cluster API webhooks. The internal implementation means that the methods supplied by this package cannot be imported by external code bases. [~/webhooks](https://github.com/kubernetes-sigs/cluster-api/tree/main/webhooks) diff --git a/docs/book/src/developer/testing.md b/docs/book/src/developer/testing.md index 1d60fec1cdf2..07de976898e2 100644 --- a/docs/book/src/developer/testing.md +++ b/docs/book/src/developer/testing.md @@ -193,11 +193,11 @@ kind images). This can be done by executing the `./scripts/ci-e2e.sh` script. GINKGO_FOCUS="\[PR-Blocking\]" ./scripts/ci-e2e.sh ``` -Now, the tests can be run in an IDE. The following describes how this can be done in Intellij IDEA and VS Code. It should work +Now, the tests can be run in an IDE. The following describes how this can be done in IntelliJ IDEA and VS Code. It should work roughly the same way in all other IDEs. We assume the `cluster-api` repository has been checked out into `/home/user/code/src/sigs.k8s.io/cluster-api`. -#### Intellij +#### IntelliJ Create a new run configuration and fill in: * Test framework: `gotest` @@ -555,8 +555,8 @@ In Cluster API Unit and integration test MUST use [go test]. [Cluster API quick start]: ../user/quick-start.md [Cluster API test framework]: https://pkg.go.dev/sigs.k8s.io/cluster-api/test/framework?tab=doc [e2e development]: ./e2e.md -[Ginkgo]: http://onsi.github.io/ginkgo/ -[Gomega]: http://onsi.github.io/gomega/ +[Ginkgo]: https://onsi.github.io/ginkgo/ +[Gomega]: https://onsi.github.io/gomega/ [go test]: https://golang.org/pkg/testing/ [controller-runtime]: https://github.com/kubernetes-sigs/controller-runtime [envtest]: https://github.com/kubernetes-sigs/controller-runtime/tree/master/pkg/envtest diff --git a/docs/book/src/developer/tilt.md b/docs/book/src/developer/tilt.md index 42f7200a027b..b8971ed75983 100644 --- a/docs/book/src/developer/tilt.md +++ b/docs/book/src/developer/tilt.md @@ -20,7 +20,7 @@ workflow that offers easy deployments and rapid iterative builds. ## Getting started ### Create a kind cluster -A script to create a KIND cluster along with a local docker registry and the correct mounts to run CAPD is included in the hack/ folder. +A script to create a KIND cluster along with a local Docker registry and the correct mounts to run CAPD is included in the hack/ folder. To create a pre-configured cluster run: @@ -200,7 +200,7 @@ Important! This feature requires the `helm` command to be available in the user' Supported values are: * `grafana`*: To create dashboards and query `loki` as well as `prometheus`. - * `kube-state-metrics`: For exposing metrics for kubernetes and CAPI resources to `prometheus`. + * `kube-state-metrics`: For exposing metrics for Kubernetes and CAPI resources to `prometheus`. * `loki`: To receive and store logs. * `prometheus`*: For collecting metrics from Kubernetes. * `promtail`: For providing pod logs to `loki`. @@ -265,7 +265,7 @@ Supported settings: } ``` - ###### Goland / Intellij + ###### Goland / IntelliJ With the above example, you can configure [a Go Remote run/debug configuration](https://www.jetbrains.com/help/go/attach-to-running-go-processes-with-debugger.html#step-3-create-the-remote-run-debug-configuration-on-the-client-computer) pointing at port 30000. @@ -462,7 +462,7 @@ possible (the container images do not need the entire go toolchain, source code, ## IDE support for Tiltfile -For Intellij, Syntax highlighting for the Tiltfile can be configured with a TextMate Bundle. For instructions, please see: +For IntelliJ, Syntax highlighting for the Tiltfile can be configured with a TextMate Bundle. For instructions, please see: [Tiltfile TextMate Bundle](https://github.com/tilt-dev/tiltfile.tmbundle). For VSCode the [Bazel plugin](https://marketplace.visualstudio.com/items?itemName=BazelBuild.vscode-bazel) can be used, it provides @@ -475,10 +475,10 @@ syntax highlighting and auto-formatting. To enable it for Tiltfile a file associ ## Using Podman -[Podman](https://podman.io) can be used instead of docker by following these actions: +[Podman](https://podman.io) can be used instead of Docker by following these actions: 1. Enable the podman unix socket (eg. `systemctl --user enable --now podman.socket` on Fedora) -1. Set `build_engine` to `podman` in `tilt-settings.yaml` (optional, only if both docker & podman are installed) +1. Set `build_engine` to `podman` in `tilt-settings.yaml` (optional, only if both Docker & podman are installed) 1. Define the env variable `DOCKER_HOST` to the right socket while running tilt (eg. `DOCKER_HOST=unix:///run/user/$(id -u)/podman/podman.sock tilt up`) NB: The socket defined by `DOCKER_HOST` is used only for the `hack/tools/tilt-prepare` command, the image build is running the `podman build`/`podman push` commands. diff --git a/docs/book/src/reference/glossary.md b/docs/book/src/reference/glossary.md index ddce005433e4..0b77cdb02831 100644 --- a/docs/book/src/reference/glossary.md +++ b/docs/book/src/reference/glossary.md @@ -28,7 +28,7 @@ A temporary cluster that is used to provision a Target Management cluster. Refers to a [provider](#provider) that implements a solution for the [bootstrap](#bootstrap) process. Bootstrap provider's interaction with Cluster API is based on what is defined in the [Cluster API contract](#contract). -See [CABPK](#CABPK). +See [CABPK](#cabpk). # C --- @@ -145,7 +145,7 @@ The set of Kubernetes services that form the basis of a cluster. See also [https Refers to a [provider](#provider) that implements a solution for the management of a Kubernetes [control plane](#control-plane). Control plane provider's interaction with Cluster API is based on what is defined in the [Cluster API contract](#contract). -See [KCP](#KCP). +See [KCP](#kcp). ### Core provider @@ -161,7 +161,7 @@ See [CAPI](#cluster-api). ### Default implementation A feature implementation offered as part of the Cluster API project and maintained by the CAPI core team; For example -[KCP](#KCP) is a default implementation for a [control plane provider](#control-plane-provider). +[KCP](#kcp) is a default implementation for a [control plane provider](#control-plane-provider). # E --- @@ -179,7 +179,7 @@ A [runtime extension](#runtime-extension) that implements a [topology mutation h ### Horizontal Scaling -The ability to add more machines based on policy and well defined metrics. For example, add a machine to a cluster when CPU load average > (X) for a period of time (Y). +The ability to add more machines based on policy and well-defined metrics. For example, add a machine to a cluster when CPU load average > (X) for a period of time (Y). ### Host @@ -217,7 +217,7 @@ see [Server](#server) ### Immutability -A resource that does not mutate. In kubernetes we often state the instance of a running pod is immutable or does not change once it is run. In order to make a change, a new pod is run. In the context of [Cluster API](#cluster-api) we often refer to a running instance of a [Machine](#machine) as being immutable, from a [Cluster API](#cluster-api) perspective. +A resource that does not mutate. In Kubernetes we often state the instance of a running pod is immutable or does not change once it is run. In order to make a change, a new pod is run. In the context of [Cluster API](#cluster-api) we often refer to a running instance of a [Machine](#machine) as being immutable, from a [Cluster API](#cluster-api) perspective. ### IPAM provider @@ -265,7 +265,7 @@ Perform create, scale, upgrade, or destroy operations on the cluster. ### Managed Topology -See [Topology](#Topology) +See [Topology](#topology) ### Management cluster diff --git a/docs/book/src/security/pod-security-standards.md b/docs/book/src/security/pod-security-standards.md index 0f39a98fb619..c8ab7801a560 100644 --- a/docs/book/src/security/pod-security-standards.md +++ b/docs/book/src/security/pod-security-standards.md @@ -2,7 +2,7 @@ Pod Security Admission allows applying [Pod Security Standards] during creation of pods at the cluster level. -The flavor `development-topology` for the docker provider used in [Quick Start](../user/quick-start.md) already includes a basic Pod Security Standard configuration. +The flavor `development-topology` for the Docker provider used in [Quick Start](../user/quick-start.md) already includes a basic Pod Security Standard configuration. It is using ClusterClass variables and patches to inject the configuration. ## Adding a basic Pod Security Standards configuration to a ClusterClass diff --git a/docs/book/src/tasks/experimental-features/cluster-class/write-clusterclass.md b/docs/book/src/tasks/experimental-features/cluster-class/write-clusterclass.md index fdef08630c01..3d83f4484780 100644 --- a/docs/book/src/tasks/experimental-features/cluster-class/write-clusterclass.md +++ b/docs/book/src/tasks/experimental-features/cluster-class/write-clusterclass.md @@ -629,9 +629,9 @@ constant default value which can be specified in the schema is not enough. # If .vnetName is set, it is used. Otherwise, we will use `{{.builtin.cluster.name}}-vnet`. template: "{{ if .vnetName }}{{.vnetName}}{{else}}{{.builtin.cluster.name}}-vnet{{end}}" ``` -When writing templates, a subset of functions from [the sprig library](http://masterminds.github.io/sprig/) can be used to -write expressions like e.g. `{{ .name | upper }}`. Only functions that are guaranteed to evaluate to the same result -for a given input are allowed (e.g. `upper` or `max` can be used, while `now` or `randAlpha` can not be used). +When writing templates, a subset of functions from [the Sprig library](https://masterminds.github.io/sprig/) can be used to +write expressions, e.g., `{{ .name | upper }}`. Only functions that are guaranteed to evaluate to the same result +for a given input are allowed (e.g. `upper` or `max` can be used, while `now` or `randAlpha` cannot be used). ### Optional patches diff --git a/docs/book/src/tasks/experimental-features/runtime-sdk/implement-topology-mutation-hook.md b/docs/book/src/tasks/experimental-features/runtime-sdk/implement-topology-mutation-hook.md index 7f75f6f83992..c4df864a7e5f 100644 --- a/docs/book/src/tasks/experimental-features/runtime-sdk/implement-topology-mutation-hook.md +++ b/docs/book/src/tasks/experimental-features/runtime-sdk/implement-topology-mutation-hook.md @@ -119,7 +119,7 @@ Variable definitions can be inline in the ClusterClass or from any number of ext of a variable definition is recorded in the `from` field in ClusterClass `.status.variables`. Variables that are defined by an external DiscoverVariables hook will have the name of the patch they are associated with as the value of `from`. Variables that are defined in the ClusterClass `.spec.variables` will have `inline` as the value of `from`. -Note: `inline` is a reserved name for patches. It can not be used as the name of an external patch to avoid conflicts. +Note: `inline` is a reserved name for patches. It cannot be used as the name of an external patch to avoid conflicts. If all variables that share a name have equivalent schemas the variable definitions are not in conflict. These variables can be set without providing `definitionFrom` value - [see below](#setting-values-for-variables-in-the-cluster). The CAPI components will @@ -358,7 +358,7 @@ variables: type: array items: type: string - description: "preLoadImages sets the images for the docker machines to preload." + description: "preLoadImages sets the images for the Docker machines to preload." - name: podSecurityStandard required: false schema: diff --git a/docs/book/src/tasks/multiple-providers.md b/docs/book/src/tasks/multiple-providers.md index 0be7a4553f92..4225266ba81d 100644 --- a/docs/book/src/tasks/multiple-providers.md +++ b/docs/book/src/tasks/multiple-providers.md @@ -1,6 +1,6 @@ # Running multiple providers -Cluster API supports running multiple infrastructure/bootstrap/control plane providers on the same management cluster. It's highly recommeded to rely on +Cluster API supports running multiple infrastructure/bootstrap/control plane providers on the same management cluster. It's highly recommended to rely on [clusterctl init](../clusterctl/commands/init.md) command in this case. [clusterctl](../clusterctl/overview.md) will help ensure that all providers support the same [API Version of Cluster API](../clusterctl/provider-contract.md#metadata-yaml) (contract). diff --git a/docs/book/src/user/quick-start.md b/docs/book/src/user/quick-start.md index ce4ba37758d3..7112b8532d9f 100644 --- a/docs/book/src/user/quick-start.md +++ b/docs/book/src/user/quick-start.md @@ -101,16 +101,16 @@ a target [management cluster] on the selected [infrastructure provider]. the workload cluster's nodes, are actually running within pods in the management cluster. In order to communicate with the workload cluster's API server, we'll need to expose it. We are using Kind which is a limited environment. The easiest way to expose the workload cluster's API server (a pod within a node running in a VM that is itself running - within a pod in the management cluster, that is running inside a docker container), is to use a LoadBalancer service. + within a pod in the management cluster, that is running inside a Docker container), is to use a LoadBalancer service. To allow using a LoadBalancer service, we can't use the kind's default CNI (kindnet), but we'll need to install another CNI, like Calico. In order to do that, we'll need first to initiate the kind cluster with two modifications: 1. Disable the default CNI - 2. Add the docker credentials to the cluster, to avoid the docker hub pull rate limit of the calico images; read more + 2. Add the Docker credentials to the cluster, to avoid the Docker Hub pull rate limit of the calico images; read more about it in the [docker documentation](https://docs.docker.com/docker-hub/download-rate-limit/), and in the [kind documentation](https://kind.sigs.k8s.io/docs/user/private-registries/#mount-a-config-file-to-each-node). - Create a configuration file for kind. Please notice the docker config file path, and adjust it to your local setting: + Create a configuration file for kind. Please notice the Docker config file path, and adjust it to your local setting: ```bash cat < kind-config.yaml kind: Cluster @@ -835,17 +835,17 @@ export AZURE_RESOURCE_GROUP="" {{#/tab }} {{#tab CloudStack}} -A ClusterAPI compatible image must be available in your Cloudstack installation. For instructions on how to build a compatible image -see [image-builder (Cloudstack)](https://image-builder.sigs.k8s.io/capi/providers/cloudstack.html) +A Cluster API compatible image must be available in your CloudStack installation. For instructions on how to build a compatible image +see [image-builder (CloudStack)](https://image-builder.sigs.k8s.io/capi/providers/cloudstack.html) Prebuilt images can be found [here](http://packages.shapeblue.com/cluster-api-provider-cloudstack/images/) -To see all required Cloudstack environment variables execute: +To see all required CloudStack environment variables execute: ```bash clusterctl generate cluster --infrastructure cloudstack --list-variables capi-quickstart ``` -Apart from the script, the following Cloudstack environment variables are required. +Apart from the script, the following CloudStack environment variables are required. ```bash # Set this to the name of the zone in which to deploy the cluster export CLOUDSTACK_ZONE_NAME= @@ -951,7 +951,7 @@ export KUBE_VIP_VERSION="v0.5.0" # Name of the GCP datacenter location. Change this value to your desired location export GCP_REGION="" export GCP_PROJECT="" -# Make sure to use same kubernetes version here as building the GCE image +# Make sure to use same Kubernetes version here as building the GCE image export KUBERNETES_VERSION=1.23.3 # This is the image you built. See https://github.com/kubernetes-sigs/image-builder export IMAGE_ID=projects/$GCP_PROJECT/global/images/ @@ -1452,12 +1452,12 @@ If the nodes don't become ready after a long period, read the pods in the `kube- kubectl --kubeconfig=./capi-quickstart.kubeconfig get pod -n kube-system ``` -If the Calico pods are in image pull error state (`ErrImagePull`), it's probably because of the docker hub pull rate limit. -We can try to fix that by adding a secret with our docker hub credentials, and use it; +If the Calico pods are in image pull error state (`ErrImagePull`), it's probably because of the Docker Hub pull rate limit. +We can try to fix that by adding a secret with our Docker Hub credentials, and use it; see [here](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentials) for details. -First, create the secret. Please notice the docker config file path, and adjust it to your local setting. +First, create the secret. Please notice the Docker config file path, and adjust it to your local setting. ```bash kubectl --kubeconfig=./capi-quickstart.kubeconfig create secret generic docker-creds \ --from-file=.dockerconfigjson= \ diff --git a/docs/book/src/user/troubleshooting.md b/docs/book/src/user/troubleshooting.md index 599336ff4acb..225a058a6787 100644 --- a/docs/book/src/user/troubleshooting.md +++ b/docs/book/src/user/troubleshooting.md @@ -46,7 +46,7 @@ In the example above we can see that the Machine `capi-quickstart-6587k-xtvnz` h To investigate why a machine fails to start you can inspect the conditions of the objects using `clusterctl describe --show-conditions all cluster capi-quickstart`. You can get more detailed information about the status of the machines using `kubectl describe machines`. -To inspect the underlying infrastructure - in this case docker containers acting as Machines - you can access the logs using `docker logs `. For example: +To inspect the underlying infrastructure - in this case Docker containers acting as Machines - you can access the logs using `docker logs `. For example: ```shell docker logs capi-quickstart-6587k-xtvnz @@ -109,7 +109,7 @@ provisioning might be stuck: 1. if there are stopped containers on your machine from previous runs. Clean unused containers with [docker rm -f ](https://docs.docker.com/engine/reference/commandline/rm/). -2. if the docker space on your disk is being exhausted +2. if the Docker space on your disk is being exhausted * Run [docker system df](https://docs.docker.com/engine/reference/commandline/system_df/) to inspect the disk space consumed by Docker resources. * Run [docker system prune --volumes](https://docs.docker.com/engine/reference/commandline/system_prune/) to prune dangling images, containers, volumes and networks. @@ -132,7 +132,7 @@ This error was also observed in Docker Desktop 4.3 and 4.4 on MacOS. It can be r [The upstream issue for this error is closed as of the release of Docker 4.5.0](https://github.com/docker/for-mac/issues/6071) -Note: The below workaround is not recommended unless upgrade or downgrade can not be performed. +Note: The below workaround is not recommended unless upgrade or downgrade cannot be performed. If using a version of Docker Desktop for Mac 4.3 or 4.4, the following workaround can be used: