Skip to content

Commit 8890189

Browse files
authored
Merge pull request #1216 from apricote/book-crd-changes
📖 Document CRD changes from v1alpha4 to v1alpha5
2 parents 06cb0c7 + 66d6869 commit 8890189

File tree

3 files changed

+130
-0
lines changed

3 files changed

+130
-0
lines changed

docs/book/src/SUMMARY.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,7 @@
77
- [external cloud provider](./topics/external-cloud-provider.md)
88
- [move from bootstrap](./topics/mover.md)
99
- [trouble shooting](./topics/troubleshooting.md)
10+
- [CRD Changes](./topics/crd-changes/index.md)
11+
- [v1alpha4 to v1alpha5](./topics/crd-changes/v1alpha4-to-v1alpha5.md)
1012
- [Development](./development/development.md)
1113
- [Hacking CI](./development/ci.md)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# CRD Changes
2+
3+
### Conversions
4+
5+
CAPO is able to automatically convert your old resources into new API versions.
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
2+
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
3+
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
4+
5+
- [v1alpha4 compared to v1alpha5](#v1alpha4-compared-to-v1alpha5)
6+
- [Conversion from v1alpha4 to v1alpha5](#conversion-from-v1alpha4-to-v1alpha5)
7+
- [API Changes](#api-changes)
8+
- [`OpenStackCluster`](#openstackcluster)
9+
- [Managed API LoadBalancer](#managed-api-loadbalancer)
10+
- [Major Changes to Ports and Networks](#major-changes-to-ports-and-networks)
11+
- [`OpenStackMachine`](#openstackmachine)
12+
- [Rename of `status.error{Reason,Message}` to `status.failure{Reason,Message}`](#rename-of-statuserrorreasonmessage-to-statusfailurereasonmessage)
13+
- [Changes to `rootVolume`](#changes-to-rootvolume)
14+
15+
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
16+
17+
# v1alpha4 compared to v1alpha5
18+
19+
## Migration
20+
21+
22+
All users are encouraged to migrate their usage of the CAPO CRDs from older versions to `v1alpha5`. This includes yaml files and source code. As CAPO implements automatic conversions between the CRD versions, this migration can happen after installing the new CAPO release.
23+
24+
## API Changes
25+
26+
This only documents backwards incompatible changes. Fields that were added to v1alpha5 are not listed here.
27+
28+
### `OpenStackCluster`
29+
30+
#### Managed API LoadBalancer
31+
32+
The fields related to the managed API LoadBalancer were moved into a seperate object:
33+
34+
```yaml
35+
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
36+
kind: OpenStackCluster
37+
spec:
38+
managedAPIServerLoadBalancer: true
39+
apiServerLoadBalancerAdditionalPorts: [443]
40+
```
41+
42+
becomes:
43+
44+
```yaml
45+
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha5
46+
kind: OpenStackCluster
47+
spec:
48+
apiServerLoadBalancer:
49+
enabled: true
50+
additionalPorts: [443]
51+
```
52+
53+
### `OpenStackMachine`
54+
55+
#### Major Changes to Ports and Networks
56+
57+
When using Ports it is now possible to specify network and subnet by filter instead of just ID. As a consequence, the relevant ID fields are now moved into the new filter specifications:
58+
59+
```yaml
60+
ports:
61+
- networkId: d-e-a-d
62+
fixedIPs:
63+
- subnetId: b-e-e-f
64+
```
65+
66+
becomes:
67+
68+
```yaml
69+
ports:
70+
- network:
71+
id: d-e-a-d
72+
fixedIPs:
73+
subnet:
74+
id: b-e-e-f
75+
```
76+
77+
Networks are now deprecated. With one exception, all functionality of Networks is now available for Ports. Consequently, Networks will be removed from the API in a future release.
78+
79+
The ability of a Network to add multiple ports with a single directive will not be added to Ports. When moving to Ports, all ports must be added explicitly. Specifically, when evaluating the network or subnet filter of a Network, if there are multiple matches we will add all of these to the server. By contrast we raise an error if the network or subnet filter of a Port does not return exactly one result.
80+
81+
`tenantId` was previously a synonym for `projectId` in both network and subnet filters. This has now been removed. Use `projectId` instead.
82+
83+
The following fields are removed from network and subnet filters without replacement:
84+
85+
- status
86+
- adminStateUp
87+
- shared
88+
- marker
89+
- limit
90+
- sortKey
91+
- sortDir
92+
- subnetPoolId
93+
94+
#### Rename of `status.error{Reason,Message}` to `status.failure{Reason,Message}`
95+
96+
The actual fields were previously already renamed, but we still used the `error` prefix in JSON. This was done to align with CAPI, where these fields were [renamed in v1alpha3](https://cluster-api.sigs.k8s.io/developer/providers/v1alpha2-to-v1alpha3.html#external-objects-will-need-to-rename-statuserrorreason-and-statuserrormessage).
97+
98+
```yaml
99+
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
100+
kind: OpenStackMachine
101+
status:
102+
errorReason: UpdateError
103+
errorMessage: Something when wrong
104+
```
105+
106+
becomes:
107+
108+
```yaml
109+
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha5
110+
kind: OpenStackMachine
111+
status:
112+
failureReason: UpdateError
113+
failureMessage: Something when wrong
114+
```
115+
116+
#### Changes to `rootVolume`
117+
118+
The following fields were removed without replacement:
119+
120+
- `rootVolume.deviceType`
121+
- `rootVolume.sourceType`
122+
123+
Additionally, `rootVolume.sourceUUID` has been replaced by using `ImageUUID` or `Image` from the OpenStackMachine as appropriate.

0 commit comments

Comments
 (0)