Skip to content

Commit

Permalink
Merge branch 'master' of github.com:argoproj/argo-rollouts into attes…
Browse files Browse the repository at this point in the history
…tation

Signed-off-by: zachaller <[email protected]>
  • Loading branch information
zachaller committed Jun 14, 2023
2 parents 9779946 + 9d98d14 commit 0f2826a
Show file tree
Hide file tree
Showing 43 changed files with 2,154 additions and 611 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/image-reuse.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ jobs:
go-version: ${{ inputs.go-version }}

- name: Install cosign
uses: sigstore/cosign-installer@204a51a57a74d190b284a0ce69b44bc37201f343 # v3.0.3
uses: sigstore/cosign-installer@dd6b2e2b610a11fd73dd187a43d57cc1394e35f9 # v3.0.5
with:
cosign-release: 'v2.0.2'

Expand Down Expand Up @@ -130,7 +130,7 @@ jobs:

- name: Build and push container image
id: image
uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 #v4.0.0
uses: docker/build-push-action@2eb1c1961a95fc15694676618e422e8ba1d63825 #v4.1.1
with:
context: .
platforms: ${{ inputs.platforms }}
Expand Down
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,17 @@

<a name="v1.5.1"></a>
## [v1.5.1](https://github.com/argoproj/argo-rollouts/compare/v1.5.0...v1.5.1) (2023-05-24)

### Ci

* use keyless signing for main and release branches ([#2783](https://github.com/argoproj/argo-rollouts/issues/2783))

### Fix

* make new alb fullName field optional for backward compatability ([#2806](https://github.com/argoproj/argo-rollouts/issues/2806))
* properly wrap Datadog API v2 request body ([#2771](https://github.com/argoproj/argo-rollouts/issues/2771)) ([#2775](https://github.com/argoproj/argo-rollouts/issues/2775))


<a name="v1.5.0"></a>
## [v1.5.0](https://github.com/argoproj/argo-rollouts/compare/v1.5.0-rc1...v1.5.0) (2023-05-05)

Expand Down
1 change: 1 addition & 0 deletions USERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,4 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit
1. [Ubie](https://ubie.life/)
1. [VISITS Technologies](https://visits.world/en)
1. [Yotpo](https://www.yotpo.com/)
1. [VGS](https://www.vgs.io)
2 changes: 2 additions & 0 deletions docs/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ cd ~/go/src/github.com/argoproj/argo-rollouts
go run ./cmd/rollouts-controller/main.go
```

When running locally it will connect to whatever kubernetes cluster you have configured in your kubeconfig. You will need to make sure to install the Argo Rollout CRDs into your local cluster, and have the `argo-rollouts` namespace.

## Running Unit Tests

To run unit tests:
Expand Down
5 changes: 2 additions & 3 deletions docs/analysis/datadog.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,13 @@ spec:
apiVersion: v2
interval: 5m
query: |
sum:requests.error.count{service:{{args.service-name}}} /
sum:requests.request.count{service:{{args.service-name}}}
sum:requests.error.rate{service:{{args.service-name}}}
```
The field `apiVersion` refers to the API version of Datadog (v1 or v2). Default value is `v1` if this is omitted.

!!! note
Datadog is moving away from the legacy v1 API. Rate limits imposed by Datadog are therefore stricter when using v1. It is recommended to switch to v2 soon. If you switch to v2, you will not need to change any other field aside from `apiVersion`.
Datadog is moving away from the legacy v1 API. Rate limits imposed by Datadog are therefore stricter when using v1. It is recommended to switch to v2 soon. If you switch to v2, you will not be able to use formulas (operations between individual queries).

Datadog api and app tokens can be configured in a kubernetes secret in argo-rollouts namespace.

Expand Down
3 changes: 2 additions & 1 deletion docs/analysis/plugins.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Metric Plugins

!!! important Available since v1.5 - Status: Alpha
!!! important
Available since v1.5 - Status: Alpha

Argo Rollouts supports getting analysis metrics via 3rd party plugin system. This allows users to extend the capabilities of Rollouts
to support metric providers that are not natively supported. Rollout's uses a plugin library called
Expand Down
7 changes: 6 additions & 1 deletion docs/analysis/prometheus.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ See the [Analysis Overview page](../../features/analysis) for more details on th
## Utilizing Amazon Managed Prometheus
Amazon Managed Prometheus can be used as the prometheus data source for analysis. In order to do this the namespace where you analysis is running will have to have the appropriate [IRSA attached](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-ingest-metrics-new-Prometheus.html#AMP-onboard-new-Prometheus-IRSA) to allow for prometheus queries. Once you ensure the proper permissions are in place to access AMP, you can use an AMP workspace url in your ```provider``` block:
Amazon Managed Prometheus can be used as the prometheus data source for analysis. In order to do this the namespace where your analysis is running will have to have the appropriate [IRSA attached](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-ingest-metrics-new-Prometheus.html#AMP-onboard-new-Prometheus-IRSA) to allow for prometheus queries. Once you ensure the proper permissions are in place to access AMP, you can use an AMP workspace url in your ```provider``` block and add a SigV4 config for Sigv4 signing:

```yaml
provider:
Expand All @@ -49,6 +49,11 @@ provider:
sum(irate(
istio_requests_total{reporter="source",destination_service=~"{{args.service-name}}"}[5m]
))
authentication:
sigv4:
region: $REGION
profile: $PROFILE
roleArn: $ROLEARN
```

# Additional Metadata
Expand Down
Binary file added docs/contributing-assets/plugin-loading.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
57 changes: 57 additions & 0 deletions docs/features/kustomize/rollout_cr_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -4259,6 +4259,25 @@
"address": {
"type": "string"
},
"authentication": {
"properties": {
"sigv4": {
"properties": {
"profile": {
"type": "string"
},
"region": {
"type": "string"
},
"roleArn": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"query": {
"type": "string"
}
Expand Down Expand Up @@ -8630,6 +8649,25 @@
"address": {
"type": "string"
},
"authentication": {
"properties": {
"sigv4": {
"properties": {
"profile": {
"type": "string"
},
"region": {
"type": "string"
},
"roleArn": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"query": {
"type": "string"
}
Expand Down Expand Up @@ -13001,6 +13039,25 @@
"address": {
"type": "string"
},
"authentication": {
"properties": {
"sigv4": {
"properties": {
"profile": {
"type": "string"
},
"region": {
"type": "string"
},
"roleArn": {
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"query": {
"type": "string"
}
Expand Down
16 changes: 14 additions & 2 deletions docs/features/specification.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,18 @@ spec:
requiredDuringSchedulingIgnoredDuringExecution: {}
preferredDuringSchedulingIgnoredDuringExecution:
weight: 1 # Between 1 - 100

# activeMetadata will be merged and updated in-place into the ReplicaSet's spec.template.metadata
# of the active pods. +optional
activeMetadata:
labels:
role: active

# Metadata which will be attached to the preview pods only during their preview phase.
# +optional
previewMetadata:
labels:
role: preview

# Canary update strategy
canary:
Expand Down Expand Up @@ -276,8 +288,8 @@ spec:
matchTrafficWeight: true

# Sets header based route with specified header values
# Setting header based route will send all 100 traffic to the canary for the requests
# O with a specified header, in this case request header "version":"2"
# Setting header based route will send all traffic to the canary for the requests
# with a specified header, in this case request header "version":"2"
# (supported only with trafficRouting, for Istio only at the moment)
- setHeaderRoute:
# Name of the route that will be created by argo rollouts this must also be configured
Expand Down
21 changes: 21 additions & 0 deletions docs/features/traffic-management/google-cloud.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Google Cloud

With the introduction of the Kubernetes Gateway API it is now possible to use Argo Rollouts with all compliant implementations that support it. The integration is available with the [Argo Rollouts Gateway API plugin](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/) currently hosted in Argo Labs.

Useful resources:

* [The Gateway API specification](https://gateway-api.sigs.k8s.io/)
* [Support of the Gateway API in Google Cloud](https://cloud.google.com/kubernetes-engine/docs/concepts/gateway-api)
* [Argo Rollouts Plugin capabilities](../plugins/)
* [Plugin for the Gateway API](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi)

The process involves the following steps:

1. Creating a Kubernetes cluster with support for the Gateway API in Google Cloud
1. Creating a Load balancer that is managed by the Gateway API in Google Cloud
1. Installing Argo Rollouts + gateway API plugin in the cluster
1. Defining a Rollout that takes advantage of the plugin

For a full application that includes all manifests see the [plugin example](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/tree/main/examples/google-cloud).


5 changes: 4 additions & 1 deletion docs/features/traffic-management/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,15 @@ Service Meshes fill this missing functionality in Kubernetes. They introduce new

## How does Argo Rollouts enable traffic management?

Argo Rollouts enables traffic management by manipulating the Service Mesh resources to match the intent of the Rollout. Argo Rollouts currently supports the following service meshes:
Argo Rollouts enables traffic management by manipulating the Service Mesh resources to match the intent of the Rollout. Argo Rollouts currently supports the following traffic providers:

- [AWS ALB Ingress Controller](alb.md)
- [Ambassador Edge Stack](ambassador.md)
- [Apache APISIX](apisix.md)
- [Google Cloud](google-cloud.md)
- [Gateway API](plugins.md)
- [Istio](istio.md)
- [Kong Ingress](kong.md)
- [Nginx Ingress Controller](nginx.md)
- [Service Mesh Interface (SMI)](smi.md)
- [Traefik Proxy](traefik.md)
Expand Down
22 changes: 22 additions & 0 deletions docs/features/traffic-management/kong.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Kong Ingress

With the introduction of the Kubernetes Gateway API it is now possible to use Argo Rollouts with all compliant implementations that support it. The integration is available with the [Argo Rollouts Gateway API plugin](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/) currently hosted in Argo Labs.

Useful resources:

* [The Gateway API specification](https://gateway-api.sigs.k8s.io/)
* [Support of the Gateway API in Kong](https://docs.konghq.com/kubernetes-ingress-controller/latest/concepts/gateway-api/)
* [Argo Rollouts Plugin capabilities](../plugins/)
* [Plugin for the Gateway API](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi)

The process involves the following steps:

1. Installing the Gateway API CRDs in your cluster
1. Installing Kong and enabling the Gateway API support feature
1. Creating a GatewayClass and Gateway resources
1. Installing Argo Rollouts + gateway API plugin in the cluster
1. Defining a Rollout that takes advantage of the plugin

For a full application that includes all manifests see the [plugin example](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/tree/main/examples/kong).


8 changes: 6 additions & 2 deletions docs/features/traffic-management/plugins.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Traffic Router Plugins

!!! important Available since v1.5 - Status: Alpha
!!! important
Available since v1.5 - Status: Alpha

Argo Rollouts supports getting analysis metrics via 3rd party plugin system. This allows users to extend the capabilities of Rollouts
to support metric providers that are not natively supported. Rollout's uses a plugin library called
Expand Down Expand Up @@ -72,5 +73,8 @@ responsibility of the Argo Rollouts administrator to define the plugin installat
* This is just a sample plugin that can be used as a starting point for creating your own plugin.
It is not meant to be used in production. It is based on the built-in prometheus provider.

#### [rollouts-plugin-trafficrouter-contour](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-contour)
#### [Contour](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-contour)
* This is a plugin for support Contour.

#### [Gateway API](https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-gatewayapi/)
* Provide support for Gateway API, which includes Kuma, Traefix, cilium, Contour, GloodMesh, HAProxy, and [many others](https://gateway-api.sigs.k8s.io/implementations/#implementation-status).
9 changes: 6 additions & 3 deletions docs/getting-started/appmesh/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ respectively. In addition, there is a virtual-service named `rollout-demo-vsvc`
virtual-router CR named `rollout-demo-vrouter`. This virtual-router need have at least one route with action to forward
traffic to the canary and stable virtual-nodes. Initially weight for canary is set to 0% while for stable it is 100%.
During rollout, controller will modify the weights on route(s) based on the configuraiton defined in
`steps[N].setWeight`.
`steps[N].setWeight`.

The canary and stable services are configured to be headless. This is necessary to allow App Mesh to properly handle
conneciton pooling as pods are reassigned from canary to stable.

To summarize, run the following commands to deploy a service:

Expand All @@ -69,8 +72,8 @@ To summarize, run the following commands to deploy a service:
* A rollout

```shell
kubectl apply -f https://raw.githubusercontent.com/argoproj/argo-rollouts/master/docs/getting-started/appmesh/canary-service.yaml
kubectl apply -f https://raw.githubusercontent.com/argoproj/argo-rollouts/master/docs/getting-started/appmesh/canary-rollout.yaml
kubectl apply -f https://raw.githubusercontent.com/argoproj/argo-rollouts/master/examples/appmesh/canary-service.yaml
kubectl apply -f https://raw.githubusercontent.com/argoproj/argo-rollouts/master/examples/appmesh/canary-rollout.yaml
```
## 2. Verify service

Expand Down
6 changes: 6 additions & 0 deletions docs/plugins.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ Argo Rollouts plugins depend on hashicorp's [go-plugin](https://github.com/hashi
provides a way for a plugin to be compiled as a standalone executable and then loaded by the rollouts controller at runtime.
This works by having the plugin executable act as a rpc server and the rollouts controller act as a client. The plugin executable
is started by the rollouts controller and is a long-lived process and that the rollouts controller connects to over a unix socket.

Here is an overview of how plugins are loaded:

[![Loading of plugins](contributing-assets/plugin-loading.png)](contributing-assets/plugin-loading.png)


The communication protocol uses golang built in net/rpc library so plugins have to be written in golang.

## Plugin Repository
Expand Down
1 change: 0 additions & 1 deletion docs/releasing.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ Example:
Once the script is executed successfully, a GitHub workflow will start
execution. You can follow its progress under the [Actions](https://github.com/argoproj/argo-rollouts/actions/workflows/release.yaml) tab, the name of the action is `Release`.


1. When the action completes, visit the generated draft [Github releases](https://github.com/argoproj/argo-rollouts/releases) and enter the details about the release:
* Getting started (copy from previous release and new version)
* Changelog
Expand Down
Loading

0 comments on commit 0f2826a

Please sign in to comment.