Skip to content

Commit e21cb2c

Browse files
committed
docs: wording
1 parent b1b8c0c commit e21cb2c

File tree

1 file changed

+17
-7
lines changed
  • docs/src/development/proposals/MEP16

1 file changed

+17
-7
lines changed

docs/src/development/proposals/MEP16/README.md

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@ reports:
9595

9696
### Firewall Controller Manager
9797

98-
- firewall-controller
99-
- Allow OPTIONAL configuration source (metal-api with view HMAC), which is considered when no seed kubeconfig was passed in the userdata
100-
- firewall-controller-manager
101-
- Update the firewall entity in the metal-api
102-
- metal-api
103-
- Allow update of firewall rules in the machine allocation spec
104-
- Add egress rules, rate limiting, etc to the firewall entity
98+
The firewall-controller should allow retrieving the main configuration of the firewall from the metal-api (with view HMAC) as an alternative to the kubeconfig based approach that is used in our Gardener setup.
99+
100+
In this scenario, the firewall-controller-manager is responsible to update the firewall entity in the metal-api whenever the firewall rules change of the firewall resource.
101+
102+
Of course the metail-api needs to update firewall rules in the machine allocation spec. Additionally ingress and egress rules need to be added to the firewall entity.
103+
104+
The desired behavior will be configured in the `FirewallDeployment`. Specifically for the Gardener use case, the generation of the shoot kubeconfig for the firewall to be able to access the `Firewall` resource definition in the seed cluster will be hidden behind the `generateGardenerFirewallControllerSecret` flag.
105105

106106
```yaml
107107
kind: FirewallDeployment
@@ -186,6 +186,14 @@ This approach allows maximum flexibility as intended by Cluster API and is still
186186

187187
An advanced use case of this flexibility would be a management cluster, that is in charge of multiple workload clusters. Where one workload cluster acts as a monitoring or tooling cluster, receives logs and the firewall monitor for the other workload clusters. The CWNPs could be defined here, all in a separate namespace.
188188

189+
#### Cluster API Caveats
190+
191+
When the cluster is pivoted and reconciles its own firewall, a malfunctioning firewall prevents the cluster from self-healing and requires manual intervention by creating a new firewall. This is an inherent problem of the cluster-api approach. It can be circumvented by using an extra cluster to manage workload clusters.
192+
193+
In the current form of this approach firewalls and therefore the firewall egress and ingress rules are managed by the cluster operators that manage the cluster-api resources.
194+
Hence it will not be possible to gain a fine-grained control over every cluster operator's choices from a central ruleset at the level of metal-stack firewalls.
195+
In case this control surfaces as a requirement, it would need to be implemented in a firewall external to metal-stack.
196+
189197
## Roadmap
190198

191199
In general this proposal is not thought to be implemented in one batch. Instead an incremental approach is required.
@@ -195,6 +203,8 @@ In general this proposal is not thought to be implemented in one batch. Instead
195203
- Add `firewall.metal-stack.io/paused` annotation (managed by CAPMS during move, theoretically useful for Gardener shoot migration as well to avoid shallow deletion).
196204
- Reconcile multiple `FirewallDeployment` resources per namespace.
197205
- Allow setting the `firewall.metal-stack.io/no-controller-connection` annotation through the `FirewallDeployment` (either through the template or inheritance)
206+
- add `MetalStackCluster.Spec.FirewallTemplate`
207+
- make `MetalStackCluster.Spec.NodeNetworkID` optional if `Spec.FirewallTemplate` given
198208
2. Extend firewall-controller with the configuration file (no different data sources than kubernetes) and let the FCM generate this configuration file along with the rest of the userdata.
199209
3. Add metal-api as configuration source.
200210
- Allow updates of firewall rules in the firewall entity.

0 commit comments

Comments
 (0)