werf/kubedog

Support Argo Rollouts resources

rgeraskin opened this issue · 1 comments

Hi,

Argo Rollouts is a Kubernetes controller and set of CRDs which provide advanced deployment capabilities such as blue-green, canary, canary analysis, experimentation, and progressive delivery features to Kubernetes.

Is it possible to support the Rollout CRD so that kubedog will output the events from the resource?

example:

❯ kubectl describe -n demo-chart-ru-test6 ro demo-chart
Name:         demo-chart
Namespace:    demo-chart-ru-test6
Labels:       app.kubernetes.io/managed-by=Helm
Annotations:  meta.helm.sh/release-name: demo-chart-ru-test6
              meta.helm.sh/release-namespace: demo-chart-ru-test6
              project.werf.io/env: ru-test6
              project.werf.io/name: demo-chart
              rollout.argoproj.io/revision: 6
              werf.io/version: v1.2.12+fix2
API Version:  argoproj.io/v1alpha1
Kind:         Rollout
Metadata:
  Creation Timestamp:  2021-08-13T11:36:56Z
  Generation:          1
  Resource Version:    69707558
  Self Link:           /apis/argoproj.io/v1alpha1/namespaces/demo-chart-ru-test6/rollouts/demo-chart
  UID:                 a0bfbdf7-daf6-4da3-86e1-637fb726c338
Spec:
  Replicas:  2
  Strategy:
    Blue Green:
      Active Service:   demo-chart-active
      Preview Service:  demo-chart-preview
  Workload Ref:
    API Version:  apps/v1
    Kind:         Deployment
    Name:         demo-chart
Status:
  HPA Replicas:        2
  Available Replicas:  2
  Blue Green:
    Active Selector:   f7c6c9ff5
    Preview Selector:  675858897c
  Canary:
  Conditions:
    Last Transition Time:  2021-08-13T11:36:57Z
    Last Update Time:      2021-08-13T11:36:57Z
    Message:               Rollout has minimum availability
    Reason:                AvailableReason
    Status:                True
    Type:                  Available
    Last Transition Time:  2021-08-16T09:21:19Z
    Last Update Time:      2021-08-16T09:21:19Z
    Message:               RolloutCompleted
    Reason:                RolloutCompleted
    Status:                False
    Type:                  Completed
    Last Transition Time:  2021-08-16T09:33:44Z
    Last Update Time:      2021-08-16T09:33:44Z
    Message:               ReplicaSet "demo-chart-675858897c" has timed out progressing.
    Reason:                ProgressDeadlineExceeded
    Status:                False
    Type:                  Progressing
  Current Pod Hash:        675858897c
  Message:                 ProgressDeadlineExceeded: ReplicaSet "demo-chart-675858897c" has timed out progressing.
  Observed Generation:     1
  Phase:                   Degraded
  Ready Replicas:          2
  Replicas:                4
  Selector:                app.kubernetes.io/instance=demo-chart-ru-test6,app.kubernetes.io/name=demo-chart,rollouts-pod-template-hash=f7c6c9ff5
  Stable RS:               f7c6c9ff5
  Updated Replicas:        2
Events:
  Type    Reason                Age   From                 Message
  ----    ------                ----  ----                 -------
  Normal  RolloutUpdated        28m   rollouts-controller  Rollout updated to revision 5
  Normal  NewReplicaSetCreated  28m   rollouts-controller  Created ReplicaSet demo-chart-68f6dc5fbf (revision 5) with size 2
  Normal  SwitchService         28m   rollouts-controller  Switched selector for service 'demo-chart-preview' from 'f7c6c9ff5' to '68f6dc5fbf'
  Normal  RolloutUpdated        25m   rollouts-controller  Rollout updated to revision 6
  Normal  NewReplicaSetCreated  25m   rollouts-controller  Created ReplicaSet demo-chart-675858897c (revision 6) with size 2
  Normal  ScalingReplicaSet     25m   rollouts-controller  Scaled down ReplicaSet demo-chart-68f6dc5fbf (revision 5) from 2 to 0
  Normal  SwitchService         25m   rollouts-controller  Switched selector for service 'demo-chart-preview' from '68f6dc5fbf' to '675858897c'

Thanks!

@rgeraskin Hi! It is totally possible to implement such tracker. Support for flagger Canary resource kind have been added recently #218. Argo Rollouts can be added in a similar way.

We welcome PRs adding even some very basic version of such tracker (which could just hang until Rollout is ready, without underhood details).