diff --git a/artifacts/flagger/account.yaml b/artifacts/flagger/account.yaml index 9bbd8410..0fac89ad 100644 --- a/artifacts/flagger/account.yaml +++ b/artifacts/flagger/account.yaml @@ -31,6 +31,12 @@ rules: resources: - horizontalpodautoscalers verbs: ["*"] + - apiGroups: + - "extensions" + resources: + - ingresses + - ingresses/status + verbs: ["*"] - apiGroups: - flagger.app resources: diff --git a/artifacts/flagger/crd.yaml b/artifacts/flagger/crd.yaml index 134020e6..61eac408 100644 --- a/artifacts/flagger/crd.yaml +++ b/artifacts/flagger/crd.yaml @@ -69,6 +69,18 @@ spec: type: string name: type: string + ingressRef: + anyOf: + - type: string + - type: object + required: ['apiVersion', 'kind', 'name'] + properties: + apiVersion: + type: string + kind: + type: string + name: + type: string service: type: object required: ['port'] diff --git a/charts/flagger/templates/crd.yaml b/charts/flagger/templates/crd.yaml index aad996b8..f189a31a 100644 --- a/charts/flagger/templates/crd.yaml +++ b/charts/flagger/templates/crd.yaml @@ -70,6 +70,18 @@ spec: type: string name: type: string + ingressRef: + anyOf: + - type: string + - type: object + required: ['apiVersion', 'kind', 'name'] + properties: + apiVersion: + type: string + kind: + type: string + name: + type: string service: type: object required: ['port'] diff --git a/charts/flagger/templates/rbac.yaml b/charts/flagger/templates/rbac.yaml index 95a2f249..e03755c0 100644 --- a/charts/flagger/templates/rbac.yaml +++ b/charts/flagger/templates/rbac.yaml @@ -27,6 +27,12 @@ rules: resources: - horizontalpodautoscalers verbs: ["*"] + - apiGroups: + - "extensions" + resources: + - ingresses + - ingresses/status + verbs: ["*"] - apiGroups: - flagger.app resources: diff --git a/pkg/apis/flagger/v1alpha3/types.go b/pkg/apis/flagger/v1alpha3/types.go index 4b0b9d12..e9eb9a49 100755 --- a/pkg/apis/flagger/v1alpha3/types.go +++ b/pkg/apis/flagger/v1alpha3/types.go @@ -52,6 +52,10 @@ type CanarySpec struct { // +optional AutoscalerRef *hpav1.CrossVersionObjectReference `json:"autoscalerRef,omitempty"` + // reference to NGINX ingress resource + // +optional + IngressRef *hpav1.CrossVersionObjectReference `json:"ingressRef,omitempty"` + // virtual service spec Service CanaryService `json:"service"` diff --git a/pkg/apis/flagger/v1alpha3/zz_generated.deepcopy.go b/pkg/apis/flagger/v1alpha3/zz_generated.deepcopy.go index 4bb9551c..dc710448 100644 --- a/pkg/apis/flagger/v1alpha3/zz_generated.deepcopy.go +++ b/pkg/apis/flagger/v1alpha3/zz_generated.deepcopy.go @@ -205,6 +205,11 @@ func (in *CanarySpec) DeepCopyInto(out *CanarySpec) { *out = new(v1.CrossVersionObjectReference) **out = **in } + if in.IngressRef != nil { + in, out := &in.IngressRef, &out.IngressRef + *out = new(v1.CrossVersionObjectReference) + **out = **in + } in.Service.DeepCopyInto(&out.Service) in.CanaryAnalysis.DeepCopyInto(&out.CanaryAnalysis) if in.ProgressDeadlineSeconds != nil {