Skip to content

Commit

Permalink
deploy: 872f2ac
Browse files Browse the repository at this point in the history
  • Loading branch information
zachaller committed Jul 25, 2024
1 parent 20a9057 commit 2b2a89b
Show file tree
Hide file tree
Showing 5 changed files with 126 additions and 119 deletions.
2 changes: 2 additions & 0 deletions features/specification/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3735,6 +3735,8 @@ <h1 id="rollout-specification">Rollout Specification<a class="headerlink" href="
<span class="w"> </span><span class="nt">additionalIngressAnnotations</span><span class="p">:</span><span class="w"> </span><span class="c1"># optional</span>
<span class="w"> </span><span class="nt">canary-by-header</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">X-Canary</span>
<span class="w"> </span><span class="nt">canary-by-header-value</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">iwantsit</span>
<span class="w"> </span><span class="nt">canaryIngressAnnotations</span><span class="p">:</span><span class="w"> </span><span class="c1"># optional</span>
<span class="w"> </span><span class="nt">my-custom-annotation.mygroup.com/key</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">value</span>

<span class="w"> </span><span class="c1"># ALB Ingress Controller routing configuration</span>
<span class="w"> </span><span class="nt">alb</span><span class="p">:</span>
Expand Down
7 changes: 6 additions & 1 deletion features/traffic-management/nginx/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3354,7 +3354,8 @@ <h1 id="nginx">Nginx<a class="headerlink" href="#nginx" title="Permanent link">&
<li><code>canary: true</code> to indicate that this is the canary Ingress</li>
<li><code>canary-weight: &lt;num&gt;</code> to indicate what percentage of traffic to send to the canary. If all traffic is routed to the stable Service, this is set to <code>0</code></li>
</ul>
<p>You can provide additional annotations to add to the canary Ingress via the <code>additionalIngressAnnotations</code> field to enable features like routing by header or cookie.</p>
<p>You can provide additional annotations to add to the canary Ingress via the <code>additionalIngressAnnotations</code> or <code>canaryIngressAnnotations</code> field to enable features like routing by header or cookie.
While the former offers the possibility of reusing a common, injectable nginx annotation prefix, the latter allows defining custom full annotations of any group, which may be relevant for other, independent mechanisms, such as a third-party metrics scraper or some other infrastructure integration.</p>
<h2 id="integration-with-argo-rollouts">Integration with Argo Rollouts<a class="headerlink" href="#integration-with-argo-rollouts" title="Permanent link">&para;</a></h2>
<p>There are a couple of required fields in a Rollout to send split traffic between versions using Nginx. Below is an example of a Rollout with those fields:</p>
<div class="highlight"><pre><span></span><code><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">argoproj.io/v1alpha1</span>
Expand All @@ -3377,10 +3378,14 @@ <h2 id="integration-with-argo-rollouts">Integration with Argo Rollouts<a class="
<span class="w"> </span><span class="nt">additionalIngressAnnotations</span><span class="p">:</span><span class="w"> </span><span class="c1"># optional</span>
<span class="w"> </span><span class="nt">canary-by-header</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">X-Canary</span>
<span class="w"> </span><span class="nt">canary-by-header-value</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">iwantsit</span>
<span class="w"> </span><span class="nt">canaryIngressAnnotations</span><span class="p">:</span><span class="w"> </span><span class="c1"># optional</span>
<span class="w"> </span><span class="nt">my-custom-annotation.mygroup.com/key</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">value</span>
</code></pre></div>
<p>The stable Ingress field is a reference to an Ingress in the same namespace of the Rollout. The Rollout requires the primary Ingress routes traffic to the stable Service. The Rollout checks that condition by confirming the Ingress has a backend that matches the Rollout's stableService.</p>
<p>The controller routes traffic to the canary Service by creating a second Ingress with the canary annotations. As the Rollout progresses through the Canary steps, the controller updates the canary Ingress's canary annotations to reflect the desired state of the Rollout enabling traffic splitting between two different versions.</p>
<p>Since the Nginx Ingress controller allows users to configure the annotation prefix used by the Ingress controller, Rollouts can specify the optional <code>annotationPrefix</code> field. The canary Ingress uses that prefix instead of the default <code>nginx.ingress.kubernetes.io</code> if the field set.</p>
<p>If full annotations, <a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/#syntax-and-character-set">as defined in the Kubernetes docs</a>, perhaps from different groups, need to be declared instead, the <code>canaryIngressAnnotations</code> field can be used, which accepts a similar key-value structure, but performs no prefix injection.
Note that, in case of collision with <code>additionalIngressAnnotations</code>, the value under <code>canaryIngressAnnotations</code> prevails.</p>
<h2 id="using-argo-rollouts-with-multiple-nginx-ingress-controllers-per-service">Using Argo Rollouts with multiple NGINX ingress controllers per service<a class="headerlink" href="#using-argo-rollouts-with-multiple-nginx-ingress-controllers-per-service" title="Permanent link">&para;</a></h2>
<p>Starting with v1.5, argo rollouts supports multiple Nginx ingress controllers pointing at one service with canary deployments. If only one ingress controller is needed, utilize the existing key <code>stableIngress</code>. If multiple ingress controllers are needed (e.g., separating internal vs external traffic), use the key <code>stableIngresses</code> instead. It takes an array of string values that are the names of the ingress controllers. Canary steps are applied identically across all ingress controllers.</p>
<h2 id="using-argo-rollouts-with-custom-nginx-ingress-controller-names">Using Argo Rollouts with custom NGINX ingress controller names<a class="headerlink" href="#using-argo-rollouts-with-custom-nginx-ingress-controller-names" title="Permanent link">&para;</a></h2>
Expand Down
2 changes: 1 addition & 1 deletion search/search_index.json

Large diffs are not rendered by default.

Loading

0 comments on commit 2b2a89b

Please sign in to comment.