diff --git a/.github/workflows/lint-docs.yaml b/.github/workflows/lint-docs.yaml new file mode 100644 index 000000000000..b680e083e15d --- /dev/null +++ b/.github/workflows/lint-docs.yaml @@ -0,0 +1,21 @@ +name: Check Markdown links + +on: + push: + branches: + - main + paths: + - '**.md' + pull_request: + paths: + - '**.md' + +jobs: + markdown-link-check: + name: Broken Links + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - uses: gaurav-nelson/github-action-markdown-link-check@v1 + with: + config-file: .markdownlinkcheck.json \ No newline at end of file diff --git a/.markdownlinkcheck.json b/.markdownlinkcheck.json new file mode 100644 index 000000000000..0d47508f3ee7 --- /dev/null +++ b/.markdownlinkcheck.json @@ -0,0 +1,12 @@ +{ + "ignorePatterns": [ + { + "pattern": "^http://localhost" + } +], + "timeout": "5s", + "retryOn429": true, + "retryCount": 5, + "fallbackRetryDelay": "30s", + "aliveStatusCodes": [200, 206] +} diff --git a/docs/book/src/clusterctl/provider-contract.md b/docs/book/src/clusterctl/provider-contract.md index b87e8d47c330..a74b82847ce2 100644 --- a/docs/book/src/clusterctl/provider-contract.md +++ b/docs/book/src/clusterctl/provider-contract.md @@ -135,7 +135,7 @@ While defining the Deployment Spec, the container that executes the controller b The manager MUST support a `--namespace` flag for specifying the namespace where the controller will look for objects to reconcile; however, clusterctl will always install providers watching for all namespaces -(`--namespace=""`); for more details see [support for multiple instances](../../developer/architecture/controllers/support-multiple-instances.md) +(`--namespace=""`); for more details see [support for multiple instances](../developer/architecture/controllers/support-multiple-instances.md) for more context. #### Variables diff --git a/docs/book/src/developer/e2e.md b/docs/book/src/developer/e2e.md index a3d9d5e4b262..9125e95bd4b1 100644 --- a/docs/book/src/developer/e2e.md +++ b/docs/book/src/developer/e2e.md @@ -145,7 +145,7 @@ defined in the [Cluster API test framework] to check if the operation completed ### Naming the test spec -You can categorize the test with a custom label that can be used to filter a category of E2E tests to be run. Currently, the cluster-api codebase has [these labels](./testing.html#running-specific-tests) which are used to run a focused subset of tests. +You can categorize the test with a custom label that can be used to filter a category of E2E tests to be run. Currently, the cluster-api codebase has [these labels](./testing.md#running-specific-tests) which are used to run a focused subset of tests. ## Tear down diff --git a/docs/book/src/developer/providers/implementers-guide/generate_crds.md b/docs/book/src/developer/providers/implementers-guide/generate_crds.md index 44387f98d229..a5b59acf9287 100644 --- a/docs/book/src/developer/providers/implementers-guide/generate_crds.md +++ b/docs/book/src/developer/providers/implementers-guide/generate_crds.md @@ -76,7 +76,7 @@ make manifests ``` [status]: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#status-subresource -[rbac]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.16/#customresourcesubresources-v1beta1-apiextensions-k8s-io +[rbac]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.22/#customresourcesubresources-v1beta1-apiextensions-k8s-io [kbstatus]: https://book.kubebuilder.io/reference/generating-crd.html?highlight=status#status ### Apply further customizations diff --git a/docs/book/src/tasks/experimental-features/cluster-classes.md b/docs/book/src/tasks/experimental-features/cluster-classes.md index 12e523802ddf..0ba222e20d5d 100644 --- a/docs/book/src/tasks/experimental-features/cluster-classes.md +++ b/docs/book/src/tasks/experimental-features/cluster-classes.md @@ -61,7 +61,7 @@ The ClusterClass - first in the yaml below - contains references to the template * DockerMachineTemplate * KubeadmConfigTemplate -The full ClusterClass definition can also be found in the [CAPI repo](https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/docs/book/src/tasks/yamls/clusterclass.yaml). +The full ClusterClass definition can also be found in the [CAPI repo](https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/docs/book/src/tasks/experimental-features/yamls/clusterclass.yaml).
ClusterClass @@ -75,14 +75,14 @@ The full ClusterClass definition can also be found in the [CAPI repo](https://ra To create the objects on your local cluster run: ```bash -kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/docs/book/src/tasks/yamls/clusterclass.yaml +kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/docs/book/src/tasks/experimental-features/yamls/clusterclass.yaml ``` #### Enable networking for workload clusters To make sure workload clusters come up with a functioning network a Kindnet ConfigMap with a Kindnet ClusterResourceSet is required. Kindnet only offers networking for Clusters built with Kind and CAPD. This can be substituted for any other networking solution for Kubernetes e.g. Calico as used in the Quickstart guide. -The kindnet configuration file can be found in the [CAPI repo](https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/docs/book/src/tasks/yamls/clusterclass.yaml). +The kindnet configuration file can be found in the [CAPI repo](https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/docs/book/src/tasks/experimental-features/yamls/clusterclass.yaml). To create the resources run: ```bash @@ -100,10 +100,10 @@ This is a Cluster definition that leverages the ClusterClass created above to de ```
-Create the Cluster object from the file in [the CAPI repo](https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/docs/book/src/tasks/yamls/clusterclass-quickstart.yaml) with: +Create the Cluster object from the file in [the CAPI repo](https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/docs/book/src/tasks/experimental-features/yamls/clusterclass-quickstart.yaml) with: ```bash -kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/docs/book/src/tasks/yamls/clusterclass-quickstart.yaml +kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/docs/book/src/tasks/experimental-features/yamls/clusterclass-quickstart.yaml ``` #### Verify the workload cluster is running diff --git a/docs/proposals/20191017-kubeadm-based-control-plane.md b/docs/proposals/20191017-kubeadm-based-control-plane.md index 8ba6bb4df798..016e16da2aa5 100644 --- a/docs/proposals/20191017-kubeadm-based-control-plane.md +++ b/docs/proposals/20191017-kubeadm-based-control-plane.md @@ -128,8 +128,8 @@ Non-Goals listed in this document are intended to scope bound the current v1alph - To manage etcd clusters in any topology other than stacked etcd (externally managed etcd clusters can still be leveraged). - To address disaster recovery constraints, e.g. restoring a control plane from 0 replicas using a filesystem or volume snapshot copy of data persisted in etcd. - To support rollbacks, as there is no data store rollback guarantee for Kubernetes. Consumers should perform backups of the cluster prior to performing potentially destructive operations. -- To mutate the configuration of live, running clusters (e.g. changing api-server flags), as this is the responsibility of the [component configuration working group](https://git.k8s.io/community/wg-component-standard). -- To provide configuration of external cloud providers (i.e. the [cloud-controller-manager](https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/)).This is deferred to kubeadm. +- To mutate the configuration of live, running clusters (e.g. changing api-server flags), as this is the responsibility of the [component configuration working group](https://github.com/orgs/kubernetes/projects/26). +- To provide configuration of external cloud providers (i.e. the [cloud-controller-manager](https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/)). This is deferred to kubeadm. - To provide CNI configuration. This is deferred to external, higher level tooling. - To provide the upgrade logic to handle changes to infrastructure (networks, firewalls etc…) that may need to be done to support a control plane on a newer version of Kubernetes (e.g. a cloud controller manager requires updated permissions against infrastructure APIs). We expect the work on [add-on components](https://git.k8s.io/community/sig-cluster-lifecycle#cluster-addons) to help to resolve some of these issues. - To provide automation around the horizontal or vertical scaling of control plane components, especially as etcd places hard performance limits beyond 3 nodes (due to latency). diff --git a/docs/proposals/20200804-windows-support.md b/docs/proposals/20200804-windows-support.md index eb9268469a33..5b74ffc26f55 100644 --- a/docs/proposals/20200804-windows-support.md +++ b/docs/proposals/20200804-windows-support.md @@ -118,7 +118,7 @@ There is prior art for building Windows base images. For example, AKS-Engine has Another example is the the [sig-windows-tools](https://github.com/kubernetes-sigs/sig-windows-tools) which provide scripts for image configuration when using Kubeadm. Although the Linux implementation in image-builder uses Ansible for configuration, Windows isn't going to share -the same configuration because [Ansible](https://docs.ansible.com/ansible/latest/user_guide/windows.html) requires [Windows specific modules](https://docs.ansible.com/ansible/latest/modules/list_of_windows_modules.html) to do the configuration. +the same configuration because [Ansible](https://docs.ansible.com/ansible/latest/user_guide/windows.html) requires [Windows specific modules](https://docs.ansible.com/ansible/2.9/modules/list_of_windows_modules.html) to do the configuration. #### Kubelet and other component configuration @@ -144,7 +144,7 @@ The conclusion of the [issue](https://github.com/kubernetes-sigs/cluster-api/iss By leveraging cloudbase-init, an infrastructure provider implementation will require only a few changes which include: -- Make changes to their provider api to enable Windows OS infra machines ([example](https://github.com/ionutbalutoiu/cluster-api-provider-azure/commit/9c8daedac75959b141fec7ea909c2c1fd0bd484b)) +- Make changes to their provider api to enable Windows OS infra machines ([example](https://github.com/kubernetes-sigs/cluster-api-provider-azure/pull/1036/commits/e753a32fccdf6b825b606f12bb1acd6e34a70339#diff-492149096931cdfde8cf61676230879e41cfdb1afeb74784cdf85bca2272a1be)) - Ensuring cloudbase-init is configured properly to read UserData which will contain the cloud-init script. Users must configure [cloudbase-init with a metadata service](https://cloudbase-init.readthedocs.io/en/latest/services.html#configuring-available-services) that has support for [UserData](https://cloudbase-init.readthedocs.io/en/latest/userdata.html) ([example](https://cloudbase-init.readthedocs.io/en/latest/tutorial.html#configuration-file)). diff --git a/docs/proposals/YYYYMMDD-template.md b/docs/proposals/YYYYMMDD-template.md index bae4aa31a5ac..13fd1feb520d 100644 --- a/docs/proposals/YYYYMMDD-template.md +++ b/docs/proposals/YYYYMMDD-template.md @@ -29,7 +29,7 @@ To get started with this template: Aim for single topic PRs to keep discussions focused. If you disagree with what is already in a document, open a new PR with suggested changes. -The canonical place for the latest set of instructions (and the likely source of this file) is [here](/docs/proposals/YYYYMMDD-template.md). +The canonical place for the latest set of instructions (and the likely source of this file) is [here](https://raw.githubusercontent.com/kubernetes-sigs/cluster-api/main/docs/proposals/YYYYMMDD-template.md). The `Metadata` section above is intended to support the creation of tooling around the proposal process. This will be a YAML section that is fenced as a code block. diff --git a/test/infrastructure/docker/exp/README.md b/test/infrastructure/docker/exp/README.md index 530d50b9e8f5..c8ca65423fbb 100644 --- a/test/infrastructure/docker/exp/README.md +++ b/test/infrastructure/docker/exp/README.md @@ -8,7 +8,7 @@ In short, code in this subrepository is not subject to any compatibility or depr Experiments follow a strict lifecycle: Alpha -> Beta prior to Graduation. -For more information on graduation criteria, see: [Contributing Guidelines](../CONTRIBUTING.md#experiments) +For more information on graduation criteria, see: [Contributing Guidelines](../../../../CONTRIBUTING.md#experiments) ## Active Features DockerMachinePool (alpha)