Skip to content

Commit 7aa4a9a

Browse files
authored
fix: broken links (#110)
1 parent 848d870 commit 7aa4a9a

File tree

25 files changed

+170
-153
lines changed

25 files changed

+170
-153
lines changed

docs/contributing/01-Proposals/MEP18/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ sidebar_position: 18
66

77
# Autonomous Control Plane
88

9-
As described in the [deployment chapter](../../../docs/04-For%20Operators/03-deployment-guide.md), we strongly recommend Kubernetes as the target platform for running the metal-stack control plane.
9+
As described in the [deployment chapter](../../../docs/04-For%20Operators/03-deployment-guide.mdx), we strongly recommend Kubernetes as the target platform for running the metal-stack control plane.
1010

1111
Kubernetes clusters for this purpose are readily available from hyperscalers, metalstack.cloud, or other cloud providers. Simply using a managed Kubernetes cluster greatly simplifies a metal-stack installation. However, sometimes it might be desirable to host the metal-stack control plane autonomously, without the help of another cloud provider. Reasons for this might include corporate policies that prohibit the use of external data center products, or network constraints.
1212

docs/contributing/03-contribution-guideline.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Open a Github issue in the project you would like to contribute. Within the issu
2121
When opening an issue please consider the following aspects:
2222

2323
1. Create a meaningful issue describing the WHY? of your contribution.
24-
1. Try to set appropriate labels to the issue. For example, attach the `triage` label to your issue if you want it to be discussed in the next [planning meeting](./02-planning-meetings.md). It might be useful to attend the meeting if you want to emphasize it being worked on.
24+
1. Try to set appropriate labels to the issue. For example, attach the `triage` label to your issue if you want it to be discussed in the next [planning meeting](./02-planning-meetings.mdx). It might be useful to attend the meeting if you want to emphasize it being worked on.
2525

2626
### Pull Requests
2727

@@ -125,7 +125,7 @@ We want to share knowledge and keep things simple. If things cannot kept simple
125125

126126
- Document in short sentences[^4].
127127
- Do not explain the HOW (this is already documented by your code and documenting the obvious is considered a defect).
128-
- Explain the WHY. Add a "to" in your documentation line to force yourself to explain the reasonning (e.g. "`<THE WHAT> to <THE TO>`").
128+
- Explain the WHY. Add a "to" in your documentation line to force yourself to explain the reasonning (e.g. "`<THE WHAT> to <THE TO>`").
129129

130130
### Python
131131

@@ -137,7 +137,11 @@ Development follows the official guide to:
137137
- If you want to add a Python microservice to the mix, consider [pyinstaller](https://github.com/pyinstaller/pyinstaller) on Alpine to achieve small image sizes
138138

139139
[^1]: [https://martinfowler.com/bliki/CodeOwnership.html](https://martinfowler.com/bliki/CodeOwnership.html)
140+
140141
[^2]: [https://go.dev/doc/effective_go](https://go.dev/doc/effective_go)
142+
141143
[^3]: [https://github.com/golang/go/wiki/CodeReviewComments](https://github.com/golang/go/wiki/CodeReviewComments)
144+
142145
[^4]: [https://github.com/golang/go/wiki/CodeReviewComments#comment-sentences](https://github.com/golang/go/wiki/CodeReviewComments#comment-sentences)
146+
143147
[^5]: [https://www.python.org/dev/peps/pep-0008/](https://www.python.org/dev/peps/pep-0008/)

docs/docs/04-For Operators/02-operating-systems.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ The supported images for firewalls are:
3232

3333
It is fully possible to build your own operating system images and provide them through the metal-stack.
3434

35-
There are some conventions though that you need to follow in order to make your image installable through the metal-hammer. You should understand the [machine provisioning sequence](../05-Concepts/01-architecture.md#machine-provisioning-sequence) before starting to write your own images.
35+
There are some conventions though that you need to follow in order to make your image installable through the metal-hammer. You should understand the [machine provisioning sequence](../05-Concepts/01-architecture.mdx#machine-provisioning-sequence) before starting to write your own images.
3636

3737
1. Images need to be compressed to a tarball using the [lz4](https://de.wikipedia.org/wiki/LZ4) compression algorithm.
3838
1. An `md5` checksum file with the same name as the image archive needs to be provided in the download path along with the actual os image.

docs/docs/04-For Operators/03-deployment-guide.mdx

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ slug: /deployment-guide
33
title: Deployment Guide
44
sidebar_position: 3
55
---
6+
67
# Deployment Guide
78

8-
We are bootstrapping the [metal control plane](../05-Concepts/01-architecture.md#metal-control-plane) as well as our [partitions](../05-Concepts/01-architecture.md#partitions) with [Ansible](https://www.ansible.com/) through CI.
9+
We are bootstrapping the [metal control plane](../05-Concepts/01-architecture.mdx#metal-control-plane) as well as our [partitions](../05-Concepts/01-architecture.mdx#partitions) with [Ansible](https://www.ansible.com/) through CI.
910

1011
In order to build up your deployment, we recommend to make use of the same Ansible roles that we are using by ourselves in order to deploy the metal-stack. You can find them in the repository called [metal-roles](https://github.com/metal-stack/metal-roles).
1112

@@ -30,7 +31,7 @@ You can use the [mini-lab](https://github.com/metal-stack/mini-lab) as a templat
3031
The metal control plane is typically deployed in a Kubernetes cluster. Therefore, this document will assume that you have a Kubernetes cluster ready for getting deployed. Even though it is theoretically possible to deploy metal-stack without Kubernetes, we strongly advise you to use the described method because we believe that Kubernetes gives you a lot of benefits regarding the stability and maintainability of the application deployment.
3132

3233
:::tip
33-
For metal-stack it does not matter where your control plane Kubernetes cluster is located. You can of course use a cluster managed by a hyperscaler. This has the advantage of not having to setup Kubernetes by yourself and could even become beneficial in terms of fail-safe operation. However, we also describe a solution of how to setup metal-stack with a self-hosted, [Autonomous Control Plane](../../contributing/01-Proposals/MEP18/README.md) cluster. The only requirement from metal-stack is that your partitions can establish network connections to the metal control plane. If you are interested, you can find a reasoning behind this deployment decision [here](../05-Concepts/01-architecture.md#target-deployment-platforms).
34+
For metal-stack it does not matter where your control plane Kubernetes cluster is located. You can of course use a cluster managed by a hyperscaler. This has the advantage of not having to setup Kubernetes by yourself and could even become beneficial in terms of fail-safe operation. However, we also describe a solution of how to setup metal-stack with a self-hosted, [Autonomous Control Plane](../../contributing/01-Proposals/MEP18/README.md) cluster. The only requirement from metal-stack is that your partitions can establish network connections to the metal control plane. If you are interested, you can find a reasoning behind this deployment decision [here](../05-Concepts/01-architecture.mdx#target-deployment-platforms).
3435
:::
3536

3637
Let's start off with a fresh folder for your deployment:
@@ -77,10 +78,10 @@ You can already define the `inventories/group_vars/all/images.yaml` file. It con
7778
import CodeBlock from '@theme/CodeBlock';
7879
import latestRelease from '@site/src/version.json'
7980
export function ImageReleaseConfig() {
80-
return <><CodeBlock language="yaml">
81-
---{"\n"}
82-
metal_stack_release_version: {latestRelease.version}
83-
</CodeBlock></>
81+
return <><CodeBlock language="yaml">
82+
---{"\n"}
83+
metal_stack_release_version: {latestRelease.version}
84+
</CodeBlock></>
8485
}
8586

8687
<ImageReleaseConfig />
@@ -232,7 +233,7 @@ metal_control_plane_ingress_dns: <your-dns-domain> # if you do not have a DNS en
232233

233234
We have several components in our stack that communicate over encrypted gRPC just like Kubernetes components do.
234235

235-
For the very basic setup you will need to create self-signed certificates for the communication between the following components (see [architecture](../05-Concepts/01-architecture.md) document):
236+
For the very basic setup you will need to create self-signed certificates for the communication between the following components (see [architecture](../05-Concepts/01-architecture.mdx) document):
236237

237238
- [metal-api](https://github.com/metal-stack/metal-api) and [masterdata-api](https://github.com/metal-stack/masterdata-api) (in-cluster traffic communication)
238239
- [metal-api](https://github.com/metal-stack/metal-api) and [metal-hammer](https://github.com/metal-stack/metal-hammer) (partition to control plane communication)
@@ -448,15 +449,16 @@ For the actual communication between the metal-api and the user clients (REST AP
448449
Finally, it should be possible to run the deployment through a Docker container. Make sure to have the [Kubeconfig file](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/) of your cluster and set the path in the following command accordingly:
449450

450451
export function VariableConfig() {
451-
return <><CodeBlock language="bash">
452-
export KUBECONFIG={"\<"}path-to-your-cluster-kubeconfig{"\>"}{"\n"}
453-
export METAL_VERSION={latestRelease.version}
454-
</CodeBlock></>
452+
return <><CodeBlock language="bash">
453+
export KUBECONFIG={"\<"}path-to-your-cluster-kubeconfig{"\>"}{"\n"}
454+
export METAL_VERSION={latestRelease.version}
455+
</CodeBlock></>
455456
}
456457

457458
<VariableConfig />
458459

459460
Then you can spin up the deployment with docker:
461+
460462
```bash
461463
docker run --rm -it \
462464
-v $(pwd):/workdir \
@@ -552,21 +554,21 @@ If you decided to use OIDC, you can parametrize the [metal role](https://github.
552554
```yaml
553555
---
554556
metal_masterdata_api_tenants:
555-
- meta:
556-
id: <id>
557-
kind: Tenant
558-
apiversion: v1
559-
version: 0
560-
name: <name>
561-
iam_config:
562-
issuer_config:
557+
- meta:
558+
id: <id>
559+
kind: Tenant
560+
apiversion: v1
561+
version: 0
562+
name: <name>
563+
iam_config:
564+
issuer_config:
563565
client_id: <client_id>
564566
url: <oidc_url>
565-
idm_config:
566-
idm_type: <type> # "AD" | "UX"
567-
group_config:
568-
namespace_max_length: 20
569-
description: <description>
567+
idm_config:
568+
idm_type: <type> # "AD" | "UX"
569+
group_config:
570+
namespace_max_length: 20
571+
description: <description>
570572
```
571573

572574
## Bootstrapping a Partition

docs/docs/05-Concepts/04-Kubernetes/01-gardener.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ Every Kubernetes cluster that is fully provisioned and managed by Gardener is ca
5959

6060
During the provisioning flow of a cluster, Gardener emits resources that are expected to be reconciled by controllers of a cloud provider. This section briefly describes the controllers implemented by metal-stack to allow the creation of a Kubernetes cluster on metal-stack infrastructure.
6161

62-
If you want to learn how to deploy metal-stack with Gardener, please check out the corresponding [deployment-guide section](../../04-For%20Operators/03-deployment-guide.md#gardener-with-metal-stack).
62+
If you want to learn how to deploy metal-stack with Gardener, please check out the corresponding [deployment-guide section](../../04-For%20Operators/03-deployment-guide.mdx#gardener-with-metal-stack).
6363

6464
### gardener-extension-provider-metal
6565

@@ -93,9 +93,9 @@ Some suggestions for the initial K8s cluster are:
9393

9494
Suggestions for default values are:
9595

96-
- `gcp_machine_type`: e2-standard-8
97-
- `gcp_autoscaling_min_nodes`: 1
98-
- `gcp_autoscaling_max_nodes`: 3
96+
- `gcp_machine_type`: e2-standard-8
97+
- `gcp_autoscaling_min_nodes`: 1
98+
- `gcp_autoscaling_max_nodes`: 3
9999

100100
### Initial Cluster on metalstack.cloud
101101

@@ -118,13 +118,13 @@ After setting up the initial K8s cluster and metal-stack, Gardener can be deploy
118118

119119
This deploys the following components:
120120

121-
- virtual garden
122-
- Gardener control plane components
123-
- soil cluster
124-
- managed seed cluster (into the metal-stack partition)
121+
- virtual garden
122+
- Gardener control plane components
123+
- soil cluster
124+
- managed seed cluster (into the metal-stack partition)
125125

126126
In summary, this results in the following:
127127

128-
- `Garden cluster` created in the initial cluster
129-
- `soil cluster` created in the initial cluster. This will be the `initial seed` used for spinning up `shooted seeds` in the metal-stack partition
130-
- `shooted seed` inside the metal-stack partition, where all `shoots` are derived from
128+
- `Garden cluster` created in the initial cluster
129+
- `soil cluster` created in the initial cluster. This will be the `initial seed` used for spinning up `shooted seeds` in the metal-stack partition
130+
- `shooted seed` inside the metal-stack partition, where all `shoots` are derived from

docs/docs/06-For CISOs/Security/03-cryptography.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ metal-stack incorporates multiple layers of cryptographic protection and secure
1010

1111
### TLS Certificate Management
1212

13-
TLS certificates used by metal-stack components - as outlined in the [architecture section](../../05-Concepts/01-architecture.md) - can be generated using either RSA 4096-bit or ECDSA 256-bit keys. We recommend RSA 4096.
13+
TLS certificates used by metal-stack components - as outlined in the [architecture section](../../05-Concepts/01-architecture.mdx) - can be generated using either RSA 4096-bit or ECDSA 256-bit keys. We recommend RSA 4096.
1414

1515
By default, in-cluster communication is not encrypted. If encryption is required within the cluster, it must be configured manually using a service mesh (e.g., Istio or Linkerd) or a similar mechanism.
1616
For outbound traffic, we recommend integrating cert-manager in combination with Let's Encrypt to handle certificate issuance and enable automated certificate rotation for ingress domains. In offline environments where Let's Encrypt cannot be used, the certificates must be issued and managed manually or via an internal CA.

docs/docs/08-References/Storage/duros-controller/MULTITENANCY.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Multi tenancy in metal-stack and gardener are based on projects. In metal-stack,
2020

2121
Lightbits storage has also the notion of a project, once a cluster is created, a new project is created in the lightos storage API, the project there matches the project from the gardener/metal-stack perspective. For every cluster an authentication token in the JWT format is created, this token is able to create/update/list/delete volumes in the lightos cluster in the given project, resp. lightos project. For every kubernetes cluster, even in the same project, an individual JWT token is created. The token is also set to have a 8 day validity, 1 day before the token will get invalid and the cluster still exists, a new token is issued.
2222

23-
The duros-controller is responsible to create such tokens, it is deployed in the seed's shoot namespace (find details on gardener architecture [here](../../../05-Concepts/01-architecture.md)). This namespace is fully managed by the provider and invisible for the cluster user. Once the token has been created, the token is stored in a secret in the actual user cluster alongside with the deployment of the lightbits CSI driver and storage classes. This CSI driver will then be responsible to create/update/delete volumes based on the manifests deployed in the cluster.
23+
The duros-controller is responsible to create such tokens, it is deployed in the seed's shoot namespace (find details on gardener architecture [here](../../../05-Concepts/01-architecture.mdx)). This namespace is fully managed by the provider and invisible for the cluster user. Once the token has been created, the token is stored in a secret in the actual user cluster alongside with the deployment of the lightbits CSI driver and storage classes. This CSI driver will then be responsible to create/update/delete volumes based on the manifests deployed in the cluster.
2424

2525
```bash
2626
k get sc
@@ -79,7 +79,6 @@ metadata:
7979
namespace: kube-system
8080
resourceVersion: "1837602"
8181
uid: 406c3583-d4cd-4a0b-8615-3a6f2b9b7577
82-
8382
```
8483

8584
## Lightbits and NVMEoTCP
@@ -126,4 +125,4 @@ nqn.2019-09.com.lightbitslabs:host:shoot--pd76mr--inttest0-group-0-845b8-49r7x.n
126125

127126
## Further improvements
128127

129-
In the upcoming lightos release the performance aspects of multi tenancy are addressed. This is achieved that it will be possible to cap the maximum throughput possible per volume. This will ensure that no single tenant is able to saturate the whole lightos cluster and impact other tenants using this lightos cluster.
128+
In the upcoming lightos release the performance aspects of multi tenancy are addressed. This is achieved that it will be possible to cap the maximum throughput possible per volume. This will ensure that no single tenant is able to saturate the whole lightos cluster and impact other tenants using this lightos cluster.

versioned_docs/version-v0.21.10/contributing/01-Proposals/MEP18/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ sidebar_position: 18
66

77
# Autonomous Control Plane
88

9-
As described in the [deployment chapter](../../../docs/04-For%20Operators/03-deployment-guide.md), we strongly recommend Kubernetes as the target platform for running the metal-stack control plane.
9+
As described in the [deployment chapter](../../../docs/04-For%20Operators/03-deployment-guide.mdx), we strongly recommend Kubernetes as the target platform for running the metal-stack control plane.
1010

1111
Kubernetes clusters for this purpose are readily available from hyperscalers, metalstack.cloud, or other cloud providers. Simply using a managed Kubernetes cluster greatly simplifies a metal-stack installation. However, sometimes it might be desirable to host the metal-stack control plane autonomously, without the help of another cloud provider. Reasons for this might include corporate policies that prohibit the use of external data center products, or network constraints.
1212

versioned_docs/version-v0.21.10/contributing/03-contribution-guideline.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ We want to share knowledge and keep things simple. If things cannot kept simple
125125

126126
- Document in short sentences[^4].
127127
- Do not explain the HOW (this is already documented by your code and documenting the obvious is considered a defect).
128-
- Explain the WHY. Add a "to" in your documentation line to force yourself to explain the reasonning (e.g. "`<THE WHAT> to <THE TO>`").
128+
- Explain the WHY. Add a "to" in your documentation line to force yourself to explain the reasonning (e.g. "`<THE WHAT> to <THE TO>`").
129129

130130
### Python
131131

@@ -137,7 +137,11 @@ Development follows the official guide to:
137137
- If you want to add a Python microservice to the mix, consider [pyinstaller](https://github.com/pyinstaller/pyinstaller) on Alpine to achieve small image sizes
138138

139139
[^1]: [https://martinfowler.com/bliki/CodeOwnership.html](https://martinfowler.com/bliki/CodeOwnership.html)
140+
140141
[^2]: [https://go.dev/doc/effective_go](https://go.dev/doc/effective_go)
142+
141143
[^3]: [https://github.com/golang/go/wiki/CodeReviewComments](https://github.com/golang/go/wiki/CodeReviewComments)
144+
142145
[^4]: [https://github.com/golang/go/wiki/CodeReviewComments#comment-sentences](https://github.com/golang/go/wiki/CodeReviewComments#comment-sentences)
146+
143147
[^5]: [https://www.python.org/dev/peps/pep-0008/](https://www.python.org/dev/peps/pep-0008/)

versioned_docs/version-v0.21.10/docs/04-For Operators/02-operating-systems.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ The supported images for firewalls are:
3232

3333
It is fully possible to build your own operating system images and provide them through the metal-stack.
3434

35-
There are some conventions though that you need to follow in order to make your image installable through the metal-hammer. You should understand the [machine provisioning sequence](../05-Concepts/01-architecture.md#machine-provisioning-sequence) before starting to write your own images.
35+
There are some conventions though that you need to follow in order to make your image installable through the metal-hammer. You should understand the [machine provisioning sequence](../05-Concepts/01-architecture.mdx#machine-provisioning-sequence) before starting to write your own images.
3636

3737
1. Images need to be compressed to a tarball using the [lz4](https://de.wikipedia.org/wiki/LZ4) compression algorithm.
3838
1. An `md5` checksum file with the same name as the image archive needs to be provided in the download path along with the actual os image.

0 commit comments

Comments
 (0)