Skip to content

Commit 58d77b1

Browse files
authored
Improve usage doc, fix typos and follow style guide (#89)
* Improve usage doc, fix typos and follow style guide * Replace baremetal with `bare metal` to maintain consistency * address review comments
1 parent 681e7f4 commit 58d77b1

16 files changed

Lines changed: 170 additions & 265 deletions

File tree

docs/baremetal/architecture/discovery.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Server Discovery and First Boot
22

3-
This document describes the discovery and first boot process for bare metal servers in IronCore's baremetal automation.
3+
This document describes the discovery and first boot process for bare metal servers in IronCore's bare metal automation.
44
The goal here is to provide a clear understanding of how bare metal servers are discovered and prepared for provisioning.
55

66
## Server Discovery

docs/baremetal/architecture/provisioning.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Server Provisioning
22

3-
This section describes how the provisioning of bare metal servers is handled in IronCore's baremetal automation.
3+
This section describes how the provisioning of bare metal servers is handled in IronCore's bare metal automation.
44
In the [discovery section](/baremetal/architecture/discovery) we discussed how servers are discovered and first time
55
booted and how they are transitioned into an `Available` state. Now we will focus on the provisioning process, and
66
one can use such a `Server` resource to provision a custom operating system and automate the software installation on

docs/baremetal/index.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
# Baremetal Automation
22

3-
The baremetal automation in IronCore is designed to provide a comprehensive solution for managing physical servers
3+
The bare metal automation in IronCore is designed to provide a comprehensive solution for managing physical servers
44
in a Kubernetes-native way. It leverages the power of Kubernetes Custom Resource Definitions (CRDs) to automate:
55

66
- **Discovery**: Automatically detect and register bare metal servers.
77
- **Provisioning**: Deploy and configure servers using Ignition.
88
- **Day-2 Operations**: Manage BIOS, firmware, and hardware inventory declaratively.
99
- **3rd Party Integrations**: Seamlessly integrate with existing tools like vendor-specific management tools.
10-
- **Kubernetes Support**: Run Kubernetes on bare metal servers with support for Cluster API and Gardener.
10+
- **Kubernetes Support**: Run Kubernetes on bare metal servers with support of Cluster API and Gardener.
1111

1212
## Core Components
1313

14-
The core components of the baremetal automation in IronCore include:
14+
The core components of the bare metal automation in IronCore include:
1515
- [**Metal Operator**](https://github.com/ironcore-dev/metal-operator): The central component that manages the lifecycle of bare metal servers.
1616
- [**Boot Operator**](https://github.com/ironcore-dev/boot-operator): iPXE and HTTP boot server that provides boot images and Ignition configurations.
17-
- [**FeDHCP**](https://github.com/ironcore-dev/fedhcp): A DHCP server that provides inband and out of band network configuration to bare metal servers.
17+
- [**FeDHCP**](https://github.com/ironcore-dev/fedhcp): A DHCP server that provides in-band and out-of-band network configuration to bare metal servers.
1818

1919
## Concepts and Usage Guides
2020

2121
Usage guides and concepts for the `metal-operator` API types can be found in the [metal-operator documentation](https://ironcore-dev.github.io/metal-operator/concepts/).
2222

2323
## Prerequisites
2424

25-
The current implementation of the baremetal automation in IronCore requires the following prerequisites:
25+
The current implementation of the bare metal automation in IronCore requires the following prerequisites:
2626

2727
- In-band and out-of-band network connectivity to the bare metal servers.
2828
- A management server in the out-of-band network that can communicate with the bare metal servers.

docs/baremetal/kubernetes/gardener.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,12 @@ Apart from the [Cluster API Provider for Bare Metal](/baremetal/kubernetes/capi)
44
[Gardener](https://gardener.cloud), a Kubernetes-native project for managing Kubernetes clusters at scale.
55

66
There are two main components in the Gardener integration with IronCore:
7-
- **Machine Controller Manager (MCM)**: This component is responsible for managing the lifecycle of machines in a
8-
Kubernetes cluster. It uses the `metal-operator` API types to provision and manage bare metal servers.
9-
- **Gardener Extension Provider**: This component provides the necessary integration points for Gardener to manage bare
10-
metal clusters.
7+
- **Machine Controller Manager (MCM)**: This component is responsible for managing the lifecycle of machines in a Kubernetes cluster. It uses the `metal-operator` API types to provision and manage bare metal servers.
8+
- **Gardener Extension Provider**: This component provides the necessary integration points for Gardener to manage bare metal clusters.
119

1210
## Machine Controller Manager (MCM)
1311

14-
The `[machine-controller-manager-provider-ironcore](https://github.com/ironcore-dev/machine-controller-manager-provider-ironcore-metal)`
12+
The [machine-controller-manager-provider-ironcore](https://github.com/ironcore-dev/machine-controller-manager-provider-ironcore-metal)
1513
is responsible for managing the lifecycle of `Nodes` in a Kubernetes cluster. Here the MCM in essence is translating
1614
Gardener `Machine` resource to `ServerClaims` and wrapping the `user-data` coming from the Gardner OS extensions into
1715
an Ignition `Secret`.
@@ -22,7 +20,7 @@ The [`gardener-extension-provider-ironcore-metal`](https://github.com/ironcore-d
2220
is responsible for providing the necessary integration points for Gardener to manage bare metal clusters.
2321

2422
Those integration points include:
25-
- Configure and the [Cloud Controller Manager](/baremetal/kubernetes/cloud-controller-manager) to handle the `Node` lifecycle
23+
- Configure the [Cloud Controller Manager](/baremetal/kubernetes/cloud-controller-manager) to handle the `Node` lifecycle
2624
and topology information.
2725
- Configure the [metal-load-balancer-controller](/baremetal/kubernetes/metal-loadbalancer-controller) to handle `Service` of type `LoadBalancer`.
2826
- Configure the [Machine Controller Manager (MCM)](#machine-controller-manager-mcm) to manage the creation of `Nodes` in the cluster.

docs/baremetal/kubernetes/metal-loadbalancer-controller.md

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,15 @@ The [metal-loadbalancer-controller](https://github.com/ironcore-dev/metal-load-b
44
for managing the lifecycle of `Services` of type `LoadBalancer` in a Kubernetes cluster running on bare metal servers.
55
The project consists of two main components:
66
- **Controller**: The main component that watches for changes in `Service` resources and manages the lifecycle of load balancers.
7-
- **Speaker**: Is responsible for announcing the load balancer IP address to `metalbond` which acts as a route reflector
8-
to the bare metal servers.
7+
- **Speaker**: Is responsible for announcing the load balancer IP address to `metalbond` which acts as a route reflector to the bare metal servers.
98

109
The `metal-loadbalancer-controller` is designed to work in an IPv6 only environment.
1110

1211
## Controller
1312

1413
The controller component has the following responsibilities:
15-
- Watches for changes in `Service` resources of type `LoadBalancer` and uses the `ClusterIP` of a `Service` and patches the
16-
`LoadBalancer` status using this `ClusterIP`.
17-
- Setting the `PodCIDRs` on the `Node` resources to ensure that the load balancer can route traffic to the pods. Here it
18-
takes the main `Node` IP address and the configured `node-cidr-mask-size` and patches the `Node.spec.podCIDRs` field.
14+
- Watches for changes in `Service` resources of type `LoadBalancer` and uses the `ClusterIP` of a `Service` and patches the `LoadBalancer` status using this `ClusterIP`.
15+
- Setting the `PodCIDRs` on the `Node` resources to ensure that the load balancer can route traffic to the pods. Here it takes the main `Node` IP address and the configured `node-cidr-mask-size` and patches the `Node.spec.podCIDRs` field.
1916

2017
## Metalbond-Speaker
2118

docs/contribute/contributing.md

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ We welcome contributions from the community! Follow these guidelines to help us
1212
- Feedback will be provided if any adjustments are necessary.
1313

1414
Thank you for helping improve our documentation!
15-
# Contributing to IronCore Documentation
16-
17-
We welcome contributions from the community! Follow these guidelines to help us maintain high-quality, consistent documentation.
1815
## Contributors Guide
1916

2017
The IronCore Documentation project uses Github to manage reviews of pull requests.
@@ -36,11 +33,11 @@ and us a good deal of inspiration.
3633

3734
## Steps to Contribute
3835

39-
Do you want to work on an issue? You are welcome to claim an existing one by commenting on it in GitHub.
36+
Do you want to work on an issue? You are welcome to claim an existing one by commenting on it in GitHub.
4037

4138
!!! note
4239
Perform a cursory search to see if the issue has already been taken by someone else.
43-
This will prevent misunderstanding and duplication of effort from contributors on the same issue.
40+
This will prevent misunderstanding and duplication of effort from contributors on the same issue.
4441

4542
If you have questions about one of the issues please comment on them and one of the
4643
maintainers will clarify it.
@@ -72,21 +69,21 @@ git clone git@github.com:ironcore-dev/ironcore-dev.github.io.git
7269
cd docs
7370
```
7471

75-
* Create a branch from the `main` using 'git checkout' command.
72+
* Create a branch from the `main` using 'git checkout' command.
7673
!!! note
77-
If needed, rebase to the current `main` branch before submitting your pull request. If it doesn't merge properly
74+
If needed, rebase to the current `main` branch before submitting your pull request. If it doesn't merge properly
7875
with `main` you may be asked to rebase your changes.
7976

80-
```shell
81-
git checkout -b my_feature
82-
# rebase if necessary
83-
git fetch upstream main
84-
git rebase upstream/main
85-
```
77+
```shell
78+
git checkout -b my_feature
79+
# rebase if necessary
80+
git fetch upstream main
81+
git rebase upstream/main
82+
```
8683

8784
* Commits should be as small as possible, while ensuring that each commit is correct independently
8885

89-
* Commit your changes to your feature branch and push it to your fork.
86+
* Commit your changes to your feature branch and push it to your fork.
9087

9188
```shell
9289
git add .
@@ -111,8 +108,7 @@ for a review in the pull request or a comment.
111108

112109
## Issues and Planning
113110

114-
We use GitHub issues to track bugs and enhancement requests. Please provide as much context as possible when you open an issue. The information you provide must be comprehensive enough to understand, reproduce the behavior and find related reports of that issue for the assignee.
111+
We use GitHub issues to track bugs and enhancement requests. Please provide as much context as possible when you open an issue. The information you provide must be comprehensive enough to understand, reproduce the behavior and find related reports of that issue for the assignee.
115112
Therefore, contributors may use but aren't restricted to the issue template provided by the IronCore maintainers.
116113

117-
118114
Thank you for helping improve our documentation!

docs/iaas/architecture/networking.md

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Overview
44

5-
IronCore's virtual networking architecture provides an end-to-end virtual networking solution for provisioned `Machine`s running in data centers, regardless they are baremetal machines or virtual machines. It is designed to enable robust, flexible and performing networking control plane and data plane.
5+
IronCore's virtual networking architecture provides an end-to-end virtual networking solution for provisioned `Machine`s running in data centers, regardless they are bare metal machines or virtual machines. It is designed to enable robust, flexible and performing networking control plane and data plane.
66

77
- **Robust**: IronCore's virtual networking control plane is mainly implemented using Kubernetes controller model. Thus, it is able to survive component's failure and recover the running states by retrieving the desired networking configuration.
88
- **Flexible**: Thanks to the modular and layered architecture design, IronCore's virtual networking solution allows developers to implement and interchange components from the most top-level data center management system built upon defined IronCore APIs, to lowest-level packet processing engines depending on the used hardware.
@@ -14,23 +14,21 @@ IronCore's virtual networking architecture is illustrated with the following fig
1414

1515
The main elements involved in IronCore's networking are:
1616
- [**ironcore**](https://github.com/ironcore-dev/ironcore): Core networking component that manages network resources and configurations. For more details, see the
17-
[Networking usage guide](/iaas/usage-guides/networking).
17+
[Networking usage guide](/iaas/usage-guides/networking).
1818
- [**ironcore-net**](https://github.com/ironcore-dev/ironcore-net): Global coordination service that manages network resource in an IronCore instance.
1919
- [**metalnet**](https://github.com/ironcore-dev/metalnet): A service that provides cluster-level networking capabilities for `Machines`.
2020
- [**dpservice**](https://github.com/ironcore-dev/dpservice): A service that manages data plane operations, including network traffic routing and policies.
2121
- [**metalbond**](https://github.com/ironcore-dev/metalbond): A component that handles route announcements in an IronCore instance, ensuring that networking routes are
22-
correctly propagated across the IronCore installation.
22+
correctly propagated across the IronCore installation.
2323

2424
## `ironcore` and `ironcore-net`
2525

2626
`ironcore-net` is a global coordination service within an IronCore installation. Therefore, it is a single instance and
2727
the place where all network related decisions like reservation of unique IP addresses, allocation of unique network IDs, etc. are made.
2828

2929
`ironcore-net` has apart from its [own API](https://github.com/ironcore-dev/ironcore-net/tree/main/api/core/v1alpha1) two main components:
30-
- **apinetlet**: This component is responsible from translating the user-facing API objects from the `networking` resource group into the
31-
internal representation used by `ironcore-net`.
32-
- **metalnetlet**: This component is interfacing with the `metalnet` API to manage cluster-level networking resources like `NetworkInterface` which
33-
are requested globally in the `ironcore-net` API but are implemented by `metalnet` on a hypervisor level.
30+
- **apinetlet**: This component is responsible from translating the user-facing API objects from the `networking` resource group into the internal representation used by `ironcore-net`.
31+
- **metalnetlet**: This component is interfacing with the `metalnet` API to manage cluster-level networking resources like `NetworkInterface` which are requested globally in the `ironcore-net` API but are implemented by `metalnet` on a hypervisor level.
3432

3533
### Example `apinetlet` flow
3634

@@ -50,10 +48,10 @@ The `apinetlet` will reconcile this `VirtualIP` by performing the following step
5048
1. Create an `IP` object in the `ironcore-net` API, which reserves a unique IP address.
5149
2. Update the `VirtualIP` status with the allocated IP address.
5250

53-
The `ironcore` API server is agnostic on how the underlying global IP address is allocated and delegates this responsibility
51+
The `IronCore` API server is agnostic on how the underlying global IP address is allocated and delegates this responsibility
5452
to `ironcore-net`.
5553

56-
A similar flow happens for `Networks`, `LoadBalancer` and `NatGateways` resources, where the `apinetlet` is responsible
54+
A similar flow happens for `Network`, `LoadBalancer` and `NatGateway` resources, where the `apinetlet` is responsible
5755
for translating and allocating the necessary resources in `ironcore-net` to ensure that the networking requirements are met.
5856

5957
### `metalnetlet` and `metalnet`

docs/iaas/architecture/runtime-interface.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# IronCore Runtime Interface (IRI)
22

3-
The IronCore Runtime Interface (IRI) is a key concept in the IronCore architecture, designed to provide a consitent
3+
The IronCore Runtime Interface (IRI) is a key concept in the IronCore architecture, designed to provide a consistent
44
and unified interface for interacting with various compute and storage providers. The IRI abstracts the underlying
55
complexities of different providers.
66

@@ -12,7 +12,7 @@ There are three main runtime interfaces in IronCore:
1212
Implementations of these interfaces are done by provider-specific components. More infomation about the provider can
1313
be found in the [provider concept documentation](/iaas/architecture/providers/).
1414

15-
The definition of the runtime interfaces can be found in IronCores [`iri` package](https://github.com/ironcore-dev/ironcore/tree/main/iri/).
15+
The definition of the runtime interfaces can be found in IronCore's [`iri` package](https://github.com/ironcore-dev/ironcore/tree/main/iri/).
1616

1717
## MachineRuntime Interface
1818

@@ -40,9 +40,7 @@ service MachineRuntime {
4040
}
4141
```
4242

43-
The general idea is that a `machinepoollet` ensures that the API level dependencies are met. For example, a `Machine`s
44-
`Volume` which is used as a root disk is in the state `Available`. If those prerequisites are met, the `poollet` will
45-
call the corresponding `CreateMachine` method of the `RuntimeInterface` to create the `Machine` resource.
43+
The general idea is that a `machinepoollet` ensures that the API level dependencies are met. For example, a `Machine`'s `Volume` which is used as a root disk is in the state `Available`. If those prerequisites are met, the `poollet` will call the corresponding `CreateMachine` method of the `RuntimeInterface` to create the `Machine` resource.
4644

4745
The `ListMachines` and `Status` methods are used to retrieve a list of all `Machine` instances managed by the provider.
4846
The result of those methods is then used to propagate `Machine` state changes. Those methods are periodically called by
@@ -53,7 +51,7 @@ methods to attach volumes or network interfaces to a `Machine` if a change in th
5351

5452
## VolumeRuntime Interface
5553

56-
Similar to the `MachineRuntime`, the `VolumeRuntime` interface is responsible for managing storage resources in IronCore.
54+
Similar to the `MachineRuntime`, the `VolumeRuntime` interface is responsible for managing block storage resources in IronCore.
5755
Here the `volumepoollet` takes a similar role as the `machinepoollet` for the `MachineRuntime` and invokes `CreateVolume`,
5856
`DeleteVolume`, `ExpandVolume`, and other methods to manage `Volume` resources.
5957

docs/iaas/kubernetes/cloud-controller-manager.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ Below is the detailed explanation on how APIs are implemented by `cloud-provider
2727

2828
InstanceMetadata returns metadata of a node instance, which includes :
2929

30-
- `ProviderID`: Provider is combination of ProviderName(Which is nothing but set to `IronCore`)
31-
- `InstanceType`: InstanceType is set to referencing MachineClass name by the instance.
30+
- `ProviderID`: Provider is combination of ProviderName(Which is nothing but set to `IronCore`)
31+
- `InstanceType`: InstanceType is set to referencing MachineClass name by the instance.
3232
- `NodeAddresses`: Node addresses are calculated from the IP information available from NetworkInterfaces of the machine.
33-
- `Zone`: Zone is set to referenced MachinePool name.
33+
- `Zone`: Zone is set to referenced MachinePool name.
3434

3535

3636
## Load balancing for Services of type LoadBalancer
@@ -47,7 +47,7 @@ explanation on how APIs are implemented in IronCore cloud-provider.
4747
### Ensure LoadBalancer
4848

4949
- `EnsureLoadBalancer` gets the LoadBalancer name based on service name.
50-
- Checks if IronCore `LoadBalancer` object already exists. If not it gets the `port` and `protocol`, `ipFamily` information from the service and creates a new LoadBalancer object in the Ironcore.
50+
- Checks if IronCore `LoadBalancer` object already exists. If not it gets the `port` and `protocol`, `ipFamily` information from the service and creates a new LoadBalancer object in the Ironcore.
5151
- Newly created LoadBalancer will be associated with Network reference provided in cloud configuration.
5252
- Then `LoadBalancerRouting` object is created with the destination IP information retrieved from the nodes (Note: `LoadBalancerRouting` is internal object to Ironcore). Later, this information is used at the Ironcore API level to describe the explicit targets in a pool traffic is routed to.
5353
- Ironcore supports two types of LoadBalancer `Public` and `Internal`. If LoadBalancer has to be of type Internal, "service.beta.kubernetes.io/ironcore-load-balancer-internal" annotation needs to be set to true, otherwise it will be considered as public type.

0 commit comments

Comments
 (0)