Record last applied revision
- add LastAppliedRevision field to Status - set LastAppliedRevision after a successful sync - add Status section spec
This commit is contained in:
parent
f8aae94975
commit
696658dcc9
|
|
@ -96,9 +96,14 @@ type WorkloadReference struct {
|
|||
type KustomizationStatus struct {
|
||||
// +optional
|
||||
Conditions []Condition `json:"conditions,omitempty"`
|
||||
|
||||
// The last successfully applied revision.
|
||||
// The revision format for Git sources is <branch|tag>/<commit-sha>.
|
||||
// +optional
|
||||
LastAppliedRevision string `json:"lastAppliedRevision,omitempty"`
|
||||
}
|
||||
|
||||
func KustomizationReady(kustomization Kustomization, reason, message string) Kustomization {
|
||||
func KustomizationReady(kustomization Kustomization, revision, reason, message string) Kustomization {
|
||||
kustomization.Status.Conditions = []Condition{
|
||||
{
|
||||
Type: ReadyCondition,
|
||||
|
|
@ -108,6 +113,7 @@ func KustomizationReady(kustomization Kustomization, reason, message string) Kus
|
|||
Message: message,
|
||||
},
|
||||
}
|
||||
kustomization.Status.LastAppliedRevision = revision
|
||||
return kustomization
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -166,6 +166,10 @@ spec:
|
|||
- type
|
||||
type: object
|
||||
type: array
|
||||
lastAppliedRevision:
|
||||
description: The last successfully applied revision. The revision format
|
||||
for Git sources is <branch|tag>/<commit-sha>.
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
version: v1alpha1
|
||||
|
|
|
|||
|
|
@ -253,6 +253,7 @@ func (r *KustomizationReconciler) sync(
|
|||
|
||||
return kustomizev1.KustomizationReady(
|
||||
kustomization,
|
||||
source.GetArtifact().Revision,
|
||||
kustomizev1.ApplySucceedReason,
|
||||
"kustomization was successfully applied",
|
||||
), nil
|
||||
|
|
|
|||
|
|
@ -39,15 +39,13 @@ that describes a pipeline such as:
|
|||
- **alert** if something went wrong
|
||||
- **notify** if the cluster state changed
|
||||
|
||||

|
||||
|
||||
The controller the runs these pipelines relies on
|
||||
The controller that runs these pipelines relies on
|
||||
[source-controller](https://github.com/fluxcd/source-controller)
|
||||
for providing the raw manifests from Git repositories or any
|
||||
other sources that source-controller could support in the future.
|
||||
other source that source-controller could support in the future.
|
||||
|
||||
If a Git repository contains no Kustomize manifests, the controller will
|
||||
generate the `kustomization.yaml` automatically and label
|
||||
If a Git repository contains no Kustomize manifests, the controller can
|
||||
generate the `kustomization.yaml` file automatically and label
|
||||
the objects for garbage collection (GC).
|
||||
|
||||
A pipeline runs on-a-schedule and ca be triggered manually by a
|
||||
|
|
@ -56,8 +54,8 @@ cluster admin or automatically by a source event such as a Git revision change.
|
|||
When a pipeline is removed from the cluster, the controller's GC terminates
|
||||
all the objects previously created by that pipeline.
|
||||
|
||||
A pipeline can be suspended, while in suspension the controller will
|
||||
stop the scheduler and will ignore any source events.
|
||||
A pipeline can be suspended, while in suspension the controller
|
||||
stops the scheduler and ignores any source events.
|
||||
Deleting a suspended pipeline does not trigger garbage collection.
|
||||
|
||||
Alerting can be configured with a Kubernetes custom resource
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ of Kubernetes objects generated with Kustomize.
|
|||
+ [Garbage collection](kustomization.md#garbage-collection)
|
||||
+ [Health assessment](kustomization.md#health-assessment)
|
||||
+ [Kustomization dependencies](kustomization.md#kustomization-dependencies)
|
||||
+ [Status](kustomization.md#status)
|
||||
- [Profile CRD](profile.md)
|
||||
+ [Alerting configuration](profile.md#alerting)
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,11 @@ The status sub-resource describes the result of the last kustomization execution
|
|||
type KustomizationStatus struct {
|
||||
// +optional
|
||||
Conditions []Condition `json:"conditions,omitempty"`
|
||||
|
||||
// The last successfully applied revision.
|
||||
// The revision format for Git sources is <branch|tag>/<commit-sha>.
|
||||
// +optional
|
||||
LastAppliedRevision string `json:"lastAppliedRevision,omitempty"`
|
||||
}
|
||||
```
|
||||
|
||||
|
|
@ -322,3 +327,72 @@ spec:
|
|||
|
||||
> **Note** that circular dependencies between kustomizations must be avoided, otherwise the
|
||||
> interdependent kustomizations will never be applied on the cluster.
|
||||
|
||||
## Status
|
||||
|
||||
When the controller completes a kustomization apply, reports the result in the `status` sub-resource.
|
||||
|
||||
A successful reconciliation sets the ready condition to `true` and updates the revision field:
|
||||
|
||||
```yaml
|
||||
status:
|
||||
conditions:
|
||||
- lastTransitionTime: "2020-04-23T19:28:48Z"
|
||||
message: kustomization was successfully applied
|
||||
reason: ApplySucceed
|
||||
status: "True"
|
||||
type: Ready
|
||||
lastAppliedRevision: master/a1afe267b54f38b46b487f6e938a6fd508278c07
|
||||
```
|
||||
|
||||
You can wait for the kustomize controller to complete a reconciliation with:
|
||||
|
||||
```bash
|
||||
kubectl wait kustomization/backend --for=condition=ready
|
||||
```
|
||||
|
||||
The controller logs the Kubernetes objects:
|
||||
|
||||
```json
|
||||
{
|
||||
"level": "info",
|
||||
"ts": 1587195448.071468,
|
||||
"logger": "controllers.Kustomization",
|
||||
"msg": "Kustomization applied in 1.436096591s",
|
||||
"kustomization": "default/backend",
|
||||
"output": {
|
||||
"service/backend": "created",
|
||||
"deployment.apps/backend": "created",
|
||||
"horizontalpodautoscaler.autoscaling/backend": "created"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
A failed reconciliation sets the ready condition to `false`:
|
||||
|
||||
```yaml
|
||||
status:
|
||||
conditions:
|
||||
- lastTransitionTime: "2020-04-23T19:29:48Z"
|
||||
message: 'server-side validation failed'
|
||||
reason: ValidationFailed
|
||||
status: "False"
|
||||
type: Ready
|
||||
lastAppliedRevision: master/a1afe267b54f38b46b487f6e938a6fd508278c07
|
||||
```
|
||||
|
||||
> **Note** that the last applied revision is updated only on a successful reconciliation.
|
||||
|
||||
When a reconciliation fails, the controller logs the error:
|
||||
|
||||
```json
|
||||
{
|
||||
"level": "error",
|
||||
"ts": 1587195448.071468,
|
||||
"logger": "controllers.Kustomization",
|
||||
"msg": "server-side validation failed",
|
||||
"kustomization": "default/backend",
|
||||
"error": "The Service 'backend' is invalid: spec.type: Unsupported value: 'Ingress'"
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue