Skip to content

Commit b8d52be

Browse files
authored
docs: Add how to deploy CAREN (#599)
Also add some more icon bling to the menu and update menu ordering.
1 parent 9d63ce1 commit b8d52be

File tree

15 files changed

+109
-18
lines changed

15 files changed

+109
-18
lines changed

.markdownlint.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"heading-style": { "style": "atx" },
33
"ul-style": { "style": "dash" },
4-
"line-length": { "line_length": 120, "stern": true },
4+
"line-length": { "line_length": 120, "code_blocks": false },
55
"hr-style": { "style": "---" }
66
}

docs/content/_index.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
+++
2-
title = "CAPI Runtime Extensions"
2+
title = "Cluster API Runtime Extensions - Nutanix (CAREN)"
33

44
# [[cascade]]
55
# type = "blog"
@@ -23,11 +23,12 @@ templating by introducing variables specified with an OpenAPI schema that can th
2323
via patches.
2424

2525
The [Runtime SDK] feature provides an extensibility mechanism to hook into `ClusterClass` managed Kubernetes clusters'
26-
lifecycle. This project, CAPI Runtime Extensions, provides implementations of various runtime hooks that can be used in
27-
`ClusterClasses` across providers. This includes variables and patches that can be used across any provider to configure
28-
generic Kubernetes capabilities, such as configuring audit policy or HTTP proxy configuration. These capabilities are
29-
not provider-specific and delivering these capabilities in code instead of directly embedded in `ClusterClass`
30-
definitions leads to a much more robust experience via fast-feedback unit tests, as opposed to long running e2e tests.
26+
lifecycle. This project, Cluster API Runtime Extensions - Nutanix (CAREN), provides implementations of various runtime
27+
hooks that can be used in `ClusterClasses` across providers. This includes variables and patches that can be used across
28+
any provider to configure generic Kubernetes capabilities, such as configuring audit policy or HTTP proxy configuration.
29+
These capabilities are not provider-specific and delivering these capabilities in code instead of directly embedded in
30+
`ClusterClass` definitions leads to a much more robust experience via fast-feedback unit tests, as opposed to long
31+
running e2e tests.
3132

3233
In addition to cluster resource customizations, this project enables management of essential cluster addons (e.g. CNI)
3334
via variable definitions, e.g. selecting a CNI provider via variables defined on the `Cluster` resource itself. The goal

docs/content/addons/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
+++
22
title = "Addons"
3-
weight = 2
3+
weight = 3
44
icon = "fa-solid fa-cubes"
55
+++

docs/content/addons/cluster-autoscaler.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
+++
22
title = "Cluster Autoscaler"
3+
icon = "fa-solid fa-up-right-and-down-left-from-center"
34
+++
45

56
By leveraging CAPI cluster lifecycle hooks, this handler deploys [Cluster Autoscaler][cluster-autoscaler]

docs/content/contributing/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
+++
22
title = "Contributing"
33
weight = 99
4-
icon = "fa-solid fa-gift"
4+
icon = "fa-solid fa-hand-holding-heart"
55
+++

docs/content/contributing/e2e_tests.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
+++
22
title = "End-to-end tests"
3+
icon = "fa-solid fa-bugs"
34
+++
45

56
This project uses [Ginkgo] to run end-to-end tests. Tests are labelled to make running targeted or specific tests

docs/content/contributing/releasing.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
+++
22
title = "Releasing"
3+
icon = "fa-solid fa-gift"
34
+++
45

56
This project uses [release-please] to automate changelog updates per release. Due to security restrictions[^1] in the
@@ -9,7 +10,7 @@ This project uses [release-please] to automate changelog updates per release. Du
910
When a release has been cut, a new release PR can be created manually using the `release-please` CLI locally. This needs
1011
to be run by someone with write permissions to the repository. Create the `release-please` branch and PR:
1112

12-
```bash
13+
```shell
1314
make release-please
1415
```
1516

@@ -20,19 +21,19 @@ date).
2021
When a release is ready, the commits in the release PR will need to be signed (again, this is a security requirement).
2122
To do this, check out the PR branch locally:
2223

23-
```bash
24+
```shell
2425
gh pr checkout <RELEASE_PR_NUMBER>
2526
```
2627

2728
Sign the previous commit:
2829

29-
```bash
30+
```shell
3031
git commit --gpg-sign --amend
3132
```
3233

3334
And force push:
3435

35-
```bash
36+
```shell
3637
git push --force-with-lease
3738
```
3839

docs/content/customization/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
+++
22
title = "Cluster customizations"
3-
weight = 1
3+
weight = 2
44
icon = "fa-solid fa-screwdriver-wrench"
55
+++
66

docs/content/customization/nutanix/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
+++
22
title = "Nutanix"
3-
icon = "fa-brands fa-nutanix"
3+
icon = "fa-solid fa-server"
44
+++
55

66
The customizations in this section are applicable only to Nutanix clusters. They will only be applied to clusters that
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
+++
2+
title = "Getting started"
3+
icon = "fa-solid fa-forward-fast"
4+
weight = 1
5+
+++
6+
7+
To deploy CAREN, follow the docs on how to deploy CAREN using either
8+
[clusterctl]({{< ref "deployment/via-clusterctl" >}}) or [Helm]({{< ref "deployment/via-helm" >}}).
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
+++
2+
title = "Deploying CAREN"
3+
icon = "fa-solid fa-truck-fast"
4+
+++
5+
6+
CAREN is implemented as a CAPI runtime extension provider, which means it can be deployed alongside all other CAPI
7+
providers in the same way [using `clusterctl`]({{< ref "via-clusterctl" >}}). However, as CAREN is not yet integrated
8+
into `clusterctl`, it is necessary to first configure `clusterctl` to know about CAREN before we can deploy it.
9+
10+
Alternatively you can install CAREN [via Helm]({{< ref "via-helm" >}}). Installing via Helm will provide default some
11+
default `ClusterClasses` and allow for further customization of the CAREN deployment.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
+++
2+
title = "Via clusterctl"
3+
icon = "fa-solid fa-circle-nodes"
4+
weight = 1
5+
+++
6+
7+
Add the following to your `clusterctl.yaml` file, which is normally found at
8+
`${XDG_CONFIG_HOME}/cluster-api/clusterctl.yaml` (or `${HOME}/cluster-api/clusterctl.yaml`). See [clusterctl
9+
configuration file] for more details. If the `providers` section already exists, add the entry and omit the `providers`
10+
key from this block below:
11+
12+
```yaml
13+
providers:
14+
- name: "caren"
15+
url: "https://github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/releases/latest/runtime-extension-components.yaml"
16+
type: "RuntimeExtensionProvider"
17+
```
18+
19+
Now we can deploy CAREN and other necessary providers (update infrastructure providers for your needs), leaving all
20+
configuration values blank as we will specify these when creating clusters:
21+
22+
```shell
23+
env CLUSTER_TOPOLOGY=true \
24+
EXP_RUNTIME_SDK=true \
25+
EXP_CLUSTER_RESOURCE_SET=true \
26+
NUTANIX_ENDPOINT= NUTANIX_PASSWORD= NUTANIX_USER= \
27+
AWS_B64ENCODED_CREDENTIALS= \
28+
clusterctl init \
29+
--infrastructure docker,nutanix:v1.4.0-alpha.2,aws \
30+
--addon helm \
31+
--runtime-extension caren \
32+
--wait-providers
33+
```
34+
35+
[clusterctl configuration file]: https://cluster-api.sigs.k8s.io/clusterctl/configuration.html?highlight=clusterctl%20config#variables
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
+++
2+
title = "Via Helm"
3+
icon = "fa-solid fa-helmet-safety"
4+
weight = 2
5+
+++
6+
7+
When installing CAREN via Helm, we need to deploy Cluster API core providers and any other required infrastructure
8+
providers to our management cluster via `clusterctl`:
9+
10+
```shell
11+
env CLUSTER_TOPOLOGY=true \
12+
EXP_RUNTIME_SDK=true \
13+
EXP_CLUSTER_RESOURCE_SET=true \
14+
NUTANIX_ENDPOINT= NUTANIX_PASSWORD= NUTANIX_USER= \
15+
AWS_B64ENCODED_CREDENTIALS= \
16+
clusterctl init \
17+
--infrastructure docker,nutanix:v1.4.0-alpha.2,aws \
18+
--addon helm \
19+
--wait-providers
20+
```
21+
22+
We can then deploy CAREN via Helm by adding the Helm repo and installing in the usual way via Helm:
23+
Add the CAREN Helm repo:
24+
25+
```shell
26+
helm repo add caren https://nutanix-cloud-native.github.io/cluster-api-runtime-extensions-nutanix/helm
27+
helm repo update caren
28+
helm upgrade --install caren caren/cluster-api-runtime-extensions-nutanix \
29+
--namespace cluster-api-runtime-extensions-nutanix-system \
30+
--create-namespace \
31+
--wait \
32+
--wait-for-jobs
33+
```

docs/content/lifecycle/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
+++
22
title = "Lifecycle handlers"
3-
weight = 3
3+
weight = 4
44
icon = "fa-solid fa-seedling"
55
+++

docs/hugo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ sidebar_cache_limit = 1000
127127
[params.ui.feedback]
128128
enable = true
129129
# The responses that the user sees after clicking "yes" (the page was helpful) or "no" (the page was not helpful).
130-
yes = 'Glad to hear it! Please <a href="https://github.com/USERNAME/REPOSITORY/issues/new">tell us how we can improve</a>.'
131-
no = 'Sorry to hear that. Please <a href="https://github.com/USERNAME/REPOSITORY/issues/new">tell us how we can improve</a>.'
130+
yes = 'Glad to hear it! Please <a href="https://github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/issues/new">tell us how we can improve</a>.'
131+
no = 'Sorry to hear that. Please <a href="https://github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/issues/new">tell us how we can improve</a>.'
132132

133133
# Adds a reading time to the top of each doc.
134134
# If you want this feature, but occasionally need to remove the Reading time from a single page,

0 commit comments

Comments
 (0)