-
Notifications
You must be signed in to change notification settings - Fork 163
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
skipper: enable manual canary deployment #6592
Conversation
56b32e1
to
e139cdf
Compare
👍 |
e139cdf
to
0e756ef
Compare
0e756ef
to
628bccf
Compare
36de8dc
to
115bf04
Compare
115bf04
to
370d7ea
Compare
db14786
to
460eaed
Compare
460eaed
to
f8d32bc
Compare
cb2eee3
to
6a9c036
Compare
6a9c036
to
fe99cf0
Compare
The change introduces parameterized `skipper-ingress` deployment template. This template is used to define `main` and `canary` deployments. A single replica `canary` deployment is enabled by a new `skipper_ingress_canary_enabled` config item. When `canary` deployment is enabled number of `main` HPA min replicas is reduced by one. To deploy a canary version update `$canary_internal_version` and set `skipper_ingress_canary_enabled`. After checking that canary behaves as expected set `$internal_version` equal to `$canary_internal_version`. I.e. in the cluster where canary is enabled there is always one canary instance whose version is either above or equal to the main deployment version. All config items are accessed through `.Cluster.ConfigItems` for clarity. Signed-off-by: Alexander Yastrebov <[email protected]>
fe99cf0
to
9ef924c
Compare
{{ end }} | ||
resources: | ||
{{ if and (eq .Cluster.ConfigItems.enable_dedicate_nodepool_skipper "true") (eq .Cluster.ConfigItems.skipper_ingress_binpack "true") }} | ||
{{ $cpu_requests := sumQuantities .Cluster.ConfigItems.skipper_ingress_cpu (printf "-%s" .Cluster.ConfigItems.teapot_admission_controller_daemonset_reserved_cpu) (printf "-%s" .Cluster.ConfigItems.kubelet_system_reserved_cpu) (printf "-%s" .Cluster.ConfigItems.kubelet_kube_reserved_cpu) }} | ||
{{ $cpu_requests := sumQuantities .Cluster.ConfigItems.skipper_ingress_cpu (printf "-%s" .Cluster.ConfigItems.teapot_admission_controller_daemonset_reserved_cpu) (printf "-%s" .Cluster.ConfigItems.kubelet_system_reserved_cpu) (printf "-%s" .Cluster.ConfigItems.kubelet_kube_reserved_cpu) }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh I wasn't aware of that. So we can actually just set the configuration item to the resource of the node and this calculates the resources that can be used by skipper-ingress.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is only with skipper_ingress_binpack=true
but this didn't work 100% so not enabled in most clusters yet. I was hoping to look into this with Karpenter as there seem to be a miscalculation with Cluster Autoscaler when I investigated it months ago.
👍 |
1 similar comment
👍 |
As we decided to not have a config item for canary version value it also does not make sense to have an item for canary args. This change uses template variable for canary args to keep canary version and args close together. Followup on #6592 Signed-off-by: Alexander Yastrebov <[email protected]>
As we decided to not have a config item for canary version value it also does not make sense to have an item for canary args. This change uses template variable for canary args to keep canary version and args close together. Followup on #6592 Signed-off-by: Alexander Yastrebov <[email protected]>
The change introduces parameterized
skipper-ingress
deployment template.This template is used to define
main
andcanary
deployments.A single replica
canary
deployment is enabled by a newskipper_ingress_canary_enabled
config item.When
canary
deployment is enabled number ofmain
HPA min replicas is reduced by one.To deploy a canary version update
$canary_internal_version
and setskipper_ingress_canary_enabled
.After checking that canary behaves as expected set
$internal_version
equal to$canary_internal_version
.I.e. in the cluster where canary is enabled there is always one canary
instance whose version is either above or equal to the main deployment version.
All config items are accessed through
.Cluster.ConfigItems
for clarity.architecturalNew features and architectural changes, e.g. framework changes, migrations, rollout of new services.