Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cloud profile version classification dates #9

Draft
wants to merge 58 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
d83e57b
Cloud profile classification dates.
Gerrit91 Dec 2, 2024
5b6c011
Update docs.
Gerrit91 Dec 2, 2024
11fc49a
add example for automatic version upgrades to shoot_versions.md
crigertg Dec 2, 2024
c613dfa
add core.ClassificationPlanned as supported classification
crigertg Dec 2, 2024
c6415b2
Update.
Gerrit91 Dec 2, 2024
f28504c
Merge remote-tracking branch 'origin/cloud-profile-version-classifica…
Gerrit91 Dec 2, 2024
b6324c8
Documentation update.
Gerrit91 Dec 3, 2024
0b67b4c
And neeeext attempt. 😅
Gerrit91 Dec 3, 2024
e6fd608
Add status.
Gerrit91 Dec 3, 2024
fe76eff
feat: machine image names
vknabel Dec 3, 2024
08da789
validation(cloudprofile): check if k8s lifecycle of latest version ex…
crigertg Dec 3, 2024
30b4ac0
validation(cloudprofile): don't allow classification/expirationDate a…
crigertg Dec 3, 2024
9ca3a82
validate(cloudprofile): check if there are duplicate lifecycle classi…
crigertg Dec 3, 2024
7f6c5b5
validation(cloudprofile): check if lifecycle classifications are in o…
crigertg Dec 3, 2024
56ce8af
Implement cloud profile status reconciler.
Gerrit91 Dec 3, 2024
d0aaf80
One more test.
Gerrit91 Dec 3, 2024
54f0a2a
validation(cloudprofile): check if lifecycle classification startTime…
crigertg Dec 3, 2024
4c79d05
fix(validation/utils): fix missing return in lifecycleStartTimesInOrder
crigertg Dec 3, 2024
d3b3bf6
docs(validation/cloudprofile): add docs for lifecycleStartTimesInOrder
crigertg Dec 3, 2024
0064412
Remove SVG.
Gerrit91 Dec 3, 2024
f6e05f5
refactor(validation/cloudprofile): optimize lifecycle expiration vali…
crigertg Dec 3, 2024
baedccd
refactor(validation/utils): fix error wording for mixed classificatio…
crigertg Dec 3, 2024
33ded0e
refactor(validation/utils): optimize lifecycyleInOrder
crigertg Dec 3, 2024
cd38636
refactor(validation/utils): improve validateLifecycyleStartTiems and …
crigertg Dec 3, 2024
1980967
fix(validation/utils): fix k8s version validation function names and …
crigertg Dec 3, 2024
91dcebc
wip: add first tests for lifecycle validation
crigertg Dec 3, 2024
fa72b0d
wip: add more tests for cloudprofile validation
crigertg Dec 3, 2024
dbfbba4
wip: cloudprofile k8s version lifecycle test unordered lifecycle stages
crigertg Dec 3, 2024
f79f2f7
Whitespaces.
Gerrit91 Dec 4, 2024
34ff0e4
First draft of a GEP.
Gerrit91 Dec 4, 2024
ff501f4
Provide example of existing impl.
Gerrit91 Dec 4, 2024
ee87c71
GEP-32.
Gerrit91 Dec 4, 2024
20e17fb
Unfinished progress.
Gerrit91 Dec 4, 2024
f4df9ed
add more cloudprofile tests for k8s lifecycle validation
crigertg Dec 4, 2024
fd52dba
add helper functions for determining latest versions and classificati…
crigertg Dec 4, 2024
983307e
use helper function for determining expired versions in shoot mainten…
crigertg Dec 4, 2024
0d953cb
docs(GEP-32): alternatives and variants considered
vknabel Dec 4, 2024
fa05c92
Move tests to helper package.
Gerrit91 Dec 4, 2024
078086d
Imports.
Gerrit91 Dec 4, 2024
c919b85
integrate changes for version lifecycle in bastion extension
crigertg Dec 4, 2024
30dc635
replace version checks with helper functions
crigertg Dec 4, 2024
5913ae4
Add validation for cloud profile update.
Gerrit91 Dec 4, 2024
f04e8c8
update resourcereferencemanager with version lifecycle helper functions
crigertg Dec 4, 2024
02ef5d3
add support for k8s version lifecycles to NamespacedCloudProfiles
crigertg Dec 4, 2024
04f61a9
Review of GEP. Not sure if vknabel likes it. 😔
Gerrit91 Dec 4, 2024
f9dffb9
Enhance (Namespaced)CloudProfile validation regarding classification …
LucaBernstein Dec 4, 2024
d1c9f12
Improve validations, main work was done by @simcod. 🐈
Gerrit91 Dec 4, 2024
db0cb80
feat: machine image versions classification deletion protection
vknabel Dec 4, 2024
04f0a4a
fix: namespacedcloudprofile time travel into the past
vknabel Dec 5, 2024
c455f9a
fix: previous startTime should stay nil when empty
vknabel Dec 5, 2024
c78d3c0
Fix `NamespacedCloudProfile` admission validation tests regarding Kub…
LucaBernstein Dec 5, 2024
a31cd19
docs: stage not phase
vknabel Dec 5, 2024
4ac5470
Refine namings of `Lifecycle` and `LifecycleStage`.
LucaBernstein Dec 5, 2024
e0c7e1a
Add myself to GEP authors
LucaBernstein Dec 5, 2024
471dec5
Refactor and rename usages after last field renamings
LucaBernstein Dec 5, 2024
a430ca1
Fix bug with legacy Classification
LucaBernstein Dec 5, 2024
e36dc9e
Validate supported stages do not overlap
LucaBernstein Dec 5, 2024
dffa515
Remove GEP draft from here as it has been copied to and and worked on…
LucaBernstein Dec 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
212 changes: 209 additions & 3 deletions docs/api-reference/core.md
Original file line number Diff line number Diff line change
Expand Up @@ -471,6 +471,19 @@ Bastion
</table>
</td>
</tr>
<tr>
<td>
<code>status</code></br>
<em>
<a href="#core.gardener.cloud/v1beta1.CloudProfileStatus">
CloudProfileStatus
</a>
</em>
</td>
<td>
<p>Status contains the current status of the cloud profile.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="core.gardener.cloud/v1beta1.ControllerDeployment">ControllerDeployment
Expand Down Expand Up @@ -3527,6 +3540,51 @@ Bastion
</tr>
</tbody>
</table>
<h3 id="core.gardener.cloud/v1beta1.CloudProfileStatus">CloudProfileStatus
</h3>
<p>
(<em>Appears on:</em>
<a href="#core.gardener.cloud/v1beta1.CloudProfile">CloudProfile</a>)
</p>
<p>
<p>CloudProfileStatus contains the status of the cloud profile.</p>
</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>kubernetesVersions</code></br>
<em>
<a href="#core.gardener.cloud/v1beta1.ExpirableVersionStatus">
[]ExpirableVersionStatus
</a>
</em>
</td>
<td>
<p>KubernetesVersions contains the statuses of the kubernetes versions.</p>
</td>
</tr>
<tr>
<td>
<code>machineImageVersions</code></br>
<em>
<a href="#core.gardener.cloud/v1beta1.MachineImageVersionStatus">
[]MachineImageVersionStatus
</a>
</em>
</td>
<td>
<p>MachineImageVersions contains the statuses of the machine image versions.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="core.gardener.cloud/v1beta1.ClusterAutoscaler">ClusterAutoscaler
</h3>
<p>
Expand Down Expand Up @@ -5110,7 +5168,7 @@ Kubernetes meta/v1.Time
</td>
<td>
<em>(Optional)</em>
<p>ExpirationDate defines the time at which this version expires.</p>
<p>Deprecated: Is replaced by Lifecycle.</p>
</td>
</tr>
<tr>
Expand All @@ -5124,7 +5182,66 @@ VersionClassification
</td>
<td>
<em>(Optional)</em>
<p>Classification defines the state of a version (preview, supported, deprecated)</p>
<p>Classification defines the state of a version (preview, supported, deprecated).
Deprecated: Is replaced by Lifecycle.</p>
</td>
</tr>
<tr>
<td>
<code>lifecycle</code></br>
<em>
<a href="#core.gardener.cloud/v1beta1.LifecycleStage">
[]LifecycleStage
</a>
</em>
</td>
<td>
<em>(Optional)</em>
<p>Lifecycle defines the lifecycle stages for this version. Cannot be used in combination with Classification and ExpirationDate.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="core.gardener.cloud/v1beta1.ExpirableVersionStatus">ExpirableVersionStatus
</h3>
<p>
(<em>Appears on:</em>
<a href="#core.gardener.cloud/v1beta1.CloudProfileStatus">CloudProfileStatus</a>,
<a href="#core.gardener.cloud/v1beta1.MachineImageVersionStatus">MachineImageVersionStatus</a>)
</p>
<p>
<p>ExpirableVersionStatus defines the current status of an expirable version.</p>
</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>version</code></br>
<em>
string
</em>
</td>
<td>
<p>Version is the version identifier.</p>
</td>
</tr>
<tr>
<td>
<code>classificationState</code></br>
<em>
<a href="#core.gardener.cloud/v1beta1.VersionClassification">
VersionClassification
</a>
</em>
</td>
<td>
<p>ClassificationState reflects the current state in the classification lifecycle.</p>
</td>
</tr>
</tbody>
Expand Down Expand Up @@ -7571,6 +7688,51 @@ LastOperationType
<p>
<p>LastOperationType is a string alias.</p>
</p>
<h3 id="core.gardener.cloud/v1beta1.LifecycleStage">LifecycleStage
</h3>
<p>
(<em>Appears on:</em>
<a href="#core.gardener.cloud/v1beta1.ExpirableVersion">ExpirableVersion</a>)
</p>
<p>
</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>classification</code></br>
<em>
<a href="#core.gardener.cloud/v1beta1.VersionClassification">
VersionClassification
</a>
</em>
</td>
<td>
<p>Classification is the category of this lifecycle stage (unavailable, preview, supported, deprecated, expired).</p>
</td>
</tr>
<tr>
<td>
<code>startTime</code></br>
<em>
<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#time-v1-meta">
Kubernetes meta/v1.Time
</a>
</em>
</td>
<td>
<em>(Optional)</em>
<p>StartTime defines when this lifecycle stage becomes active.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="core.gardener.cloud/v1beta1.LoadBalancerServicesProxyProtocol">LoadBalancerServicesProxyProtocol
</h3>
<p>
Expand Down Expand Up @@ -7894,6 +8056,48 @@ Examples:
</tr>
</tbody>
</table>
<h3 id="core.gardener.cloud/v1beta1.MachineImageVersionStatus">MachineImageVersionStatus
</h3>
<p>
(<em>Appears on:</em>
<a href="#core.gardener.cloud/v1beta1.CloudProfileStatus">CloudProfileStatus</a>)
</p>
<p>
</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<code>name</code></br>
<em>
string
</em>
</td>
<td>
<p>Name matches the name of the MachineImage the status is represented of.</p>
</td>
</tr>
<tr>
<td>
<code>versions</code></br>
<em>
<a href="#core.gardener.cloud/v1beta1.ExpirableVersionStatus">
[]ExpirableVersionStatus
</a>
</em>
</td>
<td>
<p>Versions contains the statuses of the machine image versions.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="core.gardener.cloud/v1beta1.MachineType">MachineType
</h3>
<p>
Expand Down Expand Up @@ -13160,7 +13364,9 @@ string
(<code>string</code> alias)</p></h3>
<p>
(<em>Appears on:</em>
<a href="#core.gardener.cloud/v1beta1.ExpirableVersion">ExpirableVersion</a>)
<a href="#core.gardener.cloud/v1beta1.ExpirableVersion">ExpirableVersion</a>,
<a href="#core.gardener.cloud/v1beta1.ExpirableVersionStatus">ExpirableVersionStatus</a>,
<a href="#core.gardener.cloud/v1beta1.LifecycleStage">LifecycleStage</a>)
</p>
<p>
<p>VersionClassification is the logical state of a version.</p>
Expand Down
Loading