Compare commits
158 Commits
Author | SHA1 | Date |
---|---|---|
|
67d19e100f | |
|
b579b3d4d9 | |
|
b3447cbf96 | |
|
a9e566ea4f | |
|
87562252b3 | |
|
5e44d4b461 | |
|
401a5fab7e | |
|
d6d63f3330 | |
|
d4a935068d | |
|
1e03da7841 | |
|
848c9fa729 | |
|
caf2e6f4d2 | |
|
6dfe280d14 | |
|
468cfdf3d4 | |
|
92df0a35d2 | |
|
88ea0c519f | |
|
e2cdaf5f11 | |
|
f17316b9ac | |
|
c179d94d5a | |
|
4025384e2e | |
|
02cf24ebb3 | |
|
8668348cd4 | |
|
5ccf0a71e0 | |
|
3f677349be | |
|
db79990787 | |
|
599e7fa54e | |
|
473c14e360 | |
|
0a15908d66 | |
|
ccf0be9ccc | |
|
6e7560ad8d | |
|
8f536b4beb | |
|
2e31d0f550 | |
|
b32ed29b43 | |
|
287acaa919 | |
|
e9ac866296 | |
|
c44c9d2560 | |
|
16edf3a9b5 | |
|
80493f2018 | |
|
7ea5086021 | |
|
94376e6ed3 | |
|
06e887dcbf | |
|
6f391aaf03 | |
|
9b8655c72c | |
|
b296d31a85 | |
|
37b9d0bee1 | |
|
e7e512a606 | |
|
c98bc84159 | |
|
d2d958d1d2 | |
|
bd7a37c607 | |
|
39665b087c | |
|
5fe7bb8963 | |
|
bd6ec088f4 | |
|
2d24489418 | |
|
3427b15786 | |
|
2583845f27 | |
|
f4f7eabd6b | |
|
963e4f291b | |
|
38c3ff3584 | |
|
88f902cfcb | |
|
d49ab7eb0f | |
|
5bbc3723e2 | |
|
2b653644c0 | |
|
88e408d957 | |
|
507dc0c233 | |
|
659c13934f | |
|
933b7b3b1a | |
|
f4289b70eb | |
|
37368106ab | |
|
aa243dbba9 | |
|
7c0f995d8c | |
|
9e71a87087 | |
|
48377540ec | |
|
451ea40086 | |
|
b69c07cdf7 | |
|
2213b07592 | |
|
e033914389 | |
|
e876f43be9 | |
|
7b9279c5ae | |
|
6fbb625bdf | |
|
3cb61fa80a | |
|
444094a1ca | |
|
77a139861c | |
|
5e6936e06f | |
|
6e43cff7b2 | |
|
e4e1942a0c | |
|
494bfd909e | |
|
d35fcb5b4c | |
|
1672c67065 | |
|
445e1c2b78 | |
|
cb7c0fc7c8 | |
|
76b3898c04 | |
|
a748f05fde | |
|
d8994c0b19 | |
|
a312e28021 | |
|
44eee2ec3b | |
|
a9e10fb73e | |
|
420aacb133 | |
|
cbf36efaf8 | |
|
c8f165c1ca | |
|
70a946d56e | |
|
1d47a97cd3 | |
|
fa17918a9e | |
|
c3407844ca | |
|
ea914af830 | |
|
6761843977 | |
|
f829ae7984 | |
|
db8e065044 | |
|
42117f9af4 | |
|
7695f8a8de | |
|
4ecce02e70 | |
|
4580c2d1e2 | |
|
73fda66371 | |
|
38ed49959b | |
|
4f5d93bbe6 | |
|
723e81ca69 | |
|
236f878447 | |
|
dfa0eaef7c | |
|
78682686b9 | |
|
c25954dccf | |
|
f237af07be | |
|
b101632af0 | |
|
b6a9bec292 | |
|
e225d88da8 | |
|
086d4cb755 | |
|
8b5ecaed16 | |
|
7d02604f6d | |
|
c10bf66176 | |
|
99903543ee | |
|
5905525b4a | |
|
d6054867c6 | |
|
00210827b7 | |
|
ba05acf4fd | |
|
effef4477a | |
|
50cf6d7de9 | |
|
5c1a2a9000 | |
|
23c40c15ad | |
|
dbf5588e7e | |
|
00b57266b9 | |
|
efd3008a34 | |
|
c0ca5301bf | |
|
07c1028545 | |
|
1874afa10d | |
|
dc2e00e3a0 | |
|
097f5be132 | |
|
fde9cdeba9 | |
|
5904f6481f | |
|
6ca92be1fe | |
|
bdbb0f17c0 | |
|
8a800a8717 | |
|
0eec0d89f8 | |
|
707bd9f9eb | |
|
e808d6ef62 | |
|
e5a9307958 | |
|
c348ecf270 | |
|
6858812261 | |
|
25e2b535db | |
|
21d57165b9 | |
|
37193bf535 |
|
@ -24,7 +24,7 @@ jobs:
|
|||
with:
|
||||
python-version: 3.x
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5.1.0
|
||||
uses: actions/setup-go@v5.4.0
|
||||
with:
|
||||
go-version: '1.23'
|
||||
- name: build
|
||||
|
|
|
@ -27,22 +27,22 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5.1.0
|
||||
uses: actions/setup-go@v5.4.0
|
||||
with:
|
||||
go-version: ${{ env.GOLANG_VERSION }}
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
- name: Run golangci-lint
|
||||
uses: golangci/golangci-lint-action@v6
|
||||
uses: golangci/golangci-lint-action@v8
|
||||
with:
|
||||
version: v1.61.0
|
||||
version: v2.1.6
|
||||
args: --timeout 6m
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5.1.0
|
||||
uses: actions/setup-go@v5.4.0
|
||||
with:
|
||||
go-version: ${{ env.GOLANG_VERSION }}
|
||||
id: go
|
||||
|
@ -72,7 +72,7 @@ jobs:
|
|||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup Golang
|
||||
uses: actions/setup-go@v5.1.0
|
||||
uses: actions/setup-go@v5.4.0
|
||||
with:
|
||||
go-version: ${{ env.GOLANG_VERSION }}
|
||||
# k8s codegen generates files into GOPATH location instead of the GitHub git checkout location
|
||||
|
|
|
@ -69,17 +69,17 @@ jobs:
|
|||
if: ${{ github.ref_type != 'tag'}}
|
||||
|
||||
- name: Setup Golang
|
||||
uses: actions/setup-go@v5.1.0 # v3.5.0
|
||||
uses: actions/setup-go@v5.4.0 # v3.5.0
|
||||
with:
|
||||
go-version: ${{ inputs.go-version }}
|
||||
|
||||
- name: Install cosign
|
||||
uses: sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da # v3.7.0
|
||||
uses: sigstore/cosign-installer@3454372f43399081ed03b604cb2d021dabca52bb # v3.8.2
|
||||
with:
|
||||
cosign-release: 'v2.2.0'
|
||||
|
||||
- uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0
|
||||
- uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1
|
||||
- uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
|
||||
- uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
|
||||
|
||||
- name: Setup tags for container image as a CSV type
|
||||
run: |
|
||||
|
@ -106,7 +106,7 @@ jobs:
|
|||
echo 'EOF' >> $GITHUB_ENV
|
||||
|
||||
- name: Login to Quay.io
|
||||
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
||||
with:
|
||||
registry: quay.io
|
||||
username: ${{ secrets.quay_username }}
|
||||
|
@ -114,7 +114,7 @@ jobs:
|
|||
if: ${{ inputs.quay_image_name && inputs.push }}
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ secrets.ghcr_username }}
|
||||
|
@ -122,7 +122,7 @@ jobs:
|
|||
if: ${{ inputs.ghcr_image_name && inputs.push }}
|
||||
|
||||
- name: Login to dockerhub Container Registry
|
||||
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
||||
with:
|
||||
username: ${{ secrets.docker_username }}
|
||||
password: ${{ secrets.docker_password }}
|
||||
|
@ -130,7 +130,7 @@ jobs:
|
|||
|
||||
- name: Build and push container image
|
||||
id: image
|
||||
uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 #v6.10.0
|
||||
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 #v6.18.0
|
||||
with:
|
||||
context: .
|
||||
platforms: ${{ inputs.platforms }}
|
||||
|
|
|
@ -51,7 +51,7 @@ jobs:
|
|||
id-token: write # for creating OIDC tokens for signing.
|
||||
packages: write # for uploading attestations. (https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#known-issues)
|
||||
# Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator
|
||||
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v2.0.0
|
||||
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v2.1.0
|
||||
with:
|
||||
image: quay.io/argoproj/argo-rollouts
|
||||
digest: ${{ needs.controller-image.outputs.image-digest }}
|
||||
|
@ -67,7 +67,7 @@ jobs:
|
|||
id-token: write # for creating OIDC tokens for signing.
|
||||
packages: write # for uploading attestations. (https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#known-issues)
|
||||
# Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator
|
||||
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v2.0.0
|
||||
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v2.1.0
|
||||
with:
|
||||
image: quay.io/argoproj/kubectl-argo-rollouts
|
||||
digest: ${{ needs.plugin-image.outputs.image-digest }}
|
||||
|
@ -90,15 +90,15 @@ jobs:
|
|||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Setup Golang
|
||||
uses: actions/setup-go@v5.1.0 # v4.0.1
|
||||
uses: actions/setup-go@v5.4.0 # v4.0.1
|
||||
with:
|
||||
go-version: ${{ env.GOLANG_VERSION }}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0
|
||||
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1
|
||||
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
|
||||
|
||||
- name: Generate release artifacts
|
||||
run: |
|
||||
|
@ -107,7 +107,7 @@ jobs:
|
|||
make manifests IMAGE_TAG=${{ github.ref_name }}
|
||||
|
||||
- name: Draft release
|
||||
uses: softprops/action-gh-release@01570a1f39cb168c169c802c3bceb9e93fb10974 # v0.1.15
|
||||
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v0.1.15
|
||||
with:
|
||||
tag_name: ${{ github.event.inputs.tag }}
|
||||
draft: true
|
||||
|
@ -139,7 +139,7 @@ jobs:
|
|||
id-token: write # Needed for provenance signing and ID
|
||||
contents: write # Needed for release uploads
|
||||
# Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator
|
||||
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.0.0
|
||||
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0
|
||||
with:
|
||||
base64-subjects: '${{ needs.release-artifacts.outputs.hashes }}'
|
||||
provenance-name: 'argo-rollouts.intoto.jsonl'
|
||||
|
@ -163,12 +163,12 @@ jobs:
|
|||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Setup Golang
|
||||
uses: actions/setup-go@v5.1.0 # v4.0.0
|
||||
uses: actions/setup-go@v5.4.0 # v4.0.0
|
||||
with:
|
||||
go-version: ${{ env.GOLANG_VERSION }}
|
||||
|
||||
- name: Install cosign
|
||||
uses: sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da # v3.7.0
|
||||
uses: sigstore/cosign-installer@3454372f43399081ed03b604cb2d021dabca52bb # v3.8.2
|
||||
with:
|
||||
cosign-release: 'v2.2.0'
|
||||
|
||||
|
@ -212,7 +212,7 @@ jobs:
|
|||
/tmp/sbom.tar.gz
|
||||
|
||||
- name: Upload SBOM and signature assets
|
||||
uses: softprops/action-gh-release@01570a1f39cb168c169c802c3bceb9e93fb10974 # v0.1.15
|
||||
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v0.1.15
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
|
|
|
@ -19,7 +19,7 @@ jobs:
|
|||
actions: read
|
||||
steps:
|
||||
- name: Download and Extract Artifacts
|
||||
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
|
||||
with:
|
||||
run-id: ${{ github.event.workflow_run.id }}
|
||||
path: artifacts
|
||||
|
|
|
@ -41,7 +41,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5.1.0
|
||||
uses: actions/setup-go@v5.4.0
|
||||
with:
|
||||
go-version: ${{ env.GOLANG_VERSION }}
|
||||
id: go
|
||||
|
@ -91,7 +91,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5.1.0
|
||||
uses: actions/setup-go@v5.4.0
|
||||
with:
|
||||
go-version: '1.23'
|
||||
- uses: actions/checkout@v4
|
||||
|
@ -165,18 +165,18 @@ jobs:
|
|||
- test-e2e
|
||||
steps:
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5.1.0
|
||||
uses: actions/setup-go@v5.4.0
|
||||
with:
|
||||
go-version: ${{ env.GOLANG_VERSION }}
|
||||
id: go
|
||||
- uses: actions/checkout@v4
|
||||
- name: Get e2e code coverage
|
||||
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
|
||||
with:
|
||||
name: coverage-output-e2e
|
||||
path: coverage-output-e2e
|
||||
- name: Get unit test code coverage
|
||||
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
||||
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
|
||||
with:
|
||||
name: coverage-output-unit
|
||||
path: coverage-output-unit
|
||||
|
@ -184,7 +184,7 @@ jobs:
|
|||
run: |
|
||||
go tool covdata textfmt -i=coverage-output-unit/,coverage-output-e2e/ -o full-coverage.out
|
||||
- name: Upload code coverage information to codecov.io
|
||||
uses: codecov/codecov-action@7f8b4b4bde536c465e797be725718b88c5d95e0e # v5.1.1
|
||||
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
|
||||
with:
|
||||
file: full-coverage.out
|
||||
fail_ci_if_error: false
|
||||
|
|
|
@ -2,9 +2,11 @@
|
|||
.idea/
|
||||
.DS_Store
|
||||
dist/
|
||||
github.com/
|
||||
k8s.io/
|
||||
*.iml
|
||||
# delve debug binaries
|
||||
__debug_bin
|
||||
__debug_bin*
|
||||
cmd/**/debug
|
||||
debug.test
|
||||
coverage.out
|
||||
|
@ -19,4 +21,5 @@ server/static/*
|
|||
!server/static/.gitkeep
|
||||
coverage-output-e2e/
|
||||
coverage-output-unit/
|
||||
junit-unit-test.xml
|
||||
junit*
|
||||
|
||||
|
|
|
@ -1,21 +1,41 @@
|
|||
version: "2"
|
||||
run:
|
||||
timeout: 10m
|
||||
modules-download-mode: readonly
|
||||
issues:
|
||||
exclude-dirs:
|
||||
- pkg/client
|
||||
exclude-files:
|
||||
- ".*\\.pb\\.go"
|
||||
linter-settings:
|
||||
goimports:
|
||||
local-prefixes: github.com/argoproj/argo-rollouts
|
||||
timeout: 10m
|
||||
linters:
|
||||
default: none
|
||||
enable:
|
||||
- gofmt
|
||||
- goimports
|
||||
- govet
|
||||
- ineffassign
|
||||
- misspell
|
||||
- unconvert
|
||||
- unused
|
||||
disable-all: true
|
||||
exclusions:
|
||||
generated: lax
|
||||
presets:
|
||||
- comments
|
||||
- common-false-positives
|
||||
- legacy
|
||||
- std-error-handling
|
||||
paths:
|
||||
- .*\.pb\.go
|
||||
- pkg/client
|
||||
- third_party$
|
||||
- builtin$
|
||||
- examples$
|
||||
formatters:
|
||||
enable:
|
||||
- gofmt
|
||||
- goimports
|
||||
settings:
|
||||
goimports:
|
||||
local-prefixes:
|
||||
- github.com/argoproj/argo-rollouts
|
||||
exclusions:
|
||||
generated: lax
|
||||
paths:
|
||||
- .*\.pb\.go
|
||||
- pkg/client
|
||||
- third_party$
|
||||
- builtin$
|
||||
- examples$
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
version: 2
|
||||
formats: all
|
||||
mkdocs:
|
||||
configuration: mkdocs.yml
|
||||
fail_on_warning: false
|
||||
python:
|
||||
install:
|
||||
|
|
297
CHANGELOG.md
297
CHANGELOG.md
|
@ -1,3 +1,299 @@
|
|||
|
||||
<a name="v1.8.3"></a>
|
||||
## [v1.8.3](https://github.com/argoproj/argo-rollouts/compare/v1.8.2...v1.8.3) (2025-05-31)
|
||||
|
||||
### Chore
|
||||
|
||||
* **deps:** bump github.com/golang-jwt/jwt to 4.5.2 ([#4235](https://github.com/argoproj/argo-rollouts/issues/4235)) ([#4236](https://github.com/argoproj/argo-rollouts/issues/4236))
|
||||
* **deps:** bump golang.org/x/oauth2 from 0.24.0 to 0.29.0 to fix CVE-2025-22868 ([#4225](https://github.com/argoproj/argo-rollouts/issues/4225))
|
||||
|
||||
### Docs
|
||||
|
||||
* explain skew policy between the kubectl plugin and the controller ([#4300](https://github.com/argoproj/argo-rollouts/issues/4300))
|
||||
* blue green w/ ALB not supported without downtime ([#4259](https://github.com/argoproj/argo-rollouts/issues/4259))
|
||||
|
||||
### Fix
|
||||
|
||||
* abort scenario where canary/stable service is not provided ([#4299](https://github.com/argoproj/argo-rollouts/issues/4299))
|
||||
* restarts during updates could cause downtime ([#4221](https://github.com/argoproj/argo-rollouts/issues/4221))
|
||||
* **experiments:** fire rollout event on experiment step ([#4124](https://github.com/argoproj/argo-rollouts/issues/4124))
|
||||
* **trafficrouting:** patch VirtualService when there is only one named route ([#4055](https://github.com/argoproj/argo-rollouts/issues/4055))
|
||||
|
||||
|
||||
<a name="v1.8.2"></a>
|
||||
## [v1.8.2](https://github.com/argoproj/argo-rollouts/compare/v1.8.1...v1.8.2) (2025-03-21)
|
||||
|
||||
### Fix
|
||||
|
||||
* Revert "fix(controller): rollout stuck in `Progressing`. fixes [#3988](https://github.com/argoproj/argo-rollouts/issues/3988)" ([#4201](https://github.com/argoproj/argo-rollouts/issues/4201))
|
||||
* **analysis:** prevent promotion on inconclusive background run. Fixes: [#3850](https://github.com/argoproj/argo-rollouts/issues/3850) ([#3873](https://github.com/argoproj/argo-rollouts/issues/3873))
|
||||
|
||||
<a name="v1.8.1"></a>
|
||||
## [v1.8.1](https://github.com/argoproj/argo-rollouts/compare/v1.8.0...v1.8.1) (2025-03-15)
|
||||
|
||||
### Chore
|
||||
|
||||
* **deps:** Updated go version in go.mod file ([#4182](https://github.com/argoproj/argo-rollouts/issues/4182))
|
||||
|
||||
### Docs
|
||||
|
||||
* new syntax for docs conf ([#4012](https://github.com/argoproj/argo-rollouts/issues/4012))
|
||||
|
||||
### Fix
|
||||
|
||||
* guardrail to not overload stable replicaset ([#3878](https://github.com/argoproj/argo-rollouts/issues/3878))
|
||||
* redo PR 3639 ([#4114](https://github.com/argoproj/argo-rollouts/issues/4114))
|
||||
* check ephemeral metadata is set before delete ([#4089](https://github.com/argoproj/argo-rollouts/issues/4089))
|
||||
* correct typo in linter settings key name ([#4094](https://github.com/argoproj/argo-rollouts/issues/4094))
|
||||
* loop when paused and completed ([#4134](https://github.com/argoproj/argo-rollouts/issues/4134))
|
||||
* nil pointer on logging ([#4127](https://github.com/argoproj/argo-rollouts/issues/4127))
|
||||
* Upgrade go-retryablehttp to v0.7.7 ([#3743](https://github.com/argoproj/argo-rollouts/issues/3743))
|
||||
* **controller:** rollout stuck in `Progressing`. fixes [#3988](https://github.com/argoproj/argo-rollouts/issues/3988) ([#4072](https://github.com/argoproj/argo-rollouts/issues/4072))
|
||||
* **dashboard:** Revert react-scripts upgrade due to performance regression. Fixes [#4122](https://github.com/argoproj/argo-rollouts/issues/4122) ([#4166](https://github.com/argoproj/argo-rollouts/issues/4166))
|
||||
* **metricprovider:** not require address in kubernetes secret for Datadog. Fixes [#4103](https://github.com/argoproj/argo-rollouts/issues/4103) ([#4145](https://github.com/argoproj/argo-rollouts/issues/4145))
|
||||
|
||||
|
||||
<a name="v1.8.0"></a>
|
||||
## [v1.8.0](https://github.com/argoproj/argo-rollouts/compare/v1.8.0-rc2...v1.8.0) (2024-12-17)
|
||||
|
||||
|
||||
<a name="v1.8.0-rc2"></a>
|
||||
## [v1.8.0-rc2](https://github.com/argoproj/argo-rollouts/compare/v1.8.0-rc1...v1.8.0-rc2) (2024-12-17)
|
||||
|
||||
### Ci
|
||||
|
||||
* add testing for k8s 1.30 and 1.31 ([#3858](https://github.com/argoproj/argo-rollouts/issues/3858))
|
||||
|
||||
### Docs
|
||||
|
||||
* **analysis:** add docs for consecutiveSuccessLimit ([#3996](https://github.com/argoproj/argo-rollouts/issues/3996))
|
||||
|
||||
### Fix
|
||||
|
||||
* don't over reconcile on error ([#4005](https://github.com/argoproj/argo-rollouts/issues/4005))
|
||||
* remove ReplicaSet write-back ([#4044](https://github.com/argoproj/argo-rollouts/issues/4044))
|
||||
* **controller:** Fixed broken pprof links [#4037](https://github.com/argoproj/argo-rollouts/issues/4037) ([#4038](https://github.com/argoproj/argo-rollouts/issues/4038))
|
||||
* **experiments:** move recorder event to after experiment reconciliation, fixes [#4021](https://github.com/argoproj/argo-rollouts/issues/4021) ([#4022](https://github.com/argoproj/argo-rollouts/issues/4022))
|
||||
|
||||
|
||||
<a name="v1.8.0-rc1"></a>
|
||||
## [v1.8.0-rc1](https://github.com/argoproj/argo-rollouts/compare/v1.7.2...v1.8.0-rc1) (2024-12-06)
|
||||
|
||||
### Chore
|
||||
|
||||
* update the link of DCO in PR template ([#3944](https://github.com/argoproj/argo-rollouts/issues/3944))
|
||||
* remove some k8s e2e test versions ([#3495](https://github.com/argoproj/argo-rollouts/issues/3495))
|
||||
* upgrade react-scripts ([#3584](https://github.com/argoproj/argo-rollouts/issues/3584))
|
||||
* update golangci-lint to v1.61.0 ([#3857](https://github.com/argoproj/argo-rollouts/issues/3857))
|
||||
* fix and add more cli usage case ([#3592](https://github.com/argoproj/argo-rollouts/issues/3592))
|
||||
* don't fail code-cov on failure ([#3661](https://github.com/argoproj/argo-rollouts/issues/3661))
|
||||
* add example for updating all container images in set command ([#3667](https://github.com/argoproj/argo-rollouts/issues/3667))
|
||||
* add codecov token ([#3623](https://github.com/argoproj/argo-rollouts/issues/3623))
|
||||
* code coverage for e2e ([#3740](https://github.com/argoproj/argo-rollouts/issues/3740))
|
||||
* use codecov config and only send merged coverage file ([#3751](https://github.com/argoproj/argo-rollouts/issues/3751))
|
||||
* Add Cloudflare to users ([#3768](https://github.com/argoproj/argo-rollouts/issues/3768))
|
||||
* capitalize AS in Dockerfile ([#3781](https://github.com/argoproj/argo-rollouts/issues/3781))
|
||||
* move ReplicaSet creation and Rollout validation earlier during the reconciliation process. ([#3657](https://github.com/argoproj/argo-rollouts/issues/3657))
|
||||
* Add Trustly to USERS.md ([#3837](https://github.com/argoproj/argo-rollouts/issues/3837))
|
||||
* add step plugin proposal ([#3480](https://github.com/argoproj/argo-rollouts/issues/3480))
|
||||
* **deps:** bump docker/setup-buildx-action from 3.4.0 to 3.5.0 ([#3738](https://github.com/argoproj/argo-rollouts/issues/3738))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.42.2 to 1.42.3 ([#3923](https://github.com/argoproj/argo-rollouts/issues/3923))
|
||||
* **deps:** bump github.com/newrelic/newrelic-client-go/v2 from 2.48.2 to 2.50.1 ([#3924](https://github.com/argoproj/argo-rollouts/issues/3924))
|
||||
* **deps:** bump softprops/action-gh-release from 2.0.8 to 2.0.9 ([#3928](https://github.com/argoproj/argo-rollouts/issues/3928))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.38 to 1.28.1 ([#3917](https://github.com/argoproj/argo-rollouts/issues/3917))
|
||||
* **deps:** bump github.com/hashicorp/go-plugin from 1.6.1 to 1.6.2 ([#3908](https://github.com/argoproj/argo-rollouts/issues/3908))
|
||||
* **deps:** bump actions/setup-go from 5.0.2 to 5.1.0 ([#3912](https://github.com/argoproj/argo-rollouts/issues/3912))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.32.2 to 1.32.3 ([#3919](https://github.com/argoproj/argo-rollouts/issues/3919))
|
||||
* **deps:** bump github.com/newrelic/newrelic-client-go/v2 from 2.50.1 to 2.51.3 ([#3939](https://github.com/argoproj/argo-rollouts/issues/3939))
|
||||
* **deps:** bump google.golang.org/grpc from 1.66.2 to 1.67.1 ([#3903](https://github.com/argoproj/argo-rollouts/issues/3903))
|
||||
* **deps:** bump docker/setup-buildx-action from 3.6.1 to 3.7.1 ([#3876](https://github.com/argoproj/argo-rollouts/issues/3876))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.8 to 1.42.2 ([#3901](https://github.com/argoproj/argo-rollouts/issues/3901))
|
||||
* **deps:** bump github.com/aws/smithy-go from 1.21.0 to 1.22.0 ([#3885](https://github.com/argoproj/argo-rollouts/issues/3885))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.31.0 to 1.32.2 ([#3886](https://github.com/argoproj/argo-rollouts/issues/3886))
|
||||
* **deps:** bump google.golang.org/protobuf from 1.34.2 to 1.35.1 ([#3887](https://github.com/argoproj/argo-rollouts/issues/3887))
|
||||
* **deps:** bump golang.org/x/oauth2 from 0.22.0 to 0.23.0 ([#3841](https://github.com/argoproj/argo-rollouts/issues/3841))
|
||||
* **deps:** bump codecov/codecov-action from 4.5.0 to 4.6.0 ([#3865](https://github.com/argoproj/argo-rollouts/issues/3865))
|
||||
* **deps:** bump github.com/newrelic/newrelic-client-go/v2 from 2.45.0 to 2.48.2 ([#3874](https://github.com/argoproj/argo-rollouts/issues/3874))
|
||||
* **deps:** bump sigstore/cosign-installer from 3.6.0 to 3.7.0 ([#3875](https://github.com/argoproj/argo-rollouts/issues/3875))
|
||||
* **deps:** bump docker/build-push-action from 6.8.0 to 6.9.0 ([#3863](https://github.com/argoproj/argo-rollouts/issues/3863))
|
||||
* **deps:** bump docker/build-push-action from 6.7.0 to 6.8.0 ([#3860](https://github.com/argoproj/argo-rollouts/issues/3860))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.33 to 1.27.38 ([#3851](https://github.com/argoproj/argo-rollouts/issues/3851))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.5 to 1.40.8 ([#3838](https://github.com/argoproj/argo-rollouts/issues/3838))
|
||||
* **deps:** bump github.com/newrelic/newrelic-client-go/v2 from 2.43.1 to 2.45.0 ([#3829](https://github.com/argoproj/argo-rollouts/issues/3829))
|
||||
* **deps:** bump google.golang.org/grpc from 1.65.0 to 1.66.2 ([#3831](https://github.com/argoproj/argo-rollouts/issues/3831))
|
||||
* **deps:** bump softprops/action-gh-release from 2.0.9 to 2.1.0 ([#3938](https://github.com/argoproj/argo-rollouts/issues/3938))
|
||||
* **deps:** bump peter-evans/create-pull-request from 6 to 7 ([#3819](https://github.com/argoproj/argo-rollouts/issues/3819))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.31 to 1.27.33 ([#3822](https://github.com/argoproj/argo-rollouts/issues/3822))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.30 to 1.27.31 ([#3807](https://github.com/argoproj/argo-rollouts/issues/3807))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.3 to 1.40.5 ([#3808](https://github.com/argoproj/argo-rollouts/issues/3808))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.27 to 1.27.30 ([#3804](https://github.com/argoproj/argo-rollouts/issues/3804))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.42.3 to 1.42.4 ([#3935](https://github.com/argoproj/argo-rollouts/issues/3935))
|
||||
* **deps:** bump github.com/newrelic/newrelic-client-go/v2 from 2.41.2 to 2.43.1 ([#3793](https://github.com/argoproj/argo-rollouts/issues/3793))
|
||||
* **deps:** bump github.com/aws/smithy-go from 1.20.3 to 1.20.4 ([#3794](https://github.com/argoproj/argo-rollouts/issues/3794))
|
||||
* **deps:** bump docker/build-push-action from 6.6.1 to 6.7.0 ([#3791](https://github.com/argoproj/argo-rollouts/issues/3791))
|
||||
* **deps:** bump github.com/influxdata/influxdb-client-go/v2 from 2.13.0 to 2.14.0 ([#3786](https://github.com/argoproj/argo-rollouts/issues/3786))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.32.3 to 1.32.4 ([#3934](https://github.com/argoproj/argo-rollouts/issues/3934))
|
||||
* **deps:** bump docker/build-push-action from 6.5.0 to 6.6.1 ([#3776](https://github.com/argoproj/argo-rollouts/issues/3776))
|
||||
* **deps:** bump sigstore/cosign-installer from 3.5.0 to 3.6.0 ([#3777](https://github.com/argoproj/argo-rollouts/issues/3777))
|
||||
* **deps:** bump golang.org/x/oauth2 from 0.21.0 to 0.22.0 ([#3766](https://github.com/argoproj/argo-rollouts/issues/3766))
|
||||
* **deps:** bump docker/build-push-action from 6.9.0 to 6.10.0 ([#3963](https://github.com/argoproj/argo-rollouts/issues/3963))
|
||||
* **deps:** bump docker/setup-buildx-action from 3.5.0 to 3.6.1 ([#3755](https://github.com/argoproj/argo-rollouts/issues/3755))
|
||||
* **deps:** bump google.golang.org/protobuf from 1.35.1 to 1.35.2 ([#3950](https://github.com/argoproj/argo-rollouts/issues/3950))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.26 to 1.27.27 ([#3732](https://github.com/argoproj/argo-rollouts/issues/3732))
|
||||
* **deps:** bump softprops/action-gh-release from 2.0.6 to 2.0.8 ([#3733](https://github.com/argoproj/argo-rollouts/issues/3733))
|
||||
* **deps:** bump golang.org/x/oauth2 from 0.23.0 to 0.24.0 ([#3949](https://github.com/argoproj/argo-rollouts/issues/3949))
|
||||
* **deps:** bump docker/setup-qemu-action from 3.1.0 to 3.2.0 ([#3736](https://github.com/argoproj/argo-rollouts/issues/3736))
|
||||
* **deps:** bump docker/build-push-action from 6.4.0 to 6.5.0 ([#3737](https://github.com/argoproj/argo-rollouts/issues/3737))
|
||||
* **deps:** bump codecov/codecov-action from 4.6.0 to 5.0.7 ([#3961](https://github.com/argoproj/argo-rollouts/issues/3961))
|
||||
* **deps:** bump docker/login-action from 3.2.0 to 3.3.0 ([#3739](https://github.com/argoproj/argo-rollouts/issues/3739))
|
||||
* **deps:** bump docker/build-push-action from 6.3.0 to 6.4.0 ([#3723](https://github.com/argoproj/argo-rollouts/issues/3723))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.24 to 1.27.26 ([#3717](https://github.com/argoproj/argo-rollouts/issues/3717))
|
||||
* **deps:** bump actions/setup-go from 5.0.1 to 5.0.2 ([#3716](https://github.com/argoproj/argo-rollouts/issues/3716))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.40.1 to 1.40.3 ([#3719](https://github.com/argoproj/argo-rollouts/issues/3719))
|
||||
* **deps:** bump docker/setup-qemu-action from 3.0.0 to 3.1.0 ([#3696](https://github.com/argoproj/argo-rollouts/issues/3696))
|
||||
* **deps:** bump docker/build-push-action from 6.2.0 to 6.3.0 ([#3697](https://github.com/argoproj/argo-rollouts/issues/3697))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.23 to 1.27.24 ([#3698](https://github.com/argoproj/argo-rollouts/issues/3698))
|
||||
* **deps:** bump docker/setup-buildx-action from 3.3.0 to 3.4.0 ([#3705](https://github.com/argoproj/argo-rollouts/issues/3705))
|
||||
* **deps:** bump google.golang.org/grpc from 1.64.0 to 1.65.0 ([#3694](https://github.com/argoproj/argo-rollouts/issues/3694))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.22 to 1.27.23 ([#3695](https://github.com/argoproj/argo-rollouts/issues/3695))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.28.1 to 1.28.6 ([#3981](https://github.com/argoproj/argo-rollouts/issues/3981))
|
||||
* **deps:** bump github.com/aws/smithy-go from 1.20.2 to 1.20.3 ([#3685](https://github.com/argoproj/argo-rollouts/issues/3685))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.38.7 to 1.40.1 ([#3687](https://github.com/argoproj/argo-rollouts/issues/3687))
|
||||
* **deps:** bump softprops/action-gh-release from 2.0.5 to 2.0.6 ([#3656](https://github.com/argoproj/argo-rollouts/issues/3656))
|
||||
* **deps:** bump docker/build-push-action from 6.1.0 to 6.2.0 ([#3676](https://github.com/argoproj/argo-rollouts/issues/3676))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.19 to 1.27.22 ([#3680](https://github.com/argoproj/argo-rollouts/issues/3680))
|
||||
* **deps:** bump docker/build-push-action from 6.0.2 to 6.1.0 ([#3662](https://github.com/argoproj/argo-rollouts/issues/3662))
|
||||
* **deps:** bump docker/build-push-action from 6.0.0 to 6.0.2 ([#3659](https://github.com/argoproj/argo-rollouts/issues/3659))
|
||||
* **deps:** bump google.golang.org/grpc from 1.67.1 to 1.68.1 ([#3979](https://github.com/argoproj/argo-rollouts/issues/3979))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.18 to 1.27.19 ([#3646](https://github.com/argoproj/argo-rollouts/issues/3646))
|
||||
* **deps:** bump docker/build-push-action from 5.4.0 to 6.0.0 ([#3644](https://github.com/argoproj/argo-rollouts/issues/3644))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.38.6 to 1.38.7 ([#3647](https://github.com/argoproj/argo-rollouts/issues/3647))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.42.4 to 1.43.3 ([#3980](https://github.com/argoproj/argo-rollouts/issues/3980))
|
||||
* **deps:** bump github.com/spf13/cobra from 1.8.0 to 1.8.1 ([#3640](https://github.com/argoproj/argo-rollouts/issues/3640))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.38.0 to 1.38.6 ([#3619](https://github.com/argoproj/argo-rollouts/issues/3619))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.16 to 1.27.18 ([#3625](https://github.com/argoproj/argo-rollouts/issues/3625))
|
||||
* **deps:** bump google.golang.org/protobuf from 1.34.1 to 1.34.2 ([#3633](https://github.com/argoproj/argo-rollouts/issues/3633))
|
||||
* **deps:** bump codecov/codecov-action from 4.4.1 to 4.5.0 ([#3634](https://github.com/argoproj/argo-rollouts/issues/3634))
|
||||
* **deps:** bump docker/build-push-action from 5.3.0 to 5.4.0 ([#3624](https://github.com/argoproj/argo-rollouts/issues/3624))
|
||||
* **deps:** bump golang.org/x/oauth2 from 0.20.0 to 0.21.0 ([#3631](https://github.com/argoproj/argo-rollouts/issues/3631))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.31.1 to 1.31.3 ([#3620](https://github.com/argoproj/argo-rollouts/issues/3620))
|
||||
* **deps:** bump actions/setup-go from 5.0.0 to 5.0.1 ([#3552](https://github.com/argoproj/argo-rollouts/issues/3552))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2 from 1.27.0 to 1.27.2 ([#3621](https://github.com/argoproj/argo-rollouts/issues/3621))
|
||||
* **deps:** bump docker/login-action from 3.1.0 to 3.2.0 ([#3604](https://github.com/argoproj/argo-rollouts/issues/3604))
|
||||
* **deps:** bump github.com/hashicorp/go-plugin from 1.6.0 to 1.6.1 ([#3606](https://github.com/argoproj/argo-rollouts/issues/3606))
|
||||
* **deps:** bump google.golang.org/grpc from 1.63.2 to 1.64.0 ([#3607](https://github.com/argoproj/argo-rollouts/issues/3607))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 from 1.30.5 to 1.31.1 ([#3608](https://github.com/argoproj/argo-rollouts/issues/3608))
|
||||
* **deps:** bump golang.org/x/oauth2 from 0.19.0 to 0.20.0 ([#3554](https://github.com/argoproj/argo-rollouts/issues/3554))
|
||||
* **deps:** bump golangci/golangci-lint-action from 5 to 6 ([#3556](https://github.com/argoproj/argo-rollouts/issues/3556))
|
||||
* **deps:** bump google.golang.org/protobuf from 1.34.0 to 1.34.1 ([#3557](https://github.com/argoproj/argo-rollouts/issues/3557))
|
||||
* **deps:** bump softprops/action-gh-release from 2.0.4 to 2.0.5 ([#3561](https://github.com/argoproj/argo-rollouts/issues/3561))
|
||||
* **deps:** bump codecov/codecov-action from 4.3.1 to 4.4.1 ([#3588](https://github.com/argoproj/argo-rollouts/issues/3588))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.11 to 1.27.16 ([#3597](https://github.com/argoproj/argo-rollouts/issues/3597))
|
||||
* **deps:** update golang to 1.23 ([#3987](https://github.com/argoproj/argo-rollouts/issues/3987))
|
||||
* **deps:** bump google.golang.org/protobuf from 1.33.0 to 1.34.0 ([#3548](https://github.com/argoproj/argo-rollouts/issues/3548))
|
||||
* **deps:** bump codecov/codecov-action from 4.3.0 to 4.3.1 ([#3550](https://github.com/argoproj/argo-rollouts/issues/3550))
|
||||
* **deps:** bump codecov/codecov-action from 5.0.7 to 5.1.1 ([#3986](https://github.com/argoproj/argo-rollouts/issues/3986))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.37.0 to 1.38.0 ([#3525](https://github.com/argoproj/argo-rollouts/issues/3525))
|
||||
* **deps:** bump golangci/golangci-lint-action from 4 to 5 ([#3540](https://github.com/argoproj/argo-rollouts/issues/3540))
|
||||
* **deps:** bump sigstore/cosign-installer from 3.4.0 to 3.5.0 ([#3522](https://github.com/argoproj/argo-rollouts/issues/3522))
|
||||
* **deps:** bump slsa-framework/slsa-github-generator from 1.10.0 to 2.0.0 ([#3537](https://github.com/argoproj/argo-rollouts/issues/3537))
|
||||
* **deps:** bump codecov/codecov-action from 4.2.0 to 4.3.0 ([#3517](https://github.com/argoproj/argo-rollouts/issues/3517))
|
||||
* **deps:** bump go version to 1.22 ([#3516](https://github.com/argoproj/argo-rollouts/issues/3516))
|
||||
* **deps:** bump google.golang.org/grpc from 1.63.0 to 1.63.2 ([#3512](https://github.com/argoproj/argo-rollouts/issues/3512))
|
||||
* **deps:** bump github.com/aws/aws-sdk-go-v2/config from 1.27.10 to 1.27.11 ([#3510](https://github.com/argoproj/argo-rollouts/issues/3510))
|
||||
* **deps:** bump peaceiris/actions-gh-pages from 3 to 4 ([#3513](https://github.com/argoproj/argo-rollouts/issues/3513))
|
||||
* **deps:** bump docker/setup-buildx-action from 3.2.0 to 3.3.0 ([#3514](https://github.com/argoproj/argo-rollouts/issues/3514))
|
||||
* **deps:** bump google.golang.org/grpc from 1.62.1 to 1.63.0 ([#3497](https://github.com/argoproj/argo-rollouts/issues/3497))
|
||||
* **deps:** bump github.com/prometheus/client_model from 0.6.0 to 0.6.1 ([#3499](https://github.com/argoproj/argo-rollouts/issues/3499))
|
||||
* **deps:** bump golang.org/x/oauth2 from 0.18.0 to 0.19.0 ([#3506](https://github.com/argoproj/argo-rollouts/issues/3506))
|
||||
* **deps:** bump codecov/codecov-action from 4.1.1 to 4.2.0 ([#3500](https://github.com/argoproj/argo-rollouts/issues/3500))
|
||||
* **deps:** bump github.com/stretchr/testify from 1.9.0 to 1.10.0 ([#3985](https://github.com/argoproj/argo-rollouts/issues/3985))
|
||||
|
||||
### Docs
|
||||
|
||||
* fix broken links ([#3962](https://github.com/argoproj/argo-rollouts/issues/3962))
|
||||
* add descriptions for additional default trigger templates ([#3960](https://github.com/argoproj/argo-rollouts/issues/3960))
|
||||
* document dynamicStableScale ([#3978](https://github.com/argoproj/argo-rollouts/issues/3978))
|
||||
* add 7shifts to users.md ([#3965](https://github.com/argoproj/argo-rollouts/issues/3965))
|
||||
* add CarGurus to users.md ([#3940](https://github.com/argoproj/argo-rollouts/issues/3940))
|
||||
* Add technique for ConfigMap change detection in Rollout ([#3515](https://github.com/argoproj/argo-rollouts/issues/3515))
|
||||
* document canary step plugin (alpha) ([#3906](https://github.com/argoproj/argo-rollouts/issues/3906))
|
||||
* GTW API support changed to Gloo Gateway instead of GloodMesh ([#3914](https://github.com/argoproj/argo-rollouts/issues/3914))
|
||||
* Add Amadeus to Users.md ([#3527](https://github.com/argoproj/argo-rollouts/issues/3527))
|
||||
* add TBC Bank to USERS.md ([#3871](https://github.com/argoproj/argo-rollouts/issues/3871))
|
||||
* Update specification document ([#3877](https://github.com/argoproj/argo-rollouts/issues/3877))
|
||||
* clarify supported deployment strategies ([#3823](https://github.com/argoproj/argo-rollouts/issues/3823))
|
||||
* Update metric job docs with some of the available config options ([#3839](https://github.com/argoproj/argo-rollouts/issues/3839))
|
||||
* Clarify analysis count with value 0 ([#3847](https://github.com/argoproj/argo-rollouts/issues/3847))
|
||||
* fix a link to e2e.yaml ([#3834](https://github.com/argoproj/argo-rollouts/issues/3834))
|
||||
* Update Changelog ([#3788](https://github.com/argoproj/argo-rollouts/issues/3788))
|
||||
* remove obsolete roadmap page ([#3783](https://github.com/argoproj/argo-rollouts/issues/3783))
|
||||
* Update ephemeral-metadata.md with a small fix ([#3782](https://github.com/argoproj/argo-rollouts/issues/3782))
|
||||
* add Priceline to USERS.md ([#3764](https://github.com/argoproj/argo-rollouts/issues/3764))
|
||||
* added clarifications for short releases ([#3753](https://github.com/argoproj/argo-rollouts/issues/3753))
|
||||
* correct the case that autoPromotionSeconds feature is ignored ([#2388](https://github.com/argoproj/argo-rollouts/issues/2388))
|
||||
* copy omission in rollout docs ([#3690](https://github.com/argoproj/argo-rollouts/issues/3690))
|
||||
* Update Changelog ([#3666](https://github.com/argoproj/argo-rollouts/issues/3666))
|
||||
* Update Changelog ([#3632](https://github.com/argoproj/argo-rollouts/issues/3632))
|
||||
* provide recommendation for strategies ([#3531](https://github.com/argoproj/argo-rollouts/issues/3531))
|
||||
* Update Changelog ([#3507](https://github.com/argoproj/argo-rollouts/issues/3507))
|
||||
* **analysis:** new plugin is added to the documentation ([#3915](https://github.com/argoproj/argo-rollouts/issues/3915))
|
||||
* **analysis:** plugin url is changed and redirected to argoproj-labs project ([#3922](https://github.com/argoproj/argo-rollouts/issues/3922))
|
||||
|
||||
### Feat
|
||||
|
||||
* New Prometheus metric: build_info ([#3591](https://github.com/argoproj/argo-rollouts/issues/3591))
|
||||
* support multi account Datadog metrics provider ([#3787](https://github.com/argoproj/argo-rollouts/issues/3787))
|
||||
* **analysis:** Add ConsecutiveSuccessLimit feature to Analysis ([#3970](https://github.com/argoproj/argo-rollouts/issues/3970))
|
||||
* **analysis:** Returns the resolved query as metadata in the New Relic provider ([#3715](https://github.com/argoproj/argo-rollouts/issues/3715))
|
||||
* **analysis:** Adds timeout property to NewRelic metrics provider. Resolves: [#3741](https://github.com/argoproj/argo-rollouts/issues/3741) ([#3742](https://github.com/argoproj/argo-rollouts/issues/3742))
|
||||
* **controller:** enable pprof profiling support ([#3769](https://github.com/argoproj/argo-rollouts/issues/3769))
|
||||
* **controller:** add canary steps plugin ([#3521](https://github.com/argoproj/argo-rollouts/issues/3521))
|
||||
* **controller:** Allow specifying full annotations for nginx canary ingresses. ([#3671](https://github.com/argoproj/argo-rollouts/issues/3671))
|
||||
* **dashboard:** change the color of the current rollout step ([#3526](https://github.com/argoproj/argo-rollouts/issues/3526))
|
||||
* **metricprovider:** credentials to download plugin ([#3905](https://github.com/argoproj/argo-rollouts/issues/3905))
|
||||
* **metricprovider:** add prometheus range query support ([#3704](https://github.com/argoproj/argo-rollouts/issues/3704))
|
||||
|
||||
### Fix
|
||||
|
||||
* add update verb to ClusterRole permissions for scaleDown feature. Fixes [#3672](https://github.com/argoproj/argo-rollouts/issues/3672) ([#3675](https://github.com/argoproj/argo-rollouts/issues/3675))
|
||||
* e2e test results processing change key name to run-id ([#3744](https://github.com/argoproj/argo-rollouts/issues/3744))
|
||||
* Update loader-utils to 2.0.4 ([#3601](https://github.com/argoproj/argo-rollouts/issues/3601))
|
||||
* remove condition where header routes can stay directed at empty service in preemption ([#3898](https://github.com/argoproj/argo-rollouts/issues/3898))
|
||||
* add secrets so we can download across workflows ([#3746](https://github.com/argoproj/argo-rollouts/issues/3746))
|
||||
* rollout should skip timeout when paused ([#3711](https://github.com/argoproj/argo-rollouts/issues/3711))
|
||||
* check isScalingEvent only on stable and newRS ([#3883](https://github.com/argoproj/argo-rollouts/issues/3883))
|
||||
* rs conflict with fallback to patch ([#3559](https://github.com/argoproj/argo-rollouts/issues/3559))
|
||||
* verify the weight of the alb at the end of the rollout ([#3627](https://github.com/argoproj/argo-rollouts/issues/3627))
|
||||
* stop rollout from entering degraded state during blueGreen pause. Fixes [#3843](https://github.com/argoproj/argo-rollouts/issues/3843) ([#3845](https://github.com/argoproj/argo-rollouts/issues/3845))
|
||||
* when Rollout has pingpong and stable/canary service defined, only alb traffic management uses pingpong. ([#3628](https://github.com/argoproj/argo-rollouts/issues/3628))
|
||||
* protocol missing in ambassador canary mapping creation. Fixes [#3593](https://github.com/argoproj/argo-rollouts/issues/3593) ([#3603](https://github.com/argoproj/argo-rollouts/issues/3603))
|
||||
* Change indentation to properly render Markdown - fixes [#3509](https://github.com/argoproj/argo-rollouts/issues/3509) ([#3511](https://github.com/argoproj/argo-rollouts/issues/3511))
|
||||
* Add volume for plugin and tmp folder ([#3546](https://github.com/argoproj/argo-rollouts/issues/3546))
|
||||
* replicaSet not scaled down due to incorrect annotations ([#3762](https://github.com/argoproj/argo-rollouts/issues/3762)) ([#3784](https://github.com/argoproj/argo-rollouts/issues/3784))
|
||||
* don't default datadog aggregator ([#3643](https://github.com/argoproj/argo-rollouts/issues/3643))
|
||||
* Support kustomize v5 labels transformer. Fixes [#3105](https://github.com/argoproj/argo-rollouts/issues/3105) ([#3775](https://github.com/argoproj/argo-rollouts/issues/3775))
|
||||
* separate e2e and unit test reporting uploads ([#3747](https://github.com/argoproj/argo-rollouts/issues/3747))
|
||||
* retain non-nginx canary annotations. Fixes: [#1070](https://github.com/argoproj/argo-rollouts/issues/1070) ([#3806](https://github.com/argoproj/argo-rollouts/issues/3806))
|
||||
* docs site version selector broken ([#3590](https://github.com/argoproj/argo-rollouts/issues/3590))
|
||||
* **analysis:** explicitly set datadog aggregator to last only on v2 ([#3730](https://github.com/argoproj/argo-rollouts/issues/3730))
|
||||
* **analysis:** Take RollbackWindow into account when Reconciling Analysis Runs. Fixes [#3669](https://github.com/argoproj/argo-rollouts/issues/3669) ([#3670](https://github.com/argoproj/argo-rollouts/issues/3670))
|
||||
* **controller:** use the stableRS from the rollout context rather tha… ([#3664](https://github.com/argoproj/argo-rollouts/issues/3664))
|
||||
* **controller:** weighted experiment validation should allow delegating to trafficRouter plugins ([#3909](https://github.com/argoproj/argo-rollouts/issues/3909))
|
||||
* **controller:** Corrects the logic of comparing sha256 has. Fixes [#3519](https://github.com/argoproj/argo-rollouts/issues/3519) ([#3520](https://github.com/argoproj/argo-rollouts/issues/3520))
|
||||
* **controller:** Get the right resourceName for traefik.io.Fixes [#3615](https://github.com/argoproj/argo-rollouts/issues/3615) ([#3759](https://github.com/argoproj/argo-rollouts/issues/3759))
|
||||
* **controller:** fix race condition in updating ephemeral metadata ([#3975](https://github.com/argoproj/argo-rollouts/issues/3975))
|
||||
* **dashboard:** Update pod status logic to support native sidecars. Fixes [#3366](https://github.com/argoproj/argo-rollouts/issues/3366) ([#3639](https://github.com/argoproj/argo-rollouts/issues/3639))
|
||||
* **dashboard:** No redirect loop when running on root. Fixes [#3967](https://github.com/argoproj/argo-rollouts/issues/3967) ([#3968](https://github.com/argoproj/argo-rollouts/issues/3968))
|
||||
* **dashboard:** parse analysis values with JSON5 to handle NaN. Fixes [#2758](https://github.com/argoproj/argo-rollouts/issues/2758) ([#3801](https://github.com/argoproj/argo-rollouts/issues/3801))
|
||||
* **dashboard:** analysis modal crashed when value not valid ([#3881](https://github.com/argoproj/argo-rollouts/issues/3881))
|
||||
* **dashboard:** Cleanup viewcontroller after each request. Fixes [#2095](https://github.com/argoproj/argo-rollouts/issues/2095) ([#3966](https://github.com/argoproj/argo-rollouts/issues/3966))
|
||||
* **metricprovider:** fix handling null values in datadog ([#3893](https://github.com/argoproj/argo-rollouts/issues/3893))
|
||||
* **metricprovider:** reuse http.Transport for http.Client ([#3780](https://github.com/argoproj/argo-rollouts/issues/3780))
|
||||
* **trafficrouting:** add nil check for desired annotations map in ALB… ([#3853](https://github.com/argoproj/argo-rollouts/issues/3853))
|
||||
* **trafficrouting:** Fix downtime on initial deployment using Istio DestinationRule Subsets. Fixes [#2507](https://github.com/argoproj/argo-rollouts/issues/2507) ([#3602](https://github.com/argoproj/argo-rollouts/issues/3602))
|
||||
|
||||
|
||||
<a name="v1.7.2"></a>
|
||||
## [v1.7.2](https://github.com/argoproj/argo-rollouts/compare/v1.7.1...v1.7.2) (2024-08-12)
|
||||
|
||||
|
@ -1002,3 +1298,4 @@ There was an unintentional change in behavior related to service creation with e
|
|||
### Fixes
|
||||
|
||||
* **controller:** istio dropping fields not defined in type ([#2268](https://github.com/argoproj/argo-rollouts/issues/2268))
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ RUN apt-get update && apt-get install -y \
|
|||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
# Install golangci-lint
|
||||
RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.61.0 && \
|
||||
RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.1.6 && \
|
||||
golangci-lint linters
|
||||
|
||||
COPY .golangci.yml ${GOPATH}/src/dummy/.golangci.yml
|
||||
|
|
48
Makefile
48
Makefile
|
@ -64,8 +64,8 @@ define protoc
|
|||
-I ${GOPATH}/src \
|
||||
-I ${GOPATH}/pkg/mod/github.com/gogo/protobuf@v1.3.2/gogoproto \
|
||||
-I ${GOPATH}/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.16.0/third_party/googleapis \
|
||||
--gogofast_out=plugins=grpc:${GOPATH}/src \
|
||||
--grpc-gateway_out=logtostderr=true:${GOPATH}/src \
|
||||
--gogofast_out=plugins=grpc:${CURDIR} \
|
||||
--grpc-gateway_out=logtostderr=true:${CURDIR} \
|
||||
--swagger_out=logtostderr=true,fqn_for_swagger_name=true:. \
|
||||
$(1)
|
||||
endef
|
||||
|
@ -101,6 +101,7 @@ install-tools-local: install-go-tools-local install-protoc-local install-devtool
|
|||
|
||||
TYPES := $(shell find pkg/apis/rollouts/v1alpha1 -type f -name '*.go' -not -name openapi_generated.go -not -name '*generated*' -not -name '*test.go')
|
||||
APIMACHINERY_PKGS=k8s.io/apimachinery/pkg/util/intstr,+k8s.io/apimachinery/pkg/api/resource,+k8s.io/apimachinery/pkg/runtime/schema,+k8s.io/apimachinery/pkg/runtime,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/api/core/v1,k8s.io/api/batch/v1
|
||||
PKG := $(shell go list ./pkg/apis/rollouts/v1alpha1)
|
||||
|
||||
.PHONY: install-toolchain
|
||||
install-toolchain: install-go-tools-local install-protoc-local
|
||||
|
@ -117,21 +118,31 @@ gen-proto: k8s-proto api-proto ui-proto
|
|||
|
||||
# generates the .proto files affected by changes to types.go
|
||||
.PHONY: k8s-proto
|
||||
k8s-proto: go-mod-vendor $(TYPES) ## generate kubernetes protobuf files
|
||||
k8s-proto: go-mod-vendor install-protoc-local install-go-tools-local $(TYPES) ## generate kubernetes protobuf files
|
||||
mkdir -p ${PKG}
|
||||
cp -f $(CURDIR)/pkg/apis/rollouts/v1alpha1/*.* ${PKG}/
|
||||
PATH=${DIST_DIR}:$$PATH GOPATH=${GOPATH} go-to-protobuf \
|
||||
--go-header-file=./hack/custom-boilerplate.go.txt \
|
||||
--packages=github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1 \
|
||||
--packages=${PKG} \
|
||||
--apimachinery-packages=${APIMACHINERY_PKGS} \
|
||||
--proto-import $(CURDIR)/vendor \
|
||||
--proto-import=${DIST_DIR}/protoc-include
|
||||
--proto-import=${CURDIR}/vendor \
|
||||
--proto-import=${GOPATH}/src \
|
||||
--proto-import=${DIST_DIR}/protoc-include
|
||||
touch pkg/apis/rollouts/v1alpha1/generated.proto
|
||||
cp -R ${GOPATH}/src/github.com/argoproj/argo-rollouts/pkg . | true
|
||||
|
||||
cp -Rf $(CURDIR)/github.com/argoproj/argo-rollouts/pkg . | true
|
||||
# cleaning up
|
||||
rm -Rf $(CURDIR)/github.com/
|
||||
rm -Rf $(CURDIR)/k8s.io/
|
||||
|
||||
# generates *.pb.go, *.pb.gw.go, swagger from .proto files
|
||||
.PHONY: api-proto
|
||||
api-proto: go-mod-vendor k8s-proto ## generate api protobuf files
|
||||
mkdir -p ${PKG}
|
||||
cp -f $(CURDIR)/pkg/apis/rollouts/v1alpha1/generated.proto ${PKG}
|
||||
$(call protoc,pkg/apiclient/rollout/rollout.proto)
|
||||
cp -Rf $(CURDIR)/github.com/argoproj/argo-rollouts/pkg . | true
|
||||
# cleaning up
|
||||
rm -Rf $(CURDIR)/github.com/
|
||||
|
||||
# generates ui related proto files
|
||||
.PHONY: ui-proto
|
||||
|
@ -145,8 +156,8 @@ gen-k8scodegen: go-mod-vendor ## generate kubernetes codegen files
|
|||
|
||||
# generates ./manifests/crds/
|
||||
.PHONY: gen-crd
|
||||
gen-crd: install-go-tools-local ## generate crd manifests
|
||||
go run ./hack/gen-crd-spec/main.go
|
||||
gen-crd: go-mod-vendor install-go-tools-local ## generate crd manifests
|
||||
go run -mod=mod ./hack/gen-crd-spec/main.go
|
||||
|
||||
# generates mock files from interfaces
|
||||
.PHONY: gen-mocks
|
||||
|
@ -158,12 +169,13 @@ gen-mocks-fast:
|
|||
|
||||
# generates openapi_generated.go
|
||||
.PHONY: gen-openapi
|
||||
gen-openapi: $(DIST_DIR)/openapi-gen ## generate openapi files
|
||||
PATH=${DIST_DIR}:$$PATH GOPATH=${GOPATH} openapi-gen \
|
||||
gen-openapi: install-go-tools-local $(DIST_DIR)/openapi-gen ## generate openapi files
|
||||
PATH=${DIST_DIR}:$$PATH GOPATH=${GOPATH} openapi-gen ${CURRENT_DIR}/pkg/apis/rollouts/v1alpha1 \
|
||||
--go-header-file ${CURRENT_DIR}/hack/custom-boilerplate.go.txt \
|
||||
--input-dirs github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1 \
|
||||
--output-package github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1 \
|
||||
--report-filename pkg/apis/api-rules/violation_exceptions.list
|
||||
--output-pkg github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1 \
|
||||
--output-dir ${CURRENT_DIR}/pkg/apis/rollouts/v1alpha1 \
|
||||
--output-file openapi_generated.go \
|
||||
--report-filename ${CURRENT_DIR}/pkg/apis/api-rules/violation_exceptions.list
|
||||
|
||||
##@ Plugins
|
||||
|
||||
|
@ -279,6 +291,8 @@ manifests: ## generate manifests e.g. CRD, RBAC etc.
|
|||
clean: ## clean up build artifacts
|
||||
-rm -rf ${CURRENT_DIR}/dist
|
||||
-rm -rf ${CURRENT_DIR}/ui/dist
|
||||
-rm -Rf ${CURRENT_DIR}/github.com/
|
||||
-rm -Rf ${CURRENT_DIR}/k8s.io/
|
||||
|
||||
.PHONY: precheckin
|
||||
precheckin: test lint
|
||||
|
@ -291,8 +305,8 @@ serve-docs: docs ## serve docs locally
|
|||
docker run --rm -it -p 8000:8000 -v ${CURRENT_DIR}:/docs squidfunk/mkdocs-material serve -a 0.0.0.0:8000
|
||||
|
||||
.PHONY: docs
|
||||
docs: ## build docs
|
||||
go run ./hack/gen-docs/main.go
|
||||
docs: go-mod-vendor install-go-tools-local ## build docs
|
||||
go run -mod=mod ./hack/gen-docs/main.go
|
||||
|
||||
##@ Release
|
||||
|
||||
|
|
15
USERS.md
15
USERS.md
|
@ -10,6 +10,8 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit
|
|||
1. [Amadeus IT Group](https://amadeus.com/)
|
||||
1. [Ambassador Labs](https://www.getambassador.io)
|
||||
1. [Ant Group](https://www.antgroup.com/)
|
||||
1. [AppsFlyer](https://www.appsflyer.com/)
|
||||
1. [Batumbu](https://batumbu.id/)
|
||||
1. [Bucketplace](https://www.bucketplace.co.kr/)
|
||||
1. [BukuKas](https://bukukas.co.id/)
|
||||
1. [Calm](https://www.calm.com/)
|
||||
|
@ -21,6 +23,7 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit
|
|||
1. [DaoCloud](https://daocloud.io)
|
||||
1. [Databricks](https://github.com/databricks)
|
||||
1. [Devtron Labs](https://github.com/devtron-labs/devtron)
|
||||
1. [Doubble](https://www.doubble.app)
|
||||
1. [Factorial](https://factorialhr.com)
|
||||
1. [Farfetch](https://www.farfetch.com/)
|
||||
1. [Flipkart](https://flipkart.com)
|
||||
|
@ -31,7 +34,9 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit
|
|||
1. [Hepsiburada](https://hepsiburada.com/)
|
||||
1. [Ibotta](https://home.ibotta.com/)
|
||||
1. [Intuit](https://www.intuit.com/)
|
||||
1. [Microsoft](https://microsoft.com/)
|
||||
1. [New Relic](https://newrelic.com/)
|
||||
1. [Nextdoor](https://nextdoor.com)
|
||||
1. [Nitro](https://www.gonitro.com)
|
||||
1. [Nozzle](https://nozzle.io)
|
||||
1. [Opensurvey Inc.](https://opensurvey.co.kr)
|
||||
|
@ -42,22 +47,32 @@ Organizations below are **officially** using Argo Rollouts. Please send a PR wit
|
|||
1. [PagerDuty](https://www.pagerduty.com/)
|
||||
1. [PayPal](https://www.paypal.com/)
|
||||
1. [PayPay](https://paypay.ne.jp/)
|
||||
1. [Plaid](https://plaid.com/)
|
||||
1. [Priceline](https://priceline.com)
|
||||
1. [Productboard](https://www.productboard.com)
|
||||
1. [Quipper](https://www.quipper.com/)
|
||||
1. [Quizlet](https://quizlet.com)
|
||||
1. [Red Hat](https://www.redhat.com/)
|
||||
1. [Salesforce](https://www.salesforce.com/)
|
||||
1. [SAP Concur](https://www.concur.com/)
|
||||
1. [Schneider Electric](https://www.se.com)
|
||||
1. [Shipt](https://www.shipt.com/)
|
||||
1. [Skillz](https://www.skillz.com)
|
||||
1. [Spotify](https://www.spotify.com/)
|
||||
1. [suXess-it](https://www.suxess-it.com/)
|
||||
1. [Synamedia](https://www.synamedia.com)
|
||||
1. [StormForge](https://www.stormforge.io)
|
||||
1. [Taboola](https://www.taboola.com)
|
||||
1. [TBC Bank](https://tbcbank.ge/)
|
||||
1. [Trustly](https://www.trustly.com/)
|
||||
1. [Tuhu](https://www.tuhu.cn/)
|
||||
1. [Twilio SendGrid](https://sendgrid.com)
|
||||
1. [Ubie](https://ubie.life/)
|
||||
1. [Verkada](https://verkada.com)
|
||||
1. [VISITS Technologies](https://visits.world/en)
|
||||
1. [WeLab Bank](https://www.welab.bank/)
|
||||
1. [Wolt](https://wolt.com/)
|
||||
1. [Yotpo](https://www.yotpo.com/)
|
||||
1. [Yuno](https://y.uno/)
|
||||
1. [VGS](https://www.vgs.io)
|
||||
1. [X3M ads](https://x3mads.com)
|
||||
|
|
|
@ -11,7 +11,7 @@ import (
|
|||
corev1 "k8s.io/api/core/v1"
|
||||
k8serrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/utils/pointer"
|
||||
"k8s.io/utils/ptr"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
analysisutil "github.com/argoproj/argo-rollouts/utils/analysis"
|
||||
|
@ -145,7 +145,7 @@ func getResolvedMetricsWithoutSecrets(metrics []v1alpha1.Metric, args []v1alpha1
|
|||
newArg := arg.DeepCopy()
|
||||
if newArg.ValueFrom != nil && newArg.ValueFrom.SecretKeyRef != nil {
|
||||
newArg.ValueFrom = nil
|
||||
newArg.Value = pointer.StringPtr("temp-for-secret")
|
||||
newArg.Value = ptr.To[string]("temp-for-secret")
|
||||
}
|
||||
newArgs = append(newArgs, *newArg)
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ import (
|
|||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
"k8s.io/apimachinery/pkg/util/uuid"
|
||||
k8stesting "k8s.io/client-go/testing"
|
||||
"k8s.io/utils/pointer"
|
||||
"k8s.io/utils/ptr"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
"github.com/argoproj/argo-rollouts/utils/defaults"
|
||||
|
@ -1393,7 +1393,7 @@ func TestGarbageCollectArgResolution(t *testing.T) {
|
|||
}
|
||||
run.Spec.Args = append(run.Spec.Args, v1alpha1.Argument{
|
||||
Name: "port",
|
||||
Value: pointer.String("8080"),
|
||||
Value: ptr.To[string]("8080"),
|
||||
})
|
||||
var measurementRetentionMetricsMap = map[string]*v1alpha1.MeasurementRetention{}
|
||||
measurementRetentionMetricsMap["metric2"] = &v1alpha1.MeasurementRetention{MetricName: "metric2", Limit: 2}
|
||||
|
@ -2071,7 +2071,7 @@ func StartTerminatingAnalysisRun(t *testing.T, isDryRun bool) *v1alpha1.Analysis
|
|||
Args: []v1alpha1.Argument{
|
||||
{
|
||||
Name: "service",
|
||||
Value: pointer.StringPtr("rollouts-demo-canary.default.svc.cluster.local"),
|
||||
Value: ptr.To[string]("rollouts-demo-canary.default.svc.cluster.local"),
|
||||
},
|
||||
},
|
||||
Metrics: []v1alpha1.Metric{{
|
||||
|
@ -2130,7 +2130,7 @@ func TestInvalidDryRunConfigThrowsError(t *testing.T) {
|
|||
Args: []v1alpha1.Argument{
|
||||
{
|
||||
Name: "service",
|
||||
Value: pointer.StringPtr("rollouts-demo-canary.default.svc.cluster.local"),
|
||||
Value: ptr.To[string]("rollouts-demo-canary.default.svc.cluster.local"),
|
||||
},
|
||||
},
|
||||
Metrics: []v1alpha1.Metric{{
|
||||
|
@ -2171,7 +2171,7 @@ func TestInvalidMeasurementsRetentionConfigThrowsError(t *testing.T) {
|
|||
Args: []v1alpha1.Argument{
|
||||
{
|
||||
Name: "service",
|
||||
Value: pointer.StringPtr("rollouts-demo-canary.default.svc.cluster.local"),
|
||||
Value: ptr.To[string]("rollouts-demo-canary.default.svc.cluster.local"),
|
||||
},
|
||||
},
|
||||
Metrics: []v1alpha1.Metric{{
|
||||
|
@ -2315,7 +2315,7 @@ func TestExceededTtlChecked(t *testing.T) {
|
|||
})
|
||||
// Test success TTL overrides completed TTL.
|
||||
testTTLStrategy(t, &v1alpha1.TTLStrategy{
|
||||
SecondsAfterCompletion: pointer.Int32Ptr(100000),
|
||||
SecondsAfterCompletion: ptr.To[int32](100000),
|
||||
SecondsAfterSuccess: &secondsOfOneDay,
|
||||
}, &v1alpha1.AnalysisRunStatus{
|
||||
CompletedAt: timePtr(metav1.NewTime(ttlExpiredCompletedTime)),
|
||||
|
@ -2326,7 +2326,7 @@ func TestExceededTtlChecked(t *testing.T) {
|
|||
})
|
||||
// Test failed TTL overrides completed TTL.
|
||||
testTTLStrategy(t, &v1alpha1.TTLStrategy{
|
||||
SecondsAfterCompletion: pointer.Int32Ptr(100000),
|
||||
SecondsAfterCompletion: ptr.To[int32](100000),
|
||||
SecondsAfterFailure: &secondsOfOneDay,
|
||||
}, &v1alpha1.AnalysisRunStatus{
|
||||
CompletedAt: timePtr(metav1.NewTime(ttlExpiredCompletedTime)),
|
||||
|
@ -2338,7 +2338,7 @@ func TestExceededTtlChecked(t *testing.T) {
|
|||
// Test completed TTL still evaluated when non-matching overrides exist.
|
||||
testTTLStrategy(t, &v1alpha1.TTLStrategy{
|
||||
SecondsAfterCompletion: &secondsOfOneDay,
|
||||
SecondsAfterFailure: pointer.Int32Ptr(86401),
|
||||
SecondsAfterFailure: ptr.To[int32](86401),
|
||||
}, &v1alpha1.AnalysisRunStatus{
|
||||
CompletedAt: timePtr(metav1.NewTime(ttlExpiredCompletedTime)),
|
||||
Phase: v1alpha1.AnalysisPhaseSuccessful,
|
||||
|
@ -2454,7 +2454,7 @@ func TestReconcileAnalysisRunOnRunNotFound(t *testing.T) {
|
|||
},
|
||||
Spec: v1alpha1.AnalysisRunSpec{
|
||||
TTLStrategy: &v1alpha1.TTLStrategy{
|
||||
SecondsAfterCompletion: pointer.Int32Ptr(1),
|
||||
SecondsAfterCompletion: ptr.To[int32](1),
|
||||
},
|
||||
},
|
||||
Status: v1alpha1.AnalysisRunStatus{
|
||||
|
@ -2491,7 +2491,7 @@ func TestReconcileAnalysisRunOnOtherRunErrors(t *testing.T) {
|
|||
},
|
||||
Spec: v1alpha1.AnalysisRunSpec{
|
||||
TTLStrategy: &v1alpha1.TTLStrategy{
|
||||
SecondsAfterCompletion: pointer.Int32Ptr(1),
|
||||
SecondsAfterCompletion: ptr.To[int32](1),
|
||||
},
|
||||
},
|
||||
Status: v1alpha1.AnalysisRunStatus{
|
||||
|
@ -2563,7 +2563,7 @@ func TestMaybeGarbageCollectAnalysisRunNoGCIfWithDeletionTimestamp(t *testing.T)
|
|||
},
|
||||
Spec: v1alpha1.AnalysisRunSpec{
|
||||
TTLStrategy: &v1alpha1.TTLStrategy{
|
||||
SecondsAfterCompletion: pointer.Int32Ptr(1),
|
||||
SecondsAfterCompletion: ptr.To[int32](1),
|
||||
},
|
||||
},
|
||||
Status: v1alpha1.AnalysisRunStatus{
|
||||
|
@ -2590,7 +2590,7 @@ func TestMaybeGarbageCollectAnalysisRunNoGCIfNoCompletedAt(t *testing.T) {
|
|||
},
|
||||
Spec: v1alpha1.AnalysisRunSpec{
|
||||
TTLStrategy: &v1alpha1.TTLStrategy{
|
||||
SecondsAfterCompletion: pointer.Int32Ptr(1),
|
||||
SecondsAfterCompletion: ptr.To[int32](1),
|
||||
},
|
||||
},
|
||||
Status: v1alpha1.AnalysisRunStatus{
|
||||
|
|
|
@ -5,12 +5,13 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/metric"
|
||||
jobProvider "github.com/argoproj/argo-rollouts/metricproviders/job"
|
||||
"github.com/aws/smithy-go/ptr"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/metric"
|
||||
jobProvider "github.com/argoproj/argo-rollouts/metricproviders/job"
|
||||
|
||||
unstructuredutil "github.com/argoproj/argo-rollouts/utils/unstructured"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
|
|
@ -3,7 +3,6 @@ package main
|
|||
import (
|
||||
"os"
|
||||
|
||||
logutil "github.com/argoproj/argo-rollouts/utils/log"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"k8s.io/cli-runtime/pkg/genericclioptions"
|
||||
_ "k8s.io/client-go/plugin/pkg/client/auth/azure"
|
||||
|
@ -11,6 +10,8 @@ import (
|
|||
_ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
|
||||
"k8s.io/klog/v2"
|
||||
|
||||
logutil "github.com/argoproj/argo-rollouts/utils/log"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/cmd"
|
||||
"github.com/argoproj/argo-rollouts/pkg/kubectl-argo-rollouts/options"
|
||||
)
|
||||
|
|
|
@ -7,8 +7,6 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/metricproviders"
|
||||
"github.com/argoproj/argo-rollouts/utils/record"
|
||||
"github.com/argoproj/pkg/kubeclientmetrics"
|
||||
smiclientset "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/split/clientset/versioned"
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
@ -24,6 +22,11 @@ import (
|
|||
_ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/metricproviders"
|
||||
"github.com/argoproj/argo-rollouts/rollout"
|
||||
"github.com/argoproj/argo-rollouts/utils/errors"
|
||||
"github.com/argoproj/argo-rollouts/utils/record"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/controller"
|
||||
"github.com/argoproj/argo-rollouts/controller/metrics"
|
||||
jobprovider "github.com/argoproj/argo-rollouts/metricproviders/job"
|
||||
|
@ -66,6 +69,9 @@ func newCommand() *cobra.Command {
|
|||
analysisThreads int
|
||||
serviceThreads int
|
||||
ingressThreads int
|
||||
ephemeralMetadataThreads int
|
||||
targetGroupBindingVersion string
|
||||
albTagKeyResourceID string
|
||||
istioVersion string
|
||||
trafficSplitVersion string
|
||||
traefikAPIGroup string
|
||||
|
@ -99,12 +105,13 @@ func newCommand() *cobra.Command {
|
|||
}
|
||||
logutil.SetKLogLogger(logger)
|
||||
logutil.SetKLogLevel(klogLevel)
|
||||
log.WithField("version", version.GetVersion()).Info("Argo Rollouts starting")
|
||||
|
||||
// set up signals so we handle the first shutdown signal gracefully
|
||||
ctx := signals.SetupSignalHandlerContext()
|
||||
|
||||
defaults.SetVerifyTargetGroup(awsVerifyTargetGroup)
|
||||
defaults.SetTargetGroupBindingAPIVersion(targetGroupBindingVersion)
|
||||
defaults.SetalbTagKeyResourceID(albTagKeyResourceID)
|
||||
defaults.SetIstioAPIVersion(istioVersion)
|
||||
defaults.SetAmbassadorAPIVersion(ambassadorVersion)
|
||||
defaults.SetSMIAPIVersion(trafficSplitVersion)
|
||||
|
@ -113,30 +120,36 @@ func newCommand() *cobra.Command {
|
|||
defaults.SetTraefikVersion(traefikVersion)
|
||||
|
||||
config, err := clientConfig.ClientConfig()
|
||||
checkError(err)
|
||||
errors.CheckError(err)
|
||||
config.QPS = qps
|
||||
config.Burst = burst
|
||||
namespace := metav1.NamespaceAll
|
||||
configNS, _, err := clientConfig.Namespace()
|
||||
checkError(err)
|
||||
errors.CheckError(err)
|
||||
if namespaced {
|
||||
namespace = configNS
|
||||
log.Infof("Using namespace %s", namespace)
|
||||
}
|
||||
log.WithFields(log.Fields{
|
||||
"version": version.GetVersion(),
|
||||
"namespace": namespace,
|
||||
"instanceID": instanceID,
|
||||
"metricsPort": metricsPort,
|
||||
"healthzPort": healthzPort,
|
||||
}).Info("Argo Rollouts controller starting")
|
||||
|
||||
k8sRequestProvider := &metrics.K8sRequestsCountProvider{}
|
||||
kubeclientmetrics.AddMetricsTransportWrapper(config, k8sRequestProvider.IncKubernetesRequest)
|
||||
|
||||
kubeClient, err := kubernetes.NewForConfig(config)
|
||||
checkError(err)
|
||||
errors.CheckError(err)
|
||||
argoprojClient, err := clientset.NewForConfig(config)
|
||||
checkError(err)
|
||||
errors.CheckError(err)
|
||||
dynamicClient, err := dynamic.NewForConfig(config)
|
||||
checkError(err)
|
||||
errors.CheckError(err)
|
||||
discoveryClient, err := discovery.NewDiscoveryClientForConfig(config)
|
||||
checkError(err)
|
||||
errors.CheckError(err)
|
||||
smiClient, err := smiclientset.NewForConfig(config)
|
||||
checkError(err)
|
||||
errors.CheckError(err)
|
||||
resyncDuration := time.Duration(rolloutResyncPeriod) * time.Second
|
||||
kubeInformerFactory := kubeinformers.NewSharedInformerFactoryWithOptions(
|
||||
kubeClient,
|
||||
|
@ -147,7 +160,7 @@ func newCommand() *cobra.Command {
|
|||
options.LabelSelector = instanceIDSelector.String()
|
||||
}
|
||||
jobKubeClient, _, err := metricproviders.GetAnalysisJobClientset(kubeClient)
|
||||
checkError(err)
|
||||
errors.CheckError(err)
|
||||
jobNs := metricproviders.GetAnalysisJobNamespace()
|
||||
if jobNs == "" {
|
||||
// if not set explicitly use the configured ns
|
||||
|
@ -202,9 +215,9 @@ func newCommand() *cobra.Command {
|
|||
)
|
||||
|
||||
mode, err := ingressutil.DetermineIngressMode(ingressVersion, kubeClient.DiscoveryClient)
|
||||
checkError(err)
|
||||
errors.CheckError(err)
|
||||
ingressWrapper, err := ingressutil.NewIngressWrapper(mode, kubeClient, kubeInformerFactory)
|
||||
checkError(err)
|
||||
errors.CheckError(err)
|
||||
|
||||
if pprofAddress != "" {
|
||||
mux := controller.NewPProfServer()
|
||||
|
@ -214,7 +227,7 @@ func newCommand() *cobra.Command {
|
|||
var cm *controller.Manager
|
||||
|
||||
enabledControllers, err := getEnabledControllers(controllersEnabled)
|
||||
checkError(err)
|
||||
errors.CheckError(err)
|
||||
|
||||
// currently only supports running analysis controller independently
|
||||
if enabledControllers[controllerAnalysis] {
|
||||
|
@ -270,7 +283,8 @@ func newCommand() *cobra.Command {
|
|||
istioDynamicInformerFactory,
|
||||
namespaced,
|
||||
kubeInformerFactory,
|
||||
jobInformerFactory)
|
||||
jobInformerFactory,
|
||||
ephemeralMetadataThreads)
|
||||
}
|
||||
if err = cm.Run(ctx, rolloutThreads, serviceThreads, ingressThreads, experimentThreads, analysisThreads, electOpts); err != nil {
|
||||
log.Fatalf("Error running controller: %s", err.Error())
|
||||
|
@ -288,7 +302,7 @@ func newCommand() *cobra.Command {
|
|||
command.Flags().StringVar(&logLevel, "loglevel", "info", "Set the logging level. One of: debug|info|warn|error")
|
||||
command.Flags().StringVar(&logFormat, "logformat", "", "Set the logging format. One of: text|json")
|
||||
command.Flags().IntVar(&klogLevel, "kloglevel", 0, "Set the klog logging level")
|
||||
command.Flags().IntVar(&metricsPort, "metricsport", controller.DefaultMetricsPort, "Set the port the metrics endpoint should be exposed over")
|
||||
command.Flags().IntVar(&metricsPort, "metricsPort", controller.DefaultMetricsPort, "Set the port the metrics endpoint should be exposed over")
|
||||
command.Flags().IntVar(&healthzPort, "healthzPort", controller.DefaultHealthzPort, "Set the port the healthz endpoint should be exposed over")
|
||||
command.Flags().StringVar(&instanceID, "instance-id", "", "Indicates which argo rollout objects the controller should operate on")
|
||||
command.Flags().Float32Var(&qps, "qps", defaults.DefaultQPS, "Maximum QPS (queries per second) to the K8s API server")
|
||||
|
@ -298,11 +312,14 @@ func newCommand() *cobra.Command {
|
|||
command.Flags().IntVar(&analysisThreads, "analysis-threads", controller.DefaultAnalysisThreads, "Set the number of worker threads for the Experiment controller")
|
||||
command.Flags().IntVar(&serviceThreads, "service-threads", controller.DefaultServiceThreads, "Set the number of worker threads for the Service controller")
|
||||
command.Flags().IntVar(&ingressThreads, "ingress-threads", controller.DefaultIngressThreads, "Set the number of worker threads for the Ingress controller")
|
||||
command.Flags().IntVar(&ephemeralMetadataThreads, "ephemeral-metadata-threads", rollout.DefaultEphemeralMetadataThreads, "Set the number of worker threads for the Ephemeral Metadata reconciler")
|
||||
command.Flags().StringVar(&targetGroupBindingVersion, "aws-target-group-binding-api-version", defaults.DefaultTargetGroupBindingAPIVersion, "Set the default AWS TargetGroupBinding apiVersion that controller uses when verifying target group weights.")
|
||||
command.Flags().StringVar(&albTagKeyResourceID, "alb-tag-key-resource-id", defaults.DefaultAlbTagKeyResourceID, "Set the default AWS LoadBalancer tag key for resource ID that controller uses when verifying target group weights.")
|
||||
command.Flags().StringVar(&istioVersion, "istio-api-version", defaults.DefaultIstioVersion, "Set the default Istio apiVersion that controller should look when manipulating VirtualServices.")
|
||||
command.Flags().StringVar(&ambassadorVersion, "ambassador-api-version", defaults.DefaultAmbassadorVersion, "Set the Ambassador apiVersion that controller should look when manipulating Ambassador Mappings.")
|
||||
command.Flags().StringVar(&trafficSplitVersion, "traffic-split-api-version", defaults.DefaultSMITrafficSplitVersion, "Set the default TrafficSplit apiVersion that controller uses when creating TrafficSplits.")
|
||||
command.Flags().StringVar(&traefikAPIGroup, "traefik-api-group", defaults.DefaultTraefikAPIGroup, "Set the default Traerfik apiGroup that controller uses.")
|
||||
command.Flags().StringVar(&traefikVersion, "traefik-api-version", defaults.DefaultTraefikVersion, "Set the default Traerfik apiVersion that controller uses.")
|
||||
command.Flags().StringVar(&traefikAPIGroup, "traefik-api-group", defaults.DefaultTraefikAPIGroup, "Set the default Traefik apiGroup that controller uses.")
|
||||
command.Flags().StringVar(&traefikVersion, "traefik-api-version", defaults.DefaultTraefikVersion, "Set the default Traefik apiVersion that controller uses.")
|
||||
command.Flags().StringVar(&ingressVersion, "ingress-api-version", "", "Set the Ingress apiVersion that the controller should use.")
|
||||
command.Flags().StringVar(&appmeshCRDVersion, "appmesh-crd-version", defaults.DefaultAppMeshCRDVersion, "Set the default AppMesh CRD Version that controller uses when manipulating resources.")
|
||||
command.Flags().StringArrayVar(&albIngressClasses, "alb-ingress-classes", defaultALBIngressClass, "Defines all the ingress class annotations that the alb ingress controller operates on. Defaults to alb")
|
||||
|
@ -366,12 +383,6 @@ func createFormatter(logFormat string) log.Formatter {
|
|||
return formatType
|
||||
}
|
||||
|
||||
func checkError(err error) {
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func getEnabledControllers(controllersEnabled []string) (map[string]bool, error) {
|
||||
enabledControllers := make(map[string]bool)
|
||||
for _, controller := range controllersEnabled {
|
||||
|
|
|
@ -13,9 +13,10 @@ import (
|
|||
|
||||
istioutil "github.com/argoproj/argo-rollouts/utils/istio"
|
||||
|
||||
rolloutsConfig "github.com/argoproj/argo-rollouts/utils/config"
|
||||
goPlugin "github.com/hashicorp/go-plugin"
|
||||
|
||||
rolloutsConfig "github.com/argoproj/argo-rollouts/utils/config"
|
||||
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
|
||||
"k8s.io/client-go/dynamic/dynamicinformer"
|
||||
|
@ -281,6 +282,7 @@ func NewManager(
|
|||
namespaced bool,
|
||||
kubeInformerFactory kubeinformers.SharedInformerFactory,
|
||||
jobInformerFactory kubeinformers.SharedInformerFactory,
|
||||
ephemeralMetadataThreads int,
|
||||
) *Manager {
|
||||
runtime.Must(rolloutscheme.AddToScheme(scheme.Scheme))
|
||||
log.Info("Creating event broadcaster")
|
||||
|
@ -345,6 +347,7 @@ func NewManager(
|
|||
IngressWorkQueue: ingressWorkqueue,
|
||||
MetricsServer: metricsServer,
|
||||
Recorder: recorder,
|
||||
EphemeralMetadataThreads: ephemeralMetadataThreads,
|
||||
})
|
||||
|
||||
experimentController := experiments.NewController(experiments.ControllerConfig{
|
||||
|
|
|
@ -269,6 +269,7 @@ func TestNewManager(t *testing.T) {
|
|||
false,
|
||||
nil,
|
||||
nil,
|
||||
rolloutController.DefaultEphemeralMetadataThreads,
|
||||
)
|
||||
|
||||
assert.NotNil(t, cm)
|
||||
|
|
|
@ -10,9 +10,10 @@ import (
|
|||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"sigs.k8s.io/yaml"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
@ -9,11 +9,12 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/utils/defaults"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/utils/defaults"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake"
|
||||
informerfactory "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions"
|
||||
logutil "github.com/argoproj/argo-rollouts/utils/log"
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package metrics
|
||||
|
||||
import (
|
||||
"github.com/argoproj/argo-rollouts/utils/version"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/utils/version"
|
||||
)
|
||||
|
||||
// Follow Prometheus naming practices
|
||||
|
|
|
@ -10,10 +10,11 @@ import (
|
|||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"sigs.k8s.io/yaml"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
"github.com/argoproj/argo-rollouts/utils/conditions"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
"github.com/argoproj/argo-rollouts/utils/conditions"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
@ -1,24 +1,21 @@
|
|||
package controller
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/pprof"
|
||||
)
|
||||
|
||||
const (
|
||||
ProfilingPath = "/debug/pprof"
|
||||
)
|
||||
|
||||
// NewPProfServer returns a new pprof server to gather runtime profiling data
|
||||
func NewPProfServer() *http.ServeMux {
|
||||
mux := http.NewServeMux()
|
||||
|
||||
mux.HandleFunc(ProfilingPath, pprof.Index)
|
||||
mux.HandleFunc(fmt.Sprintf("%s/cmdline", ProfilingPath), pprof.Cmdline)
|
||||
mux.HandleFunc(fmt.Sprintf("%s/profile", ProfilingPath), pprof.Profile)
|
||||
mux.HandleFunc(fmt.Sprintf("%s/symbol", ProfilingPath), pprof.Symbol)
|
||||
mux.HandleFunc(fmt.Sprintf("%s/trace", ProfilingPath), pprof.Trace)
|
||||
// TODO: Remove enumerating all pprof endpoints if/when a more ergonomic
|
||||
// attachment solution is introduced. See: https://github.com/golang/go/issues/71213.
|
||||
mux.HandleFunc("/debug/pprof/", pprof.Index)
|
||||
mux.HandleFunc("/debug/pprof/cmdline/", pprof.Cmdline)
|
||||
mux.HandleFunc("/debug/pprof/profile/", pprof.Profile)
|
||||
mux.HandleFunc("/debug/pprof/symbol/", pprof.Symbol)
|
||||
mux.HandleFunc("/debug/pprof/trace/", pprof.Trace)
|
||||
|
||||
return mux
|
||||
}
|
||||
|
|
|
@ -114,6 +114,24 @@ To run a subset of e2e tests, you need to specify the suite with `-run`, and the
|
|||
E2E_TEST_OPTIONS="-run 'TestCanarySuite' -testify.m 'TestCanaryScaleDownOnAbortNoTrafficRouting'" make test-e2e
|
||||
```
|
||||
|
||||
Available test suites [are the following](https://github.com/argoproj/argo-rollouts/tree/master/test/e2e):
|
||||
|
||||
* `TestBlueGreenSuite`
|
||||
* `TestCanarySuite`
|
||||
* `TestAnalysisSuite`
|
||||
* `TestExperimentSuite`
|
||||
* `TestFunctionalSuite`
|
||||
* `TestRollbackSuite`
|
||||
* `TestIstioSuite`
|
||||
* `TestHeaderRoutingSuite` (Istio only)
|
||||
* `TestMirrorRouteSuite` (Istio only)
|
||||
* `TestAPISIXSuite`
|
||||
* `TestAppMeshSuite`
|
||||
* `TestAWSSuite`
|
||||
* `StepPluginSuite`
|
||||
* `SMISuite` (SMI is [deprecated](https://www.cncf.io/blog/2023/10/03/cncf-archives-the-service-mesh-interface-smi-project/))
|
||||
* `SMIIngressSuite` (SMI is [deprecated](https://www.cncf.io/blog/2023/10/03/cncf-archives-the-service-mesh-interface-smi-project/))
|
||||
|
||||
## Running the UI
|
||||
|
||||
If you'd like to run the UI locally, you first need a running Rollouts controller. This can be a locally running controller with a k3d cluster, as described above, or a controller running in a remote Kubernetes cluster.
|
||||
|
|
|
@ -15,7 +15,7 @@ Argo CD understands the health of Argo Rollouts resources via Argo CD’s [Lua h
|
|||
As a result, an operator can build automation to react to the states of the Argo Rollouts resources. For example, if a Rollout created by Argo CD is paused, Argo CD detects that and marks the Application as suspended. Once the new version is verified to be good, the operator can use Argo CD’s resume resource action to unpause the Rollout so it can continue to make progress.
|
||||
|
||||
### Can we run the Argo Rollouts kubectl plugin commands via Argo CD?
|
||||
Argo CD supports running Lua scripts to modify resource kinds (i.e. suspending a CronJob by setting the `.spec.suspend` to true). These Lua Scripts can be configured in the argocd-cm ConfigMap or upstreamed to the Argo CD's [resource_customizations](https://github.com/argoproj/argo-cd/tree/master/resource_customizations) directory. These custom actions have two Lua scripts: one to modify the said resource and another to detect if the action can be executed (i.e. A user should not be able to resuming a unpaused Rollout). Argo CD allows users to execute these actions via the UI or CLI.
|
||||
Argo CD supports running Lua scripts to modify resource kinds (i.e. suspending a CronJob by setting the `.spec.suspend` to true). These Lua Scripts can be configured in the argocd-cm ConfigMap or upstreamed to the Argo CD's [resource_customizations](https://github.com/argoproj/argo-cd/tree/master/resource_customizations) directory. These custom actions have two Lua scripts: one to modify the said resource and another to detect if the action can be executed (i.e. A user should not be able to resuming an unpaused Rollout). Argo CD allows users to execute these actions via the UI or CLI.
|
||||
|
||||
In the CLI, a user (or a CI system) can run
|
||||
```bash
|
||||
|
@ -47,6 +47,10 @@ Yes. A k8s cluster can run multiple replicas of Argo-rollouts controllers to ach
|
|||
|
||||
No you cannot do that (even though Argo CD can work that way). This is by design because the Rollout is a custom resource unknown to vanilla Kubernetes. You need the Rollout CRD as well as the controller in the deployment cluster (every cluster that will use workloads with Rollouts).
|
||||
|
||||
### What is the version skew policy between the controller and the kubectl plugin?
|
||||
|
||||
The Argo Rollout CLI/Kubectl plugin just patches the Rollout object or reads fields from it. [There is no separate "Argo Rollouts API"](../best-practices#there-is-no-argo-rollouts-api). Old versions of the plugin might not understand new fields that are added in the [Rollout specification](../features/specification/). We have never made a breaking change intentionally (removed something from the Rollout Spec). So old clients should work even with newer Rollout versions (excluding new features).
|
||||
|
||||
## Rollouts
|
||||
|
||||
### Which deployment strategies does Argo Rollouts support?
|
||||
|
|
|
@ -57,29 +57,29 @@ stringData:
|
|||
|
||||
Let me know if there's anything else you'd like to adjust!
|
||||
|
||||
```yaml
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: AnalysisTemplate
|
||||
metadata:
|
||||
name: loq-error-rate
|
||||
spec:
|
||||
args:
|
||||
- name: service-name
|
||||
metrics:
|
||||
- name: error-rate
|
||||
```yaml
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: AnalysisTemplate
|
||||
metadata:
|
||||
name: loq-error-rate
|
||||
spec:
|
||||
args:
|
||||
- name: service-name
|
||||
metrics:
|
||||
- name: error-rate
|
||||
interval: 5m
|
||||
successCondition: result <= 0.01
|
||||
failureLimit: 3
|
||||
provider:
|
||||
datadog:
|
||||
apiVersion: v2
|
||||
interval: 5m
|
||||
successCondition: result <= 0.01
|
||||
failureLimit: 3
|
||||
provider:
|
||||
datadog:
|
||||
apiVersion: v2
|
||||
interval: 5m
|
||||
secretRef:
|
||||
name: "mysecret"
|
||||
namespaced: true
|
||||
query: |
|
||||
sum:requests.error.rate{service:{{args.service-name}}}
|
||||
```
|
||||
secretRef:
|
||||
name: "mysecret"
|
||||
namespaced: true
|
||||
query: |
|
||||
sum:requests.error.rate{service:{{args.service-name}}}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
@ -194,7 +194,7 @@ successCondition: default(result, 0) < 0.05
|
|||
|
||||
#### Metric aggregation (v2 only)
|
||||
|
||||
By default, Datadog analysis run is configured to use `last` metric aggregator when querying Datadog v2 API. This value can be overriden by specifying a new `aggregator` value from a list of supported aggregators (`avg,min,max,sum,last,percentile,mean,l2norm,area`) for the V2 API ([docs](https://docs.datadoghq.com/api/latest/metrics/#query-scalar-data-across-multiple-products)).
|
||||
By default, Datadog analysis run is configured to use `last` metric aggregator when querying Datadog v2 API. This value can be overridden by specifying a new `aggregator` value from a list of supported aggregators (`avg,min,max,sum,last,percentile,mean,l2norm,area`) for the V2 API ([docs](https://docs.datadoghq.com/api/latest/metrics/#query-scalar-data-across-multiple-products)).
|
||||
|
||||
For example, using count-based distribution metric (`count:metric{*}.as_count()`) with values `1,9,3,7,5` in a given `interval` will make `last` aggregator return `5`. To return a sum of all values (`25`), set `aggregator: sum` in Datadog provider block and use `moving_rollup()` function to aggregate values in the specified rollup interval. These functions can be combined in a `formula` to perform additional calculations:
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ here: [rollouts-plugin-metric-sample-prometheus](https://github.com/argoproj-lab
|
|||
## Installing
|
||||
|
||||
There are two methods of installing and using an argo rollouts plugin. The first method is to mount up the plugin executable
|
||||
into the rollouts controller container. The second method is to use a HTTP(S) server to host the plugin executable.
|
||||
into the rollouts controller container. The second method is to use an HTTP(S) server to host the plugin executable.
|
||||
|
||||
### Mounting the plugin executable into the rollouts controller container
|
||||
|
||||
|
@ -33,11 +33,11 @@ metadata:
|
|||
name: argo-rollouts-config
|
||||
data:
|
||||
metricProviderPlugins: |-
|
||||
- name: "argoproj-labs/sample-prometheus" # name of the plugin, it must match the name required by the plugin so it can find it's configuration
|
||||
- name: "argoproj-labs/sample-prometheus" # name of the plugin, it must match the name required by the plugin so it can find its configuration
|
||||
location: "file://./my-custom-plugin" # supports http(s):// urls and file://
|
||||
```
|
||||
|
||||
### Using a HTTP(S) server to host the plugin executable
|
||||
### Using an HTTP(S) server to host the plugin executable
|
||||
|
||||
!!! warning "Installing a plugin with http(s)"
|
||||
|
||||
|
@ -52,7 +52,7 @@ data:
|
|||
deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the
|
||||
responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach.
|
||||
|
||||
Argo Rollouts supports downloading the plugin executable from a HTTP(S) server. To use this method, you will need to
|
||||
Argo Rollouts supports downloading the plugin executable from an HTTP(S) server. To use this method, you will need to
|
||||
configure the controller via the `argo-rollouts-config` configmap and set `pluginLocation` to a http(s) url. Example:
|
||||
|
||||
```yaml
|
||||
|
@ -62,7 +62,7 @@ metadata:
|
|||
name: argo-rollouts-config
|
||||
data:
|
||||
metricProviderPlugins: |-
|
||||
- name: "argoproj-labs/sample-prometheus" # name of the plugin, it must match the name required by the plugin so it can find it's configuration
|
||||
- name: "argoproj-labs/sample-prometheus" # name of the plugin, it must match the name required by the plugin so it can find its configuration
|
||||
location: "https://github.com/argoproj-labs/rollouts-plugin-metric-sample-prometheus/releases/download/v0.0.4/metric-plugin-linux-amd64" # supports http(s):// urls and file://
|
||||
sha256: "dac10cbf57633c9832a17f8c27d2ca34aa97dd3d" #optional sha256 checksum of the plugin executable
|
||||
headersFrom: #optional headers for the download via http request
|
||||
|
|
|
@ -137,7 +137,7 @@ spec:
|
|||
authentication:
|
||||
oauth2:
|
||||
tokenUrl: https://my-oauth2-provider/token
|
||||
clientId: my-cliend-id
|
||||
clientId: my-client-id
|
||||
clientSecret: "{{ args.oauthSecret }}"
|
||||
scopes: [
|
||||
"my-oauth2-scope"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Web Metrics
|
||||
|
||||
An HTTP request can be performed against some external service to obtain the measurement. This example
|
||||
makes a HTTP GET request to some URL. The webhook response must return JSON content. The result of
|
||||
makes an HTTP GET request to some URL. The webhook response must return JSON content. The result of
|
||||
the optional `jsonPath` expression will be assigned to the `result` variable that can be referenced
|
||||
in the `successCondition` and `failureCondition` expressions. If omitted, will use the entire body
|
||||
of the as the result variable.
|
||||
|
@ -143,7 +143,7 @@ spec:
|
|||
authentication:
|
||||
oauth2:
|
||||
tokenUrl: https://my-oauth2-provider/token
|
||||
clientId: my-cliend-id
|
||||
clientId: my-client-id
|
||||
clientSecret: "{{ args.oauthSecret }}"
|
||||
scopes: [
|
||||
"my-oauth2-scope"
|
||||
|
|
|
@ -53,7 +53,7 @@ div[data-md-component=announce]>div#announce-msg>a{
|
|||
}
|
||||
|
||||
/* from https://assets.readthedocs.org/static/css/badge_only.css,
|
||||
most styles have to be overriden here */
|
||||
most styles have to be overridden here */
|
||||
.rst-versions{
|
||||
position: relative !important;
|
||||
bottom: 0;
|
||||
|
|
|
@ -13,7 +13,7 @@ Note that using Argo Rollouts for "infrastructure" applications such as cert-man
|
|||
|
||||
## Understand the scope of Argo Rollouts
|
||||
|
||||
Currently Argo Rollouts works with a single Kubernetes deployment/application and within a single cluster only. You also need to have the controller deployed on *every* cluster where a Rollout is running if have more than one clusters using Rollout workloads.
|
||||
Currently, Argo Rollouts works with a single Kubernetes deployment/application and within a single cluster only. You also need to have the controller deployed on *every* cluster where a Rollout is running if have more than one clusters using Rollout workloads.
|
||||
|
||||
If you want to look at multiple-services on multiple clusters
|
||||
see discussion at issues [2737](https://github.com/argoproj/argo-rollouts/issues/2737), [451](https://github.com/argoproj/argo-rollouts/issues/451) and [2088](https://github.com/argoproj/argo-rollouts/issues/2088).
|
||||
|
@ -37,11 +37,11 @@ Then somebody deploys 1.5
|
|||
1. Some people believe that the new state should be 1.3 stable and 1.5 as preview
|
||||
1. Some people believe that the new state should be 1.4 stable and 1.5 as preview
|
||||
|
||||
Currently Argo Rollouts follows the first approach, under the assumption that something was really wrong with 1.4 and 1.5 is the hotfix.
|
||||
Currently, Argo Rollouts follows the first approach, under the assumption that something was really wrong with 1.4 and 1.5 is the hotfix.
|
||||
|
||||
And then let's say that 1.5 has an issue. Some people believe that Argo rollouts should "rollback" to 1.3 while other people think it should rollback to 1.4
|
||||
|
||||
Currently Argo Rollouts assumes that the version to rollback is always 1.3 regardless of how many "hotfixes" have been previewed in-between.
|
||||
Currently, Argo Rollouts assumes that the version to rollback is always 1.3 regardless of how many "hotfixes" have been previewed in-between.
|
||||
|
||||
All these problems are not present if you make the assumption that each release stays active only for a minimal time and you always create one new version when the previous one has finished.
|
||||
|
||||
|
@ -144,7 +144,7 @@ spec:
|
|||
number: 443
|
||||
```
|
||||
|
||||
The above technique has the a benefit in that it would not incur additional cost of allocating
|
||||
The above technique has a benefit in that it would not incur additional cost of allocating
|
||||
additional load balancers.
|
||||
|
||||
## Reducing operator memory usage
|
||||
|
|
|
@ -75,4 +75,4 @@ Here is a summary table for the possible approaches.
|
|||
| Advanced routing scenarios | No | No | Yes |
|
||||
| Failure Blast Radius | Massive impact | Low impact | Low impact |
|
||||
|
||||
Note that that traffic manager can be any compatible Service Mesh or Ingress Controller or Gateway API implementation (via a plugin).
|
||||
Note that the traffic manager can be any compatible Service Mesh or Ingress Controller or Gateway API implementation (via a plugin).
|
||||
|
|
|
@ -759,6 +759,67 @@ The entire analysis run is considered as Failed after three failed measurements.
|
|||
))
|
||||
```
|
||||
|
||||
## ConsecutiveSuccessLimit and FailureLimit
|
||||
|
||||
!!! important
|
||||
`consecutiveSuccessLimit` available since v1.8
|
||||
|
||||
You can use either `failureLimit` to define a limit for the number of failures before the analysis is considered failed, `consecutiveSuccessLimit` to define the required consecutive number of successes for the analysis to succeed, or both together. One of them has to be applicable (i.e. not disabled, see below for more), otherwise a validation error is thrown.
|
||||
|
||||
To disable:
|
||||
|
||||
* `failureLimit`, set the field to `-1`.
|
||||
* `consecutiveSuccessLimit`, set the field to `0` (the default value).
|
||||
|
||||
The default value for both is `0`, the meaning of which differs for each one of them. A value of `0` for `failureLimit` means its logic _is_ applicable and no failures are tolerated. However, a value of `0` for `consecutiveSuccessLimit` means it's inapplicable or disabled.
|
||||
|
||||
Let's go through each case and show what the behavior would look like.
|
||||
|
||||
### Only FailureLimit applicable
|
||||
|
||||
The behavior is shown above in the [Failure Conditions and Failure Limit](#failure-conditions-and-failure-limit) section. This is the default behavior if you set nothing of the two fields (with `failureLimit` having a default value of `0`, so no failures are tolerated).
|
||||
|
||||
|
||||
### Only ConsecutiveSuccessLimit applicable
|
||||
|
||||
To have this behavior, you need to have something like
|
||||
```yaml
|
||||
failureLimit: -1
|
||||
consecutiveSuccessLimit: 4 # Any value > 0
|
||||
```
|
||||
|
||||
This behavior is essentially waiting for a condition to hold, or an event to happen. That is, keep measuring a metric and keep failing until you measure `N` consecutive successful measurements, at which point the analysis concludes successfully. This can be useful as an event-driven way of promoting a rollout when used in an inline analysis.
|
||||
|
||||
|
||||
### Both FailureLimit and ConsecutiveSuccessLimit applicable
|
||||
|
||||
To have this behavior, you need to have something like
|
||||
```yaml
|
||||
failureLimit: 3 # Any value >= 0
|
||||
consecutiveSuccessLimit: 4 # Any value > 0
|
||||
```
|
||||
|
||||
The behavior is simply waiting to measure `N` consecutive successful measurements, _while_ being limited by the number of overall failures specified by `failureLimit`. Above, we need to have at most 3 failures before we get 4 consecutive successful measurements for the analysis to be considered successful.
|
||||
|
||||
|
||||
In case of an analysis that has `count` specified (that is, runs for a specific amount of time) and that `count` is reached, the evaluation of success is as follows:
|
||||
|
||||
* `failureLimit` is violated and `consecutiveSuccessLimit` is satisfied: Failure.
|
||||
* `failureLimit` is violated and `consecutiveSuccessLimit` is not satisfied: Failure.
|
||||
* `failureLimit` is not violated and `consecutiveSuccessLimit` is satisfied: Success.
|
||||
* `failureLimit` is not violated and `consecutiveSuccessLimit` is not satisfied: Inconclusive State.
|
||||
|
||||
As illustrated, `failureLimit` takes priority if violated. However, if neither is violated/satisfied, the analysis reaches an inconclusive state.
|
||||
|
||||
|
||||
!!! note
|
||||
When terminating analyses prematurely, they are always terminated successfully, unless it happens that `failureLimit` is enabled and violated, then they terminate in failure. `consecutiveSuccessLimit`, if enabled, doesn't affect the termination status.
|
||||
|
||||
For more clarity, examples of analyses terminated "prematurely":
|
||||
|
||||
* A background analysis with `count` not specified when terminated at the end of the rollout.
|
||||
* Any analysis with `count` specified and not yet reached when the rollout is aborted.
|
||||
|
||||
## Dry-Run Mode
|
||||
|
||||
!!! important
|
||||
|
@ -1090,7 +1151,7 @@ A use case for having `Inconclusive` analysis runs are to enable Argo Rollouts t
|
|||
whether or not measurement value is acceptable and decide to proceed or abort.
|
||||
|
||||
## Delay Analysis Runs
|
||||
If the analysis run does not need to start immediately (i.e give the metric provider time to collect
|
||||
If the analysis run does not need to start immediately (i.e. give the metric provider time to collect
|
||||
metrics on the canary version), Analysis Runs can delay the specific metric analysis. Each metric
|
||||
can be configured to have a different delay. In additional to the metric specific delays, the rollouts
|
||||
with background analysis can delay creating an analysis run until a certain step is reached
|
||||
|
|
|
@ -42,7 +42,7 @@ This feature will not modify any of the ReplicaSet's pre-existing affinity rules
|
|||
Users have a choice between these scheduling rules: `RequiredDuringSchedulingIgnoredDuringExecution` and `PreferredDuringSchedulingIgnoredDuringExecution`.
|
||||
|
||||
`RequiredDuringSchedulingIgnoredDuringExecution` requires a new version's pods to be on a separate node than the previous versions. If this
|
||||
is not possible, the the new version's pods will not be scheduled.
|
||||
is not possible, the new version's pods will not be scheduled.
|
||||
|
||||
```yaml
|
||||
strategy:
|
||||
|
|
|
@ -11,6 +11,12 @@ When there is a change to the `.spec.template` field of a rollout, the controlle
|
|||
!!! important
|
||||
When the rollout changes the selector on a service, there is a propagation delay before all the nodes update their IP tables to send traffic to the new pods instead of the old. During this delay, traffic will be directed to the old pods if the nodes have not been updated yet. In order to prevent the packets from being sent to a node that killed the old pod, the rollout uses the scaleDownDelaySeconds field to give nodes enough time to broadcast the IP table changes.
|
||||
|
||||
!!! important
|
||||
ALB Ingress with Rollouts blue-green strategy is not supported without a chance of downtime.
|
||||
|
||||
When using an AWS ALB to route traffic to a service, the ALB Ingress Controller does not update the target groups in an atomic or safe manner. This can result in a situation where, during a deployment, the stable target group temporarily has no pods registered. This occurs because the ALB Controller removes all current pods from the target group before registering pods from the desired ReplicaSet.
|
||||
The desired pods must pass their initial configured health check on the stable target group to be considered healthy by the ALB. This creates a risk where the ALB may temporarily have no healthy pods registered to the target group, depending on the timing of deregistration and registration of new pods. This can lead to application downtime that the rollouts controller cannot prevent.
|
||||
|
||||
## Example
|
||||
|
||||
```yaml
|
||||
|
@ -98,7 +104,7 @@ Setting a positive non-zero value here would make the rollout automatically prom
|
|||
Defaults to nil
|
||||
|
||||
### antiAffinity
|
||||
Check out the [Anti Affinity document](anti-affinity/anti-affinity.md) document for more information.
|
||||
Check out the [Anti Affinity document](anti-affinity/anti-affinity.md) for more information.
|
||||
|
||||
Defaults to nil
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ match the traffic weight. Some use cases for this:
|
|||
|
||||
Setting canary scale is only available when using the canary strategy with a traffic router, since the basic canary needs to control canary scale in order to approximate canary weight.
|
||||
|
||||
To control canary scales and weights during steps, use the `setCanaryScale` step and indicate which scale the
|
||||
To control canary scales and weights during steps, use the `setCanaryScale` step and indicate which scale
|
||||
the canary should use:
|
||||
|
||||
- explicit replica count without changing traffic weight (`replicas`)
|
||||
|
@ -196,13 +196,13 @@ spec:
|
|||
|
||||
### analysis
|
||||
|
||||
Configure the background [Analysis](analysis.md) to execute during the rollout. If the analysis is unsuccessful the rollout will be aborted.
|
||||
Configure the background [Analysis](../analysis.md) to execute during the rollout. If the analysis is unsuccessful the rollout will be aborted.
|
||||
|
||||
Defaults to nil
|
||||
|
||||
### antiAffinity
|
||||
|
||||
Check out the [Anti Affinity document](anti-affinity/anti-affinity.md) document for more information.
|
||||
Check out the [Anti Affinity](../anti-affinity/anti-affinity.md) document for more information.
|
||||
|
||||
Defaults to nil
|
||||
|
||||
|
@ -232,6 +232,6 @@ Defaults to 25%
|
|||
|
||||
### trafficRouting
|
||||
|
||||
The [traffic management](traffic-management/index.md) rules to apply to control the flow of traffic between the active and canary versions. If not set, the default weighted pod replica based routing will be used.
|
||||
The [traffic management](../traffic-management/index.md) rules to apply to control the flow of traffic between the active and canary versions. If not set, the default weighted pod replica based routing will be used.
|
||||
|
||||
Defaults to nil
|
||||
|
|
|
@ -12,7 +12,7 @@ to support executing arbitrary steps during the canary. Rollout's uses a plugin
|
|||
## Installing
|
||||
|
||||
There are two methods of installing and using an Argo Rollouts plugin. The first method is to mount up the plugin executable
|
||||
into the rollouts controller container. The second method is to use a HTTP(S) server to host the plugin executable.
|
||||
into the rollouts controller container. The second method is to use an HTTP(S) server to host the plugin executable.
|
||||
|
||||
### Mounting the plugin executable into the rollouts controller container
|
||||
|
||||
|
@ -32,11 +32,11 @@ metadata:
|
|||
name: argo-rollouts-config
|
||||
data:
|
||||
stepPlugins: |-
|
||||
- name: "argoproj-labs/sample-step" # name of the plugin, it must match the name required by the plugin so it can find it's configuration
|
||||
- name: "argoproj-labs/sample-step" # name of the plugin, it must match the name required by the plugin so it can find its configuration
|
||||
location: "file://./my-custom-plugin" # supports http(s):// urls and file://
|
||||
```
|
||||
|
||||
### Using a HTTP(S) server to host the plugin executable
|
||||
### Using an HTTP(S) server to host the plugin executable
|
||||
|
||||
!!! warning "Installing a plugin with http(s)"
|
||||
|
||||
|
@ -51,7 +51,7 @@ data:
|
|||
deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the
|
||||
responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach.
|
||||
|
||||
Argo Rollouts supports downloading the plugin executable from a HTTP(S) server. To use this method, you will need to
|
||||
Argo Rollouts supports downloading the plugin executable from an HTTP(S) server. To use this method, you will need to
|
||||
configure the controller via the `argo-rollouts-config` ConfigMap and set `pluginLocation` to a http(s) url. Example:
|
||||
|
||||
```yaml
|
||||
|
@ -61,7 +61,7 @@ metadata:
|
|||
name: argo-rollouts-config
|
||||
data:
|
||||
stepPlugins: |-
|
||||
- name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find it's configuration
|
||||
- name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find its configuration
|
||||
location: "https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx/releases/download/v0.0.1/metric-plugin-linux-amd64" # supports http(s):// urls and file://
|
||||
sha256: "08f588b1c799a37bbe8d0fc74cc1b1492dd70b2c" # optional sha256 checksum of the plugin executable
|
||||
```
|
||||
|
|
|
@ -2,19 +2,31 @@
|
|||
|
||||
!!! important
|
||||
|
||||
Available for canary rollouts since v0.10.0
|
||||
This is an **optional** feature of Argo Rollouts that allows you to have more visibility while a rollout is in progress. You do **NOT** need to use emphemeral metadata in order to achieve the main functionality of Argo Rollouts.
|
||||
|
||||
!!! important
|
||||
Normally during a deployment, Argo Rollouts automatically handles the pods of the new and old versions along with their labels and their association with your traffic provider (if you use one).
|
||||
|
||||
Available for blue-green rollouts since v1.0
|
||||
In some scenarios however,
|
||||
|
||||
One use case is for a Rollout to label or annotate the desired/stable pods with user-defined
|
||||
1. You might want to annotate the pods of each version with your own custom labels
|
||||
1. You may want the application itself know when a deployment is happening
|
||||
|
||||
|
||||
Argo Rollouts gives you the capability to label or annotate the desired/stable pods with user-defined
|
||||
labels/annotations, for _only_ the duration which they are the desired or stable set, and for the
|
||||
labels to be updated/removed as soon as the ReplicaSet switches roles (e.g. from desired to stable).
|
||||
The use case which this enables, is to allow prometheus, wavefront, datadog queries and dashboards
|
||||
|
||||
In the first use case this allows prometheus, wavefront, datadog queries and dashboards
|
||||
to be built, which can rely on a consistent list of labels, rather than the `rollouts-pod-template-hash`
|
||||
which is unpredictable and changing from revision to revision.
|
||||
|
||||
In the second use case you can have your application read the labels itself using the [Kubernetes Downward API](https://kubernetes.io/docs/concepts/workloads/pods/downward-api/) and adjust
|
||||
its behavior automatically only for the duration of the canary/blue/green deployment. For example you could point your application
|
||||
to a different Queue server while the application pods are in "preview" and only use the production instance of your Queue server
|
||||
when the pods are marked as "stable".
|
||||
|
||||
## Using Ephemeral labels
|
||||
|
||||
A Rollout using the canary strategy has the ability to attach ephemeral metadata to the stable or
|
||||
canary Pods using the `stableMetadata` and `canaryMetadata` fields respectively.
|
||||
|
||||
|
@ -47,12 +59,14 @@ spec:
|
|||
|
||||
During an update, the Rollout will create the desired ReplicaSet while also merging the metadata
|
||||
defined in `canaryMetadata`/`previewMetadata` to the desired ReplicaSet's `spec.template.metadata`.
|
||||
This results in all Pods of the ReplicaSet being created with the desired metadata. When the rollout
|
||||
This results in all Pods of the ReplicaSet being created with the desired metadata.
|
||||
|
||||
When the rollout
|
||||
becomes fully promoted, the desired ReplicaSet becomes the stable, and is updated to use the labels
|
||||
and annotations under `stableMetadata`/`activeMetadata`. The Pods of the ReplicaSet will then be
|
||||
updated _in place_ to use the stable metadata (without recreating the pods).
|
||||
|
||||
!!! important
|
||||
!!! tip
|
||||
In order for tooling to take advantage of this feature, they would need to recognize the change in
|
||||
labels and/or annotations that happen _after_ the Pod has already started. Not all tools may detect
|
||||
this.
|
||||
this. For application code apart from the Kubernetes Downward API you also need a programming library that automatically reloads configuration files when they change their contents.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/namereference.go
|
||||
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/internal/konfig/builtinpluginconsts/namereference.go
|
||||
nameReference:
|
||||
- kind: ConfigMap
|
||||
version: v1
|
||||
|
@ -182,7 +182,7 @@ nameReference:
|
|||
- path: spec/strategy/canary/trafficRouting/ambassador/mappings
|
||||
kind: Rollout
|
||||
|
||||
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/commonlabels.go
|
||||
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/internal/konfig/builtinpluginconsts/commonlabels.go
|
||||
commonLabels:
|
||||
- path: spec/selector/matchLabels
|
||||
create: true
|
||||
|
@ -203,13 +203,13 @@ commonLabels:
|
|||
create: false
|
||||
kind: Rollout
|
||||
|
||||
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/commonannotations.go
|
||||
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/internal/konfig/builtinpluginconsts/commonannotations.go
|
||||
commonAnnotations:
|
||||
- path: spec/template/metadata/annotations
|
||||
create: true
|
||||
kind: Rollout
|
||||
|
||||
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/varreference.go
|
||||
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/internal/konfig/builtinpluginconsts/varreference.go
|
||||
varReference:
|
||||
- path: spec/template/spec/containers/args
|
||||
kind: Rollout
|
||||
|
@ -262,7 +262,7 @@ varReference:
|
|||
- path: spec/metrics/provider/job/spec/template/spec/volumes/nfs/server
|
||||
kind: AnalysisTemplate
|
||||
|
||||
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/konfig/builtinpluginconsts/replicas.go
|
||||
# https://github.com/kubernetes-sigs/kustomize/blob/master/api/internal/konfig/builtinpluginconsts/replicas.go
|
||||
replicas:
|
||||
- path: spec/replicas
|
||||
create: true
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -68,7 +68,7 @@ To enable you need to add a flag to the controller `--self-service-notification-
|
|||
|
||||
## Default Trigger templates
|
||||
|
||||
Currently the following triggers have [built-in templates](https://github.com/argoproj/argo-rollouts/tree/master/manifests/notifications).
|
||||
Currently, the following triggers have [built-in templates](https://github.com/argoproj/argo-rollouts/tree/master/manifests/notifications).
|
||||
|
||||
* `on-analysis-run-error` when an error occurs during the execution of an analysis run
|
||||
* `on-analysis-run-failed` when an analysis run fails
|
||||
|
|
|
@ -23,7 +23,7 @@ argocd app actions run my-app restart --kind Rollout --resource-name my-rollout
|
|||
```
|
||||
|
||||
Both of these mechanisms updates the Rollout's `.spec.restartAt` to the current time in the
|
||||
form of a [RFC 3339 formatted](https://tools.ietf.org/html/rfc3339) UTC string
|
||||
form of an [RFC 3339 formatted](https://tools.ietf.org/html/rfc3339) UTC string
|
||||
(e.g. 2020-03-30T21:19:35Z), which indicates to the Rollout controller that all of a Rollout's
|
||||
Pods should have been created after this timestamp.
|
||||
|
||||
|
|
|
@ -276,7 +276,7 @@ spec:
|
|||
# Pauses indefinitely until manually resumed
|
||||
- pause: {}
|
||||
|
||||
# set canary scale to a explicit count without changing traffic weight
|
||||
# set canary scale to an explicit count without changing traffic weight
|
||||
# (supported only with trafficRouting)
|
||||
- setCanaryScale:
|
||||
replicas: 3
|
||||
|
@ -291,6 +291,19 @@ spec:
|
|||
- setCanaryScale:
|
||||
matchTrafficWeight: true
|
||||
|
||||
# The percentage or number of replica pods within the applications ReplicaSet
|
||||
# that are available and ready when a rollout is ready to be promoted. Useful if your application
|
||||
# configured an HPA to help handle different loads of traffic, but you still want quick promotions.
|
||||
# Defaults to 100% if replicaProgressThreshold is not specified.
|
||||
# The 'type' field should be either "Percent" | "Pod"
|
||||
# Current percentage that is checked against the input percent value is calculated by the following:
|
||||
# CURRENT PERCENTAGE = available replicas / desired replicas for the current step
|
||||
# +optional
|
||||
- replicaProgressThreshold:
|
||||
type: Percent
|
||||
value: 90
|
||||
|
||||
|
||||
# executes the configured plugin by name with the provided configuration
|
||||
- plugin:
|
||||
name: example
|
||||
|
|
|
@ -149,7 +149,7 @@ spec:
|
|||
By default, a rollout will inject the `alb.ingress.kubernetes.io/actions.<SERVICE-NAME>` annotation
|
||||
using the service/action name specified under `spec.strategy.canary.stableService`. However, it may
|
||||
be desirable to specify an explicit service/action name different from the `stableService`. For
|
||||
example, [one pattern](/argo-rollouts/best-practices/#ingress-desiredstable-host-routes) is to use a single
|
||||
example, [one pattern](/best-practices/#ingress-desiredstable-host-routes) is to use a single
|
||||
Ingress containing three different rules to reach the canary, stable, and root service separately
|
||||
(e.g. for testing purposes). In this case, you may want to specify a "root" service as the
|
||||
service/action name instead of stable. To do so, reference a service under `rootService` under the
|
||||
|
@ -308,6 +308,9 @@ spec:
|
|||
args: [--aws-verify-target-group]
|
||||
# NOTE: in v1.0, the --alb-verify-weight flag should be used instead
|
||||
```
|
||||
!!! note
|
||||
|
||||
The `--aws-region` flag is mandatory for enabling AWS integrations, including TargetGroup verification. If the Argo Rollouts controller does not have the correct AWS region specified, or lacks access to validate the AWS ALB, the promotion process will fail. Ensure that the necessary AWS API permissions are granted to the controller and that the region is correctly configured.
|
||||
|
||||
For this feature to work, the argo-rollouts deployment requires the following AWS API permissions
|
||||
under the [Elastic Load Balancing API](https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/Welcome.html):
|
||||
|
|
|
@ -65,7 +65,7 @@ When Ambassador is configured in the `trafficRouting` attribute of the manifest,
|
|||
|
||||
## Endpoint Resolver
|
||||
|
||||
By default, Ambassador uses kube-proxy to route traffic to Pods. However we should configure it to bypass kube-proxy and route traffic directly to pods. This will provide true L7 load balancing which is desirable in a canary workflow. This approach is called [endpoint routing](https://www.getambassador.io/docs/latest/topics/running/load-balancer/) and can be achieve by configuring [endpoint resolvers](https://www.getambassador.io/docs/latest/topics/running/resolvers/#the-kubernetes-endpoint-resolver).
|
||||
By default, Ambassador uses kube-proxy to route traffic to Pods. However we should configure it to bypass kube-proxy and route traffic directly to pods. This will provide true L7 load balancing which is desirable in a canary workflow. This approach is called [endpoint routing](https://www.getambassador.io/docs/latest/topics/running/load-balancer/) and can be achieved by configuring [endpoint resolvers](https://www.getambassador.io/docs/latest/topics/running/resolvers/#the-kubernetes-endpoint-resolver).
|
||||
|
||||
To configure Ambassador to use endpoint resolver it is necessary to apply the following resource in the cluster:
|
||||
|
||||
|
|
|
@ -175,16 +175,16 @@ spec:
|
|||
steps:
|
||||
- setCanaryScale:
|
||||
weight: 25
|
||||
- setMirrorRoute:
|
||||
name: mirror-route
|
||||
percentage: 35
|
||||
match:
|
||||
- method:
|
||||
exact: GET
|
||||
path:
|
||||
prefix: /
|
||||
- pause:
|
||||
duration: 10m
|
||||
- setMirrorRoute:
|
||||
name: "mirror-route" # removes mirror based traffic route
|
||||
- setMirrorRoute:
|
||||
name: mirror-route
|
||||
percentage: 35
|
||||
match:
|
||||
- method:
|
||||
exact: GET
|
||||
path:
|
||||
prefix: /
|
||||
- pause:
|
||||
duration: 10m
|
||||
- setMirrorRoute:
|
||||
name: "mirror-route" # removes mirror based traffic route
|
||||
```
|
|
@ -19,6 +19,10 @@ are available as options in Argo Rollouts:
|
|||
1. [Host-level traffic splitting](#host-level-traffic-splitting)
|
||||
2. [Subset-level traffic splitting](#subset-level-traffic-splitting)
|
||||
|
||||
!!! note
|
||||
|
||||
When using Istio only traffic that is within the service mesh will follow the rollout strategy. Pods excluded from the service mesh (e.g., because of a `sidecar.istio.io/inject="false"` label) will follow default Kubernetes traffic routing.
|
||||
|
||||
## Host-level Traffic Splitting
|
||||
|
||||
The first approach to traffic splitting using Argo Rollouts and Istio, is splitting between two
|
||||
|
@ -303,7 +307,7 @@ spec:
|
|||
|
||||
## Multicluster Setup
|
||||
If you have [Istio multicluster setup](https://istio.io/latest/docs/setup/install/multicluster/)
|
||||
where the primary Istio cluster is different than the cluster where the Argo Rollout controller
|
||||
where the primary Istio cluster is different from the cluster where the Argo Rollout controller
|
||||
is running, then you need to do the following setup:
|
||||
|
||||
1. Create a `ServiceAccount` in the Istio primary cluster.
|
||||
|
@ -439,12 +443,12 @@ leverage the following Argo CD features:
|
|||
ignoreDifferences:
|
||||
- group: networking.istio.io
|
||||
kind: VirtualService
|
||||
jsonPointers:
|
||||
- /spec/http/0
|
||||
jqPathExpressions:
|
||||
- .spec.http[].route[].weight
|
||||
```
|
||||
|
||||
Ignoring the differences in the VirtualServices HTTP route, prevents gitops differences
|
||||
in the VirtualService HTTP routes to contribute to the overall sync status of the Argo CD
|
||||
Ignoring the differences in the VirtualServices HTTP route weights, prevents GitOps differences
|
||||
in the VirtualService HTTP route weights to contribute to the overall sync status of the Argo CD
|
||||
application. This adds the additional benefit of prevent auto-sync operations from being
|
||||
triggered.
|
||||
|
||||
|
@ -459,6 +463,7 @@ leverage the following Argo CD features:
|
|||
syncPolicy:
|
||||
syncOptions:
|
||||
- ApplyOutOfSyncOnly=true
|
||||
- RespectIgnoreDifferences=true
|
||||
```
|
||||
|
||||
By default, when Argo CD syncs an application, it runs `kubectl apply` against all resources in
|
||||
|
@ -468,11 +473,6 @@ leverage the following Argo CD features:
|
|||
feature, provides a way to manage the conflict in the desired state of a VirtualService between
|
||||
Argo CD and Argo Rollouts.
|
||||
|
||||
Argo CD also has an [open issue here](https://github.com/argoproj/argo-cd/issues/2913) which would
|
||||
help address this problem. The proposed solution is to introduce an annotation to resources, which
|
||||
indicates to Argo CD to respect and preserve the differences at a specified path, in order to allow
|
||||
other controllers (e.g. Argo Rollouts) controller manage them instead.
|
||||
|
||||
## Ping Pong
|
||||
|
||||
!!! important
|
||||
|
|
|
@ -29,14 +29,14 @@ implement more providers such as Istio, SMI, etc.
|
|||
|
||||
### Hybrid Scenarios
|
||||
|
||||
In this case, its very similar to avoiding the Big-Bang, either if it is part of the platform roadmap or a new redesign
|
||||
In this case, it's very similar to avoiding the Big-Bang, either if it is part of the platform roadmap or a new redesign
|
||||
of the architecture, there are multiple scenarios where having the capacity of using multiple trafficRoutings is very
|
||||
much in need: gradual implementation, eased rollback of architecture or even for a fallback.
|
||||
|
||||
## Requirements
|
||||
|
||||
The use of multiple providers requires that both providers comply with its minimum requirements independently.
|
||||
By example, if you want to use NGiNX and SMI you would need to have both SMI and NGiNX in place and produce the rollout configuration
|
||||
For example, if you want to use NGiNX and SMI you would need to have both SMI and NGiNX in place and produce the rollout configuration
|
||||
for both.
|
||||
|
||||
```yaml
|
||||
|
|
|
@ -13,7 +13,7 @@ here: [rollouts-plugin-trafficrouter-sample-nginx](https://github.com/argoproj-l
|
|||
## Installing
|
||||
|
||||
There are two methods of installing and using an argo rollouts plugin. The first method is to mount up the plugin executable
|
||||
into the rollouts controller container. The second method is to use a HTTP(S) server to host the plugin executable.
|
||||
into the rollouts controller container. The second method is to use an HTTP(S) server to host the plugin executable.
|
||||
|
||||
### Mounting the plugin executable into the rollouts controller container
|
||||
|
||||
|
@ -33,11 +33,11 @@ metadata:
|
|||
name: argo-rollouts-config
|
||||
data:
|
||||
trafficRouterPlugins: |-
|
||||
- name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find it's configuration
|
||||
- name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find its configuration
|
||||
location: "file://./my-custom-plugin" # supports http(s):// urls and file://
|
||||
```
|
||||
|
||||
### Using a HTTP(S) server to host the plugin executable
|
||||
### Using an HTTP(S) server to host the plugin executable
|
||||
|
||||
!!! warning "Installing a plugin with http(s)"
|
||||
|
||||
|
@ -52,7 +52,7 @@ data:
|
|||
deleted during a server outage, the other pods will still be able to take over because there will already be a plugin executable available to it. It is the
|
||||
responsibility of the Argo Rollouts administrator to define the plugin installation method considering the risks of each approach.
|
||||
|
||||
Argo Rollouts supports downloading the plugin executable from a HTTP(S) server. To use this method, you will need to
|
||||
Argo Rollouts supports downloading the plugin executable from an HTTP(S) server. To use this method, you will need to
|
||||
configure the controller via the `argo-rollouts-config` configmap and set `pluginLocation` to a http(s) url. Example:
|
||||
|
||||
```yaml
|
||||
|
@ -62,7 +62,7 @@ metadata:
|
|||
name: argo-rollouts-config
|
||||
data:
|
||||
trafficRouterPlugins: |-
|
||||
- name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find it's configuration
|
||||
- name: "argoproj-labs/sample-nginx" # name of the plugin, it must match the name required by the plugin so it can find its configuration
|
||||
location: "https://github.com/argoproj-labs/rollouts-plugin-trafficrouter-sample-nginx/releases/download/v0.0.1/metric-plugin-linux-amd64" # supports http(s):// urls and file://
|
||||
sha256: "08f588b1c799a37bbe8d0fc74cc1b1492dd70b2c" #optional sha256 checksum of the plugin executable
|
||||
headersFrom: #optional headers for the download via http request
|
||||
|
|
|
@ -242,7 +242,7 @@ Status:
|
|||
Events: <none>
|
||||
```
|
||||
|
||||
Here we see the recommendation for cpu, memory with lowerbound, upper bound, Target etc., are provided. If we check the status of the pods.. the older pods with initial configuration would get terminated and newer pods get created.
|
||||
Here we see the recommendation for cpu, memory with lowerbound, upper bound, Target etc., are provided. If we check the status of the pods, the older pods with initial configuration would get terminated and newer pods get created.
|
||||
|
||||
```yaml
|
||||
# kubectl get po -n test-vpa -w
|
||||
|
@ -337,7 +337,7 @@ Events:
|
|||
## Requirements
|
||||
In order for the VPA to manipulate the rollout, the Kubernetes cluster hosting the rollout CRD needs the subresources support for CRDs. This feature was introduced as alpha in Kubernetes version 1.10 and transitioned to beta in Kubernetes version 1.11. If a user wants to use VPA on v1.10, the Kubernetes Cluster operator will need to add a custom feature flag to the API server. After 1.10, the flag is turned on by default. Check out the following [link](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) for more information on setting the custom feature flag.
|
||||
|
||||
When installing VPA you may need to add the following in RBAC configurations for `system:vpa-target-reader` cluster role as by default VPA maynot support rollouts in all the versions.
|
||||
When installing VPA you may need to add the following in RBAC configurations for `system:vpa-target-reader` cluster role as by default VPA may not support rollouts in all the versions.
|
||||
|
||||
```yaml
|
||||
- apiGroups:
|
||||
|
|
|
@ -26,7 +26,7 @@ kubectl argo rollouts promote guestbook
|
|||
kubectl argo rollouts abort guestbook
|
||||
|
||||
# Retry the guestbook rollout
|
||||
kubectl argo rollouts retry guestbook
|
||||
kubectl argo rollouts retry rollout guestbook
|
||||
```
|
||||
|
||||
## Options
|
||||
|
|
|
@ -18,7 +18,7 @@ kubectl argo rollouts status ROLLOUT_NAME [flags]
|
|||
kubectl argo rollouts status guestbook
|
||||
|
||||
# Show the rollout status
|
||||
kubectl argo rollouts status guestbook --watch false
|
||||
kubectl argo rollouts status guestbook --watch=false
|
||||
|
||||
# Watch the rollout until it succeeds, fail if it takes more than 60 seconds
|
||||
kubectl argo rollouts status --timeout 60s guestbook
|
||||
|
|
|
@ -4,21 +4,21 @@
|
|||
|
||||
The GitHub notification service changes commit status using [GitHub Apps](https://docs.github.com/en/developers/apps) and requires specifying the following settings:
|
||||
|
||||
* `appID` - the app id
|
||||
* `installationID` - the app installation id
|
||||
* `privateKey` - the app private key
|
||||
* `enterpriseBaseURL` - optional URL, e.g. https://git.example.com/
|
||||
- `appID` - the app id
|
||||
- `installationID` - the app installation id
|
||||
- `privateKey` - the app private key
|
||||
- `enterpriseBaseURL` - optional URL, e.g. https://git.example.com/
|
||||
|
||||
## Configuration
|
||||
|
||||
1. Create a GitHub Apps using https://github.com/settings/apps/new
|
||||
2. Change repository permissions to enable write commit statuses and/or deployments and/or pull requests comments
|
||||

|
||||
3. Generate a private key, and download it automatically
|
||||

|
||||
4. Install app to account
|
||||
5. Store privateKey in `argo-rollouts-notification-secret` Secret and configure GitHub integration
|
||||
in `argo-rollouts-notification-configmap` ConfigMap
|
||||
1. Change repository permissions to enable write commit statuses and/or deployments and/or pull requests comments
|
||||

|
||||
1. Generate a private key, and download it automatically
|
||||

|
||||
1. Install app to account
|
||||
1. Store privateKey in `argo-rollouts-notification-secret` Secret and configure GitHub integration
|
||||
in `argo-rollouts-notification-configmap` ConfigMap
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
|
@ -77,6 +77,7 @@ template.app-deployed: |
|
|||
requiredContexts: []
|
||||
autoMerge: true
|
||||
transientEnvironment: false
|
||||
reference: v1.0.0
|
||||
pullRequestComment:
|
||||
content: |
|
||||
Application {{.app.metadata.name}} is now running new version of deployments manifests.
|
||||
|
@ -84,9 +85,11 @@ template.app-deployed: |
|
|||
```
|
||||
|
||||
**Notes**:
|
||||
|
||||
- If the message is set to 140 characters or more, it will be truncated.
|
||||
- If `github.repoURLPath` and `github.revisionPath` are same as above, they can be omitted.
|
||||
- Automerge is optional and `true` by default for github deployments to ensure the requested ref is up to date with the default branch.
|
||||
Setting this option to `false` is required if you would like to deploy older refs in your default branch.
|
||||
For more information see the [GitHub Deployment API Docs](https://docs.github.com/en/rest/deployments/deployments?apiVersion=2022-11-28#create-a-deployment).
|
||||
- If `github.pullRequestComment.content` is set to 65536 characters or more, it will be truncated.
|
||||
- Reference is optional. When set, it will be used as the ref to deploy. If not set, the revision will be used as the ref to deploy.
|
||||
|
|
|
@ -91,7 +91,7 @@ kubectl argo rollouts promote rollouts-demo
|
|||
```
|
||||
|
||||
After promotion, Rollout will proceed to execute the remaining steps. The remaining rollout steps
|
||||
in our example are fully automated, so the Rollout will eventually complete steps until it has has
|
||||
in our example are fully automated, so the Rollout will eventually complete steps until it has
|
||||
fully transitioned to the new version. Watch the rollout again until it has completed all steps:
|
||||
|
||||
```shell
|
||||
|
@ -153,7 +153,7 @@ there is no activity with regards to new ReplicaSets becoming created.
|
|||
|
||||
When a Rollout has not yet reached its desired state (e.g. it was aborted, or in the middle of
|
||||
an update), and the stable manifest were re-applied, the Rollout detects this as a rollback
|
||||
and *not* a update, and will fast-track the deployment of the stable ReplicaSet by skipping
|
||||
and *not* an update, and will fast-track the deployment of the stable ReplicaSet by skipping
|
||||
analysis, and the steps.
|
||||
|
||||
## Summary
|
||||
|
@ -165,7 +165,7 @@ In this guide, we have learned basic capabilities of Argo Rollouts, including:
|
|||
* Manual promotion
|
||||
* Manual abortion
|
||||
|
||||
The Rollout in this basic example did not utilize a ingress controller or service mesh provider
|
||||
The Rollout in this basic example did not utilize an ingress controller or service mesh provider
|
||||
to route traffic. Instead, it used normal Kubernetes Service networking (i.e. kube-proxy) to achieve
|
||||
an *approximate* canary weight, based on the closest ratio of new to old replica counts.
|
||||
As a result, this Rollout had a limitation in that it could only achieve a minimum canary
|
||||
|
|
|
@ -91,7 +91,7 @@ kubectl -n argo-examples port-forward svc/my-svc 8181:80
|
|||
|
||||
## 3. Rollout new version
|
||||
|
||||
Now its time to deploy new version. Update the rollout with new image.
|
||||
Now it's time to deploy new version. Update the rollout with new image.
|
||||
|
||||
```shell
|
||||
kubectl argo rollouts set image my-rollout demo=argoproj/rollouts-demo:green -n argo-examples
|
||||
|
|
|
@ -220,7 +220,7 @@ kubectl argo rollouts get rollout rollouts-demo
|
|||
|
||||
## 2. Perform an update
|
||||
|
||||
Update the rollout by changing the image, and wait for it to reached the paused state.
|
||||
Update the rollout by changing the image, and wait for it to reach the paused state.
|
||||
|
||||
```shell
|
||||
kubectl argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow
|
||||
|
|
|
@ -62,7 +62,7 @@ spec:
|
|||
...
|
||||
```
|
||||
|
||||
A combination of both should have comply with each TrafficRouting requirements, in this case:
|
||||
A combination of both should have to comply with each TrafficRouting requirements, in this case:
|
||||
|
||||
```yaml
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
|
@ -176,7 +176,7 @@ discussed in the following section.
|
|||
|
||||
## 2. Perform an update
|
||||
|
||||
Now perform an update the rollout by changing the image, and wait for it to reached the paused state.
|
||||
Now perform an update the rollout by changing the image, and wait for it to reach the paused state.
|
||||
|
||||
```shell
|
||||
kubectl argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow
|
||||
|
@ -210,7 +210,7 @@ changes over the original ingress:
|
|||
1. Two additional
|
||||
[NGINX specific canary annotations](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#canary)
|
||||
are added to the annotations.
|
||||
2. The Ingress rules will have an rule which points the backend to the *canary* service.
|
||||
2. The Ingress rules will have a rule which points the backend to the *canary* service.
|
||||
|
||||
|
||||
```yaml
|
||||
|
|
|
@ -109,7 +109,7 @@ kubectl argo rollouts get rollout rollouts-demo
|
|||
|
||||
## 2. Perform an update
|
||||
|
||||
Update the rollout by changing the image, and wait for it to reached the paused state.
|
||||
Update the rollout by changing the image, and wait for it to reach the paused state.
|
||||
|
||||
```shell
|
||||
kubectl argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow
|
||||
|
@ -130,7 +130,7 @@ changes over the original ingress:
|
|||
1. Two additional
|
||||
[NGINX specific canary annotations](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#canary)
|
||||
are added to the annotations.
|
||||
2. The Ingress rules will have an rule which points the backend to the *canary* service.
|
||||
2. The Ingress rules will have a rule which points the backend to the *canary* service.
|
||||
|
||||
|
||||
```yaml
|
||||
|
|
|
@ -100,7 +100,7 @@ spec:
|
|||
|
||||
## 2. Perform an update
|
||||
|
||||
Now perform an update the rollout by changing the image, and wait for it to reached the paused state.
|
||||
Now perform an update the rollout by changing the image, and wait for it to reach the paused state.
|
||||
|
||||
```shell
|
||||
kubectl argo rollouts set image rollouts-demo rollouts-demo=argoproj/rollouts-demo:yellow
|
||||
|
|
|
@ -104,7 +104,7 @@ The completion command supports bash, zsh, fish and powershell.
|
|||
See the [completion command documentation](./generated/kubectl-argo-rollouts/kubectl-argo-rollouts_completion.md) for more details.
|
||||
|
||||
|
||||
## Using the CLI with Docker
|
||||
## Using the CLI with Docker
|
||||
|
||||
The CLI is also available as a container image at [https://quay.io/repository/argoproj/kubectl-argo-rollouts](https://quay.io/repository/argoproj/kubectl-argo-rollouts)
|
||||
|
||||
|
|
|
@ -184,7 +184,7 @@ type TrafficRouterPlugin interface {
|
|||
type StepPlugin interface {
|
||||
// InitPlugin initializes the canary step plugin. This gets called once when the plugin is loaded.
|
||||
InitPlugin() RpcError
|
||||
// Run executes a step plugin for the RpcStepContext and returns the result to the controller or an RpcError for unexpeted failures
|
||||
// Run executes a step plugin for the RpcStepContext and returns the result to the controller or an RpcError for unexpected failures
|
||||
Run(*v1alpha1.Rollout, *RpcStepContext) (RpcStepResult, RpcError)
|
||||
// Terminate stops an uncompleted operation started by the Run operation
|
||||
Terminate(*v1alpha1.Rollout, *RpcStepContext) (RpcStepResult, RpcError)
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
---
|
||||
title: Parameterized Build system
|
||||
authors:
|
||||
- '@kostis-codefresh'
|
||||
creation-date: 2025-06-24
|
||||
---
|
||||
|
||||
# Parameterized Build system
|
||||
|
||||
The build system of Argo Rollouts is currently presenting several challenges for companies that want to keep
|
||||
internal forks.
|
||||
|
||||
This document provides a proposal for making the build system of Argo Rollouts more flexible.
|
||||
|
||||
## Summary
|
||||
|
||||
There is a need for companies to have an internal fork of Argo Rollouts. This fork needs to follow the upstream project (in order to get new features) but at the same time
|
||||
allow
|
||||
|
||||
- quick security fixes
|
||||
- testing of upcoming features before releasing them to the upstream OSS fork
|
||||
- integration with internal systems that are not relevant to the OSS fork.
|
||||
|
||||
## Motivation
|
||||
|
||||
Currently the [build system of Argo Rollouts](https://github.com/argoproj/argo-rollouts/tree/master/.github/workflows) has several hardcoded parameters. These include
|
||||
|
||||
- The Docker registry for the project is hardcoded to [quay.io/argoproj/kubectl-argo-rollouts](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/docker-publish.yml#L44)
|
||||
- There are mentions on which Golang version to use in [several](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/testing.yaml#L96) [different](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/docker-publish.yml#L70) [places](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/go.yml#L12).
|
||||
- The Kubernetes API versions of E2E tests [are an inline list](https://github.com/argoproj/argo-rollouts/blob/master/.github/workflows/testing.yaml#L82)
|
||||
|
||||
This makes having a internal fork a more difficult process than needed because any custom changes that happen internally require extra effort if
|
||||
|
||||
- they never need to be sent to the upstream project
|
||||
- they need to be compared with the upstream project (3-way diff)
|
||||
- they need to be pinned/kept back against the upstream project
|
||||
|
||||
|
||||
|
||||
## Goals
|
||||
|
||||
The goals of this proposal are:
|
||||
|
||||
- Detect all places in the build system that have hardcoded values
|
||||
- Make the different build system configurations a parameter
|
||||
- Setup default values for the main OSS project
|
||||
- Allow external organizations to maintain internal forks with minimal effort
|
||||
|
||||
|
||||
## Use cases
|
||||
|
||||
Here are some example use cases
|
||||
|
||||
### Basic build/push
|
||||
|
||||
An external organization should be able to fork the OSS project and push the final image to their own registry instead of the default `quay.io/argoproj`
|
||||
|
||||
### Internal security fix
|
||||
|
||||
A critical vulnerability has been found and the organization needs to provide a hotfix in the internal fork. The fix could be in
|
||||
|
||||
- a standard library of Argo Rollouts
|
||||
- the version of GoLang
|
||||
- The version of Kubernetes client
|
||||
- Any combination of the above.
|
||||
|
||||
A developer should be able to apply this fix in the internal fork, and then at the same time send the fix to the upstream OSS project. The assumption is that the OSS
|
||||
project might not get the fix as fast as the internal fork, so there is a brief time window where the security fix is only in the internal fork while there is still the need
|
||||
to get new features from the OSS project.
|
||||
|
||||
### Internal feature implementation
|
||||
|
||||
Same scenario as the security fix but this time code changes in the actual controller are included.
|
||||
|
||||
### Permanent changes only for the internal fork
|
||||
|
||||
The most complex scenario (and the one presenting more challenges today) is for changes that do not go to the upstream fork and need to stay
|
||||
in the internal fork for a larger time period.
|
||||
|
||||
Examples are
|
||||
|
||||
- Using an older Golang version
|
||||
- Supporting an older version of the Kubernetes client library
|
||||
- Using an internal fork for a dependency library that will never be OSS
|
||||
|
||||
|
||||
## Security Considerations
|
||||
|
||||
There is no impact for the security of the project. In fact, this proposal will allow security conscious organizations to ship security fixes much faster
|
||||
and in smaller batches to the OSS project.
|
||||
|
||||
## Risks and Mitigations
|
||||
|
||||
There is no risk in the main project as all changes will happen on the build system. The end result for the main project will be exactly the same
|
||||
(using default values or having implied configuration files).
|
||||
|
||||
|
|
@ -286,7 +286,7 @@ A user wants to use an API to publish information about the rollout. The plugin
|
|||
Other steps need to use the conversationID during their execution.
|
||||
The plugin step receives in parameters the full rollout object and the pluginName. This information can be used to retrieve the status of other plugin execution.
|
||||
|
||||
An utility function such as `PluginHelper.GetStatuses(rollout, pluginName)` can be implemented and made available to the plugins.
|
||||
A utility function such as `PluginHelper.GetStatuses(rollout, pluginName)` can be implemented and made available to the plugins.
|
||||
|
||||
##### I want my rollout to continue event if my plugin failed
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ 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:
|
||||
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
|
||||
|
||||
|
|
|
@ -6,23 +6,23 @@
|
|||
|
||||
***
|
||||
## Release Assets
|
||||
| Asset | Description |
|
||||
|-------------------------------------|--------------------------------------------------|
|
||||
| argo-rollouts-checksums.txt | Checksums of binaries |
|
||||
| argo-rollouts-cli.intoto.jsonl | Attestation of CLI binaries & manifiest |
|
||||
| dashboard-install.yaml | Dashboard install |
|
||||
| install.yaml | Standard installation method |
|
||||
| kubectl-argo-rollouts-darwin-amd64 | CLI Binary |
|
||||
| kubectl-argo-rollouts-darwin-arm64 | CLI Binary |
|
||||
| kubectl-argo-rollouts-linux-amd64 | CLI Binary |
|
||||
| kubectl-argo-rollouts-linux-arm64 | CLI Binary |
|
||||
| kubectl-argo-rollouts-windows-amd64 | CLI Binary |
|
||||
| namespace-install.yaml | Namespace installation |
|
||||
| notifications-install.yaml | Notification installation |
|
||||
| rollout_cr_schema.json | Schema |
|
||||
| sbom.tar.gz | Sbom |
|
||||
| sbom.tar.gz.pem | Certificate used to sign sbom |
|
||||
| sbom.tar.gz.sig | Signature of sbom |
|
||||
| Asset | Description |
|
||||
|-------------------------------------|---------------------------------------------|
|
||||
| argo-rollouts-checksums.txt | Checksums of binaries |
|
||||
| argo-rollouts-cli.intoto.jsonl | Attestation of CLI binaries & manifest |
|
||||
| dashboard-install.yaml | Dashboard install |
|
||||
| install.yaml | Standard installation method |
|
||||
| kubectl-argo-rollouts-darwin-amd64 | CLI Binary |
|
||||
| kubectl-argo-rollouts-darwin-arm64 | CLI Binary |
|
||||
| kubectl-argo-rollouts-linux-amd64 | CLI Binary |
|
||||
| kubectl-argo-rollouts-linux-arm64 | CLI Binary |
|
||||
| kubectl-argo-rollouts-windows-amd64 | CLI Binary |
|
||||
| namespace-install.yaml | Namespace installation |
|
||||
| notifications-install.yaml | Notification installation |
|
||||
| rollout_cr_schema.json | Schema |
|
||||
| sbom.tar.gz | Sbom |
|
||||
| sbom.tar.gz.pem | Certificate used to sign sbom |
|
||||
| sbom.tar.gz.sig | Signature of sbom |
|
||||
|
||||
***
|
||||
## Verification of container images
|
||||
|
|
|
@ -10,7 +10,7 @@ import (
|
|||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
kubetesting "k8s.io/client-go/testing"
|
||||
"k8s.io/utils/pointer"
|
||||
"k8s.io/utils/ptr"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
)
|
||||
|
@ -207,7 +207,7 @@ func TestCreateAnalysisRunWithArg(t *testing.T) {
|
|||
TemplateName: aTemplates[0].Name,
|
||||
Args: []v1alpha1.Argument{{
|
||||
Name: "test",
|
||||
Value: pointer.StringPtr("sss"),
|
||||
Value: ptr.To[string]("sss"),
|
||||
}},
|
||||
},
|
||||
}
|
||||
|
@ -239,7 +239,7 @@ func TestCreateAnalysisRunWithClusterTemplate(t *testing.T) {
|
|||
ClusterScope: true,
|
||||
Args: []v1alpha1.Argument{{
|
||||
Name: "test",
|
||||
Value: pointer.StringPtr("sss"),
|
||||
Value: ptr.To[string]("sss"),
|
||||
}},
|
||||
},
|
||||
}
|
||||
|
@ -271,7 +271,7 @@ func TestAnalysisRunFailToResolveArg(t *testing.T) {
|
|||
Args: []v1alpha1.Argument{{
|
||||
|
||||
Name: "test",
|
||||
Value: pointer.StringPtr("{{not a real substitution}}"),
|
||||
Value: ptr.To[string]("{{not a real substitution}}"),
|
||||
}},
|
||||
},
|
||||
}
|
||||
|
@ -480,7 +480,7 @@ func TestAssessAnalysisRunStatusesAfterTemplateSuccess(t *testing.T) {
|
|||
func TestFailExperimentWhenAnalysisFails(t *testing.T) {
|
||||
templates := generateTemplates("bar")
|
||||
e := newExperiment("foo", templates, "")
|
||||
e.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
|
||||
e.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
|
||||
e.Spec.Analyses = []v1alpha1.ExperimentAnalysisTemplateRef{
|
||||
{
|
||||
Name: "success-rate",
|
||||
|
@ -493,7 +493,7 @@ func TestFailExperimentWhenAnalysisFails(t *testing.T) {
|
|||
}
|
||||
e.Status.Phase = v1alpha1.AnalysisPhaseRunning
|
||||
e.Spec.Duration = "5m"
|
||||
e.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
|
||||
e.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
|
||||
e.Status.AvailableAt = secondsAgo(60)
|
||||
rs := templateToRS(e, templates[0], 1)
|
||||
ar1 := analysisTemplateToRun("success-rate", e, &v1alpha1.AnalysisTemplateSpec{})
|
||||
|
@ -660,7 +660,7 @@ func TestDoNotCompleteExperimentWithRemainingRequiredAnalysisRun(t *testing.T) {
|
|||
func TestCompleteExperimentWithNoRequiredAnalysis(t *testing.T) {
|
||||
templates := generateTemplates("bar")
|
||||
e := newExperiment("foo", templates, "1m")
|
||||
e.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
|
||||
e.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
|
||||
e.Spec.Analyses = []v1alpha1.ExperimentAnalysisTemplateRef{
|
||||
{
|
||||
Name: "success-rate",
|
||||
|
@ -700,7 +700,7 @@ func TestCompleteExperimentWithNoRequiredAnalysis(t *testing.T) {
|
|||
func TestTerminateAnalysisRuns(t *testing.T) {
|
||||
templates := generateTemplates("bar")
|
||||
e := newExperiment("foo", templates, "")
|
||||
e.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
|
||||
e.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
|
||||
e.Spec.Analyses = []v1alpha1.ExperimentAnalysisTemplateRef{
|
||||
{
|
||||
Name: "success-rate",
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"time"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/utils/pointer"
|
||||
"k8s.io/utils/ptr"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
"github.com/argoproj/argo-rollouts/utils/conditions"
|
||||
|
@ -15,7 +15,7 @@ import (
|
|||
func TestUpdateProgressingLastUpdateTime(t *testing.T) {
|
||||
|
||||
templates := generateTemplates("bar")
|
||||
templates[0].Replicas = pointer.Int32Ptr(2)
|
||||
templates[0].Replicas = ptr.To[int32](2)
|
||||
e := newExperiment("foo", templates, "")
|
||||
e.Status.TemplateStatuses = []v1alpha1.TemplateStatus{{
|
||||
Name: "bar",
|
||||
|
@ -53,7 +53,7 @@ func TestEnterTimeoutDegradedState(t *testing.T) {
|
|||
Name: "bar",
|
||||
Status: v1alpha1.TemplateStatusProgressing,
|
||||
}}
|
||||
e.Spec.ProgressDeadlineSeconds = pointer.Int32Ptr(30)
|
||||
e.Spec.ProgressDeadlineSeconds = ptr.To[int32](30)
|
||||
prevTime := metav1.NewTime(timeutil.Now().Add(-1 * time.Minute).Truncate(time.Second))
|
||||
e.Status.TemplateStatuses[0].LastTransitionTime = &prevTime
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
k8serrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
|
@ -79,7 +81,7 @@ type Controller struct {
|
|||
resyncPeriod time.Duration
|
||||
}
|
||||
|
||||
// ControllerConfig describes the data required to instantiate a new analysis controller
|
||||
// ControllerConfig describes the data required to instantiate a new experiments controller
|
||||
type ControllerConfig struct {
|
||||
KubeClientSet kubernetes.Interface
|
||||
ArgoProjClientset clientset.Interface
|
||||
|
@ -98,7 +100,6 @@ type ControllerConfig struct {
|
|||
|
||||
// NewController returns a new experiment controller
|
||||
func NewController(cfg ControllerConfig) *Controller {
|
||||
|
||||
replicaSetControl := controller.RealRSControl{
|
||||
KubeClient: cfg.KubeClientSet,
|
||||
Recorder: cfg.Recorder.K8sRecorder(),
|
||||
|
@ -318,6 +319,7 @@ func (ec *Controller) syncHandler(ctx context.Context, key string) error {
|
|||
}
|
||||
|
||||
func (ec *Controller) persistExperimentStatus(orig *v1alpha1.Experiment, newStatus *v1alpha1.ExperimentStatus) error {
|
||||
prevStatus := orig.Status
|
||||
ctx := context.TODO()
|
||||
logCtx := logutil.WithExperiment(orig)
|
||||
patch, modified, err := diff.CreateTwoWayMergePatch(
|
||||
|
@ -336,15 +338,27 @@ func (ec *Controller) persistExperimentStatus(orig *v1alpha1.Experiment, newStat
|
|||
return nil
|
||||
}
|
||||
logCtx.Debugf("Experiment Patch: %s", patch)
|
||||
_, err = ec.argoProjClientset.ArgoprojV1alpha1().Experiments(orig.Namespace).Patch(ctx, orig.Name, patchtypes.MergePatchType, patch, metav1.PatchOptions{})
|
||||
patched, err := ec.argoProjClientset.ArgoprojV1alpha1().Experiments(orig.Namespace).Patch(ctx, orig.Name, patchtypes.MergePatchType, patch, metav1.PatchOptions{})
|
||||
if err != nil {
|
||||
logCtx.Warningf("Error updating experiment: %v", err)
|
||||
return err
|
||||
}
|
||||
logCtx.Info("Patch status successfully")
|
||||
ec.recordEvent(patched, prevStatus, newStatus)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ec *Controller) recordEvent(ex *v1alpha1.Experiment, prevStatus v1alpha1.ExperimentStatus, newStatus *v1alpha1.ExperimentStatus) {
|
||||
if prevStatus.Phase != newStatus.Phase {
|
||||
eventType := corev1.EventTypeNormal
|
||||
switch newStatus.Phase {
|
||||
case v1alpha1.AnalysisPhaseError, v1alpha1.AnalysisPhaseFailed, v1alpha1.AnalysisPhaseInconclusive:
|
||||
eventType = corev1.EventTypeWarning
|
||||
}
|
||||
ec.recorder.Eventf(ex, record.EventOptions{EventType: eventType, EventReason: "Experiment" + string(newStatus.Phase)}, "Experiment transitioned from %s -> %s", prevStatus.Phase, newStatus.Phase)
|
||||
}
|
||||
}
|
||||
|
||||
// enqueueIfCompleted conditionally enqueues the AnalysisRun's Experiment if the run is complete
|
||||
func (ec *Controller) enqueueIfCompleted(obj any) {
|
||||
run := unstructuredutil.ObjectToAnalysisRun(obj)
|
||||
|
|
|
@ -31,7 +31,7 @@ import (
|
|||
core "k8s.io/client-go/testing"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
"k8s.io/client-go/util/workqueue"
|
||||
"k8s.io/utils/pointer"
|
||||
"k8s.io/utils/ptr"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/controller/metrics"
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
|
@ -143,7 +143,7 @@ func generateTemplates(imageNames ...string) []v1alpha1.TemplateSpec {
|
|||
Selector: &metav1.LabelSelector{
|
||||
MatchLabels: selector,
|
||||
},
|
||||
Replicas: pointer.Int32Ptr(1),
|
||||
Replicas: ptr.To[int32](1),
|
||||
Template: corev1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Labels: selector,
|
||||
|
|
|
@ -26,7 +26,7 @@ import (
|
|||
"k8s.io/client-go/kubernetes"
|
||||
appslisters "k8s.io/client-go/listers/apps/v1"
|
||||
v1 "k8s.io/client-go/listers/core/v1"
|
||||
"k8s.io/utils/pointer"
|
||||
"k8s.io/utils/ptr"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -72,7 +72,6 @@ func newExperimentContext(
|
|||
resyncPeriod time.Duration,
|
||||
enqueueExperimentAfter func(obj any, duration time.Duration),
|
||||
) *experimentContext {
|
||||
|
||||
exCtx := experimentContext{
|
||||
ex: experiment,
|
||||
templateRSs: templateRSs,
|
||||
|
@ -138,7 +137,14 @@ func (ec *experimentContext) reconcileTemplate(template v1alpha1.TemplateSpec) {
|
|||
// Create service for template if service field is set
|
||||
if desiredReplicaCount != 0 {
|
||||
ec.createTemplateService(&template, templateStatus, rs)
|
||||
} else {
|
||||
if rs.Status.AvailableReplicas == 0 {
|
||||
// Check if service should be deleted when ReplicaSet has scaled down to 0 available replicas
|
||||
svc := ec.templateServices[template.Name]
|
||||
ec.deleteTemplateService(svc, templateStatus, template.Name)
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
// If service field nil but service exists, then delete it
|
||||
// Code should not enter this path
|
||||
|
@ -158,6 +164,7 @@ func (ec *experimentContext) reconcileTemplate(template v1alpha1.TemplateSpec) {
|
|||
ec.scaleTemplateRS(rs, template, templateStatus, desiredReplicaCount, experimentReplicas)
|
||||
templateStatus.LastTransitionTime = &now
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if rs == nil {
|
||||
|
@ -273,11 +280,6 @@ func (ec *experimentContext) scaleTemplateRS(rs *appsv1.ReplicaSet, template v1a
|
|||
if err != nil {
|
||||
templateStatus.Status = v1alpha1.TemplateStatusError
|
||||
templateStatus.Message = fmt.Sprintf("Unable to scale ReplicaSet for template '%s' to desired replica count '%v': %v", templateStatus.Name, desiredReplicaCount, err)
|
||||
} else {
|
||||
if desiredReplicaCount == 0 && template.Service != nil {
|
||||
svc := ec.templateServices[template.Name]
|
||||
ec.deleteTemplateService(svc, templateStatus, template.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -319,7 +321,7 @@ func (ec *experimentContext) createTemplateService(template *v1alpha1.TemplateSp
|
|||
|
||||
// createReplicaSetForTemplate initializes ReplicaSet with zero replicas for given experiment template
|
||||
func (ec *experimentContext) createReplicaSetForTemplate(template v1alpha1.TemplateSpec, templateStatus *v1alpha1.TemplateStatus, logCtx *log.Entry, now metav1.Time) {
|
||||
template.Replicas = pointer.Int32Ptr(0)
|
||||
template.Replicas = ptr.To[int32](0)
|
||||
rs, err := ec.createReplicaSet(template, templateStatus.CollisionCount)
|
||||
if err != nil {
|
||||
logCtx.Warnf("Failed to create ReplicaSet: %v", err)
|
||||
|
@ -416,6 +418,19 @@ func (ec *experimentContext) reconcileAnalysisRun(analysis v1alpha1.ExperimentAn
|
|||
eventType = corev1.EventTypeWarning
|
||||
}
|
||||
ec.recorder.Eventf(ec.ex, record.EventOptions{EventType: eventType, EventReason: "AnalysisRun" + string(newStatus.Phase)}, msg)
|
||||
|
||||
// Handle the case where the Analysis Run belongs to an Experiment, and the Experiment is a Step in the Rollout
|
||||
// This makes sure the rollout gets the Analysis Run events, which will then trigger any subscribed notifications
|
||||
// #4009
|
||||
roRef := experimentutil.GetRolloutOwnerRef(ec.ex)
|
||||
if roRef != nil {
|
||||
rollout, err := ec.argoProjClientset.ArgoprojV1alpha1().Rollouts(ec.ex.Namespace).Get(context.TODO(), roRef.Name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
ec.log.Warnf("Failed to get parent Rollout of the Experiment '%s': %v", roRef.Name, err)
|
||||
} else {
|
||||
ec.recorder.Eventf(rollout, record.EventOptions{EventType: corev1.EventTypeWarning, EventReason: "AnalysisRun" + string(newStatus.Phase)}, msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
experimentutil.SetAnalysisRunStatus(ec.newStatus, *newStatus)
|
||||
}()
|
||||
|
@ -523,7 +538,6 @@ func (ec *experimentContext) ResolveAnalysisRunArgs(args []v1alpha1.Argument) ([
|
|||
}
|
||||
|
||||
func (ec *experimentContext) calculateStatus() *v1alpha1.ExperimentStatus {
|
||||
prevStatus := ec.newStatus.DeepCopy()
|
||||
switch ec.newStatus.Phase {
|
||||
case "":
|
||||
ec.newStatus.Phase = v1alpha1.AnalysisPhasePending
|
||||
|
@ -568,14 +582,6 @@ func (ec *experimentContext) calculateStatus() *v1alpha1.ExperimentStatus {
|
|||
}
|
||||
}
|
||||
ec.newStatus = calculateExperimentConditions(ec.ex, *ec.newStatus)
|
||||
if prevStatus.Phase != ec.newStatus.Phase {
|
||||
eventType := corev1.EventTypeNormal
|
||||
switch ec.newStatus.Phase {
|
||||
case v1alpha1.AnalysisPhaseError, v1alpha1.AnalysisPhaseFailed, v1alpha1.AnalysisPhaseInconclusive:
|
||||
eventType = corev1.EventTypeWarning
|
||||
}
|
||||
ec.recorder.Eventf(ec.ex, record.EventOptions{EventType: eventType, EventReason: "Experiment" + string(ec.newStatus.Phase)}, "Experiment transitioned from %s -> %s", prevStatus.Phase, ec.newStatus.Phase)
|
||||
}
|
||||
return ec.newStatus
|
||||
}
|
||||
|
||||
|
@ -636,7 +642,6 @@ func (ec *experimentContext) assessAnalysisRuns() (v1alpha1.AnalysisPhase, strin
|
|||
|
||||
// newAnalysisRun generates an AnalysisRun from the experiment and template
|
||||
func (ec *experimentContext) newAnalysisRun(analysis v1alpha1.ExperimentAnalysisTemplateRef, args []v1alpha1.Argument, dryRunMetrics []v1alpha1.DryRun, measurementRetentionMetrics []v1alpha1.MeasurementRetention, analysisRunMetadata *v1alpha1.AnalysisRunMetadata) (*v1alpha1.AnalysisRun, error) {
|
||||
|
||||
if analysis.ClusterScope {
|
||||
analysisTemplates, clusterAnalysisTemplates, err := ec.getAnalysisTemplatesFromClusterAnalysis(analysis)
|
||||
if err != nil {
|
||||
|
@ -781,7 +786,6 @@ func (ec *experimentContext) getAnalysisTemplatesFromRefs(templateRefs *[]v1alph
|
|||
templates = append(templates, innerTemplates...)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
uniqueTemplates, uniqueClusterTemplates := analysisutil.FilterUniqueTemplates(templates, clusterTemplates)
|
||||
return uniqueTemplates, uniqueClusterTemplates, nil
|
||||
|
|
|
@ -17,7 +17,7 @@ import (
|
|||
kubeinformers "k8s.io/client-go/informers"
|
||||
k8sfake "k8s.io/client-go/kubernetes/fake"
|
||||
kubetesting "k8s.io/client-go/testing"
|
||||
"k8s.io/utils/pointer"
|
||||
"k8s.io/utils/ptr"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
"github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake"
|
||||
|
@ -129,7 +129,7 @@ func TestAddScaleDownDelayToRS(t *testing.T) {
|
|||
func TestRemoveScaleDownDelayFromRS(t *testing.T) {
|
||||
templates := generateTemplates("bar")
|
||||
e := newExperiment("foo", templates, "")
|
||||
e.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
|
||||
e.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
|
||||
e.Status.AvailableAt = now()
|
||||
e.Status.Phase = v1alpha1.AnalysisPhaseRunning
|
||||
cond := conditions.NewExperimentConditions(v1alpha1.ExperimentProgressing, corev1.ConditionTrue, conditions.NewRSAvailableReason, "Experiment \"foo\" is running.")
|
||||
|
@ -175,12 +175,10 @@ func TestScaleDownRSAfterFinish(t *testing.T) {
|
|||
inThePast := timeutil.Now().Add(-10 * time.Second).UTC().Format(time.RFC3339)
|
||||
rs1.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] = inThePast
|
||||
rs2.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] = inThePast
|
||||
|
||||
f := newFixture(t, e, rs1, rs2, s1)
|
||||
defer f.Close()
|
||||
|
||||
updateRs1Index := f.expectUpdateReplicaSetAction(rs1)
|
||||
f.expectDeleteServiceAction(s1)
|
||||
updateRs2Index := f.expectUpdateReplicaSetAction(rs2)
|
||||
expPatchIndex := f.expectPatchExperimentAction(e)
|
||||
|
||||
|
@ -195,6 +193,60 @@ func TestScaleDownRSAfterFinish(t *testing.T) {
|
|||
|
||||
expPatchObj := f.getPatchedExperimentAsObj(expPatchIndex)
|
||||
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, expPatchObj.Status.Phase)
|
||||
|
||||
rs1.Status.AvailableReplicas = 0
|
||||
rs2.Status.AvailableReplicas = 0
|
||||
|
||||
f = newFixture(t, e, rs1, rs2, s1)
|
||||
defer f.Close()
|
||||
f.expectDeleteServiceAction(s1)
|
||||
}
|
||||
|
||||
// TestScaleDownRSAWhenSvcNotDeleted verifies that ScaleDownDelaySeconds annotation is added to ReplicaSet that is to be scaled down and service is not deleted because available replicas are not 0
|
||||
func TestScaleDownRSWhenSvcNotDeleted(t *testing.T) {
|
||||
tmpl := generateTemplates("template1", "template2")
|
||||
tmpl[0].Service = &v1alpha1.TemplateService{}
|
||||
|
||||
exp := newExperiment("test-exp", tmpl, "")
|
||||
replicaSet1 := templateToRS(exp, tmpl[0], 1)
|
||||
replicaSet2 := templateToRS(exp, tmpl[1], 1)
|
||||
svc := templateToService(exp, tmpl[0], *replicaSet1)
|
||||
|
||||
exp.Status.AvailableAt = now()
|
||||
exp.Status.Phase = v1alpha1.AnalysisPhaseRunning
|
||||
exp.Status.TemplateStatuses = []v1alpha1.TemplateStatus{
|
||||
generateTemplatesStatus("template1", 1, 1, v1alpha1.TemplateStatusSuccessful, now()),
|
||||
generateTemplatesStatus("template2", 1, 1, v1alpha1.TemplateStatusSuccessful, now()),
|
||||
}
|
||||
exp.Spec.Terminate = true
|
||||
exp.Status.TemplateStatuses[0].ServiceName = svc.Name
|
||||
condition := conditions.NewExperimentConditions(v1alpha1.ExperimentProgressing, corev1.ConditionTrue, conditions.NewRSAvailableReason, "Experiment \"test-exp\" is running.")
|
||||
exp.Status.Conditions = append(exp.Status.Conditions, *condition)
|
||||
|
||||
pastTime := timeutil.Now().Add(-10 * time.Second).UTC().Format(time.RFC3339)
|
||||
replicaSet1.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] = pastTime
|
||||
replicaSet2.Annotations[v1alpha1.DefaultReplicaSetScaleDownDeadlineAnnotationKey] = pastTime
|
||||
replicaSet1.Status.AvailableReplicas = 1
|
||||
replicaSet2.Status.AvailableReplicas = 1
|
||||
fixture := newFixture(t, exp, replicaSet1, replicaSet2, svc)
|
||||
defer fixture.Close()
|
||||
|
||||
rs1UpdateIdx := fixture.expectUpdateReplicaSetAction(replicaSet1)
|
||||
rs2UpdateIdx := fixture.expectUpdateReplicaSetAction(replicaSet2)
|
||||
expPatchIdx := fixture.expectPatchExperimentAction(exp)
|
||||
|
||||
fixture.run(getKey(exp, t))
|
||||
|
||||
updatedRS1 := fixture.getUpdatedReplicaSet(rs1UpdateIdx)
|
||||
assert.NotNil(t, updatedRS1)
|
||||
assert.Equal(t, int32(0), *updatedRS1.Spec.Replicas)
|
||||
|
||||
updatedRS2 := fixture.getUpdatedReplicaSet(rs2UpdateIdx)
|
||||
assert.NotNil(t, updatedRS2)
|
||||
assert.Equal(t, int32(0), *updatedRS2.Spec.Replicas)
|
||||
|
||||
patchedExp := fixture.getPatchedExperimentAsObj(expPatchIdx)
|
||||
assert.Equal(t, v1alpha1.AnalysisPhaseSuccessful, patchedExp.Status.Phase)
|
||||
}
|
||||
|
||||
func TestSetAvailableAt(t *testing.T) {
|
||||
|
@ -407,7 +459,7 @@ func TestFailAddScaleDownDelay(t *testing.T) {
|
|||
templates := generateTemplates("bar")
|
||||
templates[0].Service = &v1alpha1.TemplateService{}
|
||||
ex := newExperiment("foo", templates, "")
|
||||
ex.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
|
||||
ex.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
|
||||
ex.Status.TemplateStatuses = []v1alpha1.TemplateStatus{
|
||||
generateTemplatesStatus("bar", 1, 1, v1alpha1.TemplateStatusFailed, now()),
|
||||
}
|
||||
|
@ -429,12 +481,12 @@ func TestFailAddScaleDownDelay(t *testing.T) {
|
|||
func TestFailAddScaleDownDelayIsConflict(t *testing.T) {
|
||||
templates := generateTemplates("bar")
|
||||
ex := newExperiment("foo", templates, "")
|
||||
ex.Spec.ScaleDownDelaySeconds = pointer.Int32Ptr(0)
|
||||
ex.Spec.ScaleDownDelaySeconds = ptr.To[int32](0)
|
||||
ex.Status.TemplateStatuses = []v1alpha1.TemplateStatus{
|
||||
generateTemplatesStatus("bar", 1, 1, v1alpha1.TemplateStatusRunning, now()),
|
||||
}
|
||||
rs := templateToRS(ex, templates[0], 1)
|
||||
rs.Spec.Replicas = pointer.Int32(0)
|
||||
rs.Spec.Replicas = ptr.To[int32](0)
|
||||
|
||||
exCtx := newTestContext(ex, rs)
|
||||
exCtx.templateRSs["bar"] = rs
|
||||
|
@ -485,7 +537,7 @@ func TestDeleteOutdatedService(t *testing.T) {
|
|||
|
||||
func TestDeleteServiceIfServiceFieldNil(t *testing.T) {
|
||||
templates := generateTemplates("bar")
|
||||
templates[0].Replicas = pointer.Int32Ptr(0)
|
||||
templates[0].Replicas = ptr.To[int32](0)
|
||||
ex := newExperiment("foo", templates, "")
|
||||
ex.Status.TemplateStatuses = []v1alpha1.TemplateStatus{
|
||||
generateTemplatesStatus("bar", 1, 1, v1alpha1.TemplateStatusRunning, now()),
|
||||
|
|
|
@ -166,17 +166,21 @@ func newReplicaSetFromTemplate(experiment *v1alpha1.Experiment, template v1alpha
|
|||
newRSTemplate.Labels = labelsutil.CloneAndAddLabel(newRSTemplate.Labels, v1alpha1.DefaultRolloutUniqueLabelKey, podHash)
|
||||
// Add podTemplateHash label to selector.
|
||||
newRSSelector := labelsutil.CloneSelectorAndAddLabel(template.Selector, v1alpha1.DefaultRolloutUniqueLabelKey, podHash)
|
||||
newRSLabels := map[string]string{}
|
||||
// enrich with template labels
|
||||
for k, v := range newRSTemplate.Labels {
|
||||
newRSLabels[k] = v
|
||||
}
|
||||
newRSLabels[v1alpha1.DefaultRolloutUniqueLabelKey] = podHash
|
||||
|
||||
// The annotations must be different for each template because annotations are used to match
|
||||
// replicasets to templates. We inject the experiment and template name in the replicaset
|
||||
// annotations to ensure uniqueness.
|
||||
rs := appsv1.ReplicaSet{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: fmt.Sprintf("%s-%s", experiment.Name, template.Name),
|
||||
Namespace: experiment.Namespace,
|
||||
Labels: map[string]string{
|
||||
v1alpha1.DefaultRolloutUniqueLabelKey: podHash,
|
||||
},
|
||||
Name: fmt.Sprintf("%s-%s", experiment.Name, template.Name),
|
||||
Namespace: experiment.Namespace,
|
||||
Labels: newRSLabels,
|
||||
OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(experiment, controllerKind)},
|
||||
Annotations: replicaSetAnnotations,
|
||||
},
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
package experiments
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/utils/pointer"
|
||||
"k8s.io/utils/ptr"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
"github.com/argoproj/argo-rollouts/utils/conditions"
|
||||
|
@ -115,7 +116,7 @@ func TestNameCollision(t *testing.T) {
|
|||
templateStatuses := []v1alpha1.TemplateStatus{
|
||||
generateTemplatesStatus("bar", 0, 0, "", nil),
|
||||
}
|
||||
templateStatuses[0].CollisionCount = pointer.Int32Ptr(1)
|
||||
templateStatuses[0].CollisionCount = ptr.To[int32](1)
|
||||
validatePatch(t, patch, "", NoChange, templateStatuses, nil)
|
||||
}
|
||||
{
|
||||
|
@ -152,7 +153,7 @@ func TestNameCollisionWithEquivalentPodTemplateAndControllerUID(t *testing.T) {
|
|||
templateStatuses := []v1alpha1.TemplateStatus{
|
||||
generateTemplatesStatus("bar", 0, 0, "", nil),
|
||||
}
|
||||
templateStatuses[0].CollisionCount = pointer.Int32Ptr(1)
|
||||
templateStatuses[0].CollisionCount = ptr.To[int32](1)
|
||||
validatePatch(t, patch, "", NoChange, templateStatuses, nil)
|
||||
}
|
||||
{
|
||||
|
@ -164,3 +165,35 @@ func TestNameCollisionWithEquivalentPodTemplateAndControllerUID(t *testing.T) {
|
|||
validatePatch(t, patch, "", NoChange, templateStatuses, cond)
|
||||
}
|
||||
}
|
||||
|
||||
// TestNewReplicaSetFromTemplate tests the creation of a new ReplicaSet from a given template.
|
||||
// It verifies that the ReplicaSet is correctly initialized with the expected name, namespace,
|
||||
// annotations, labels, and container specifications based on the provided experiment and template.
|
||||
// The test ensures that:
|
||||
// - The ReplicaSet name is a combination of the experiment name and template name.
|
||||
// - The ReplicaSet namespace matches the experiment namespace.
|
||||
// - The ReplicaSet annotations include the experiment name and template name.
|
||||
// - The ReplicaSet labels include the default rollout unique label key and a specific key from the template.
|
||||
// - The ReplicaSet selector and template labels include the default rollout unique label key.
|
||||
// - The ReplicaSet container specifications match those defined in the template.
|
||||
func TestNewReplicaSetFromTemplate(t *testing.T) {
|
||||
|
||||
templates := generateTemplates("bar")
|
||||
template := templates[0]
|
||||
experiment := newExperiment("foo", templates, "")
|
||||
collisionCount := int32(0)
|
||||
rs := newReplicaSetFromTemplate(experiment, template, &collisionCount)
|
||||
|
||||
assert.Equal(t, fmt.Sprintf("%s-%s", experiment.Name, template.Name), rs.Name)
|
||||
assert.Equal(t, experiment.Namespace, rs.Namespace)
|
||||
assert.Equal(t, experiment.Name, rs.Annotations[v1alpha1.ExperimentNameAnnotationKey])
|
||||
assert.NotNil(t, rs.ObjectMeta.Labels[v1alpha1.DefaultRolloutUniqueLabelKey])
|
||||
assert.NotNil(t, rs.ObjectMeta.Labels["key"])
|
||||
assert.Equal(t, template.Template.ObjectMeta.Labels["key"], rs.ObjectMeta.Labels["key"])
|
||||
assert.Equal(t, template.Name, rs.Annotations[v1alpha1.ExperimentTemplateNameAnnotationKey])
|
||||
assert.NotNil(t, rs.Spec.Selector.MatchLabels[v1alpha1.DefaultRolloutUniqueLabelKey])
|
||||
assert.NotNil(t, rs.Spec.Template.ObjectMeta.Labels[v1alpha1.DefaultRolloutUniqueLabelKey])
|
||||
assert.Equal(t, template.Template.Labels["key"], rs.Spec.Template.Labels["key"])
|
||||
assert.Equal(t, template.Template.Spec.Containers[0].Name, rs.Spec.Template.Spec.Containers[0].Name)
|
||||
assert.Equal(t, template.Template.Spec.Containers[0].Image, rs.Spec.Template.Spec.Containers[0].Image)
|
||||
}
|
||||
|
|
|
@ -6,12 +6,13 @@ import (
|
|||
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
logutil "github.com/argoproj/argo-rollouts/utils/log"
|
||||
log "github.com/sirupsen/logrus"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
logutil "github.com/argoproj/argo-rollouts/utils/log"
|
||||
)
|
||||
|
||||
var experimentKind = v1alpha1.SchemeGroupVersion.WithKind("Experiment")
|
||||
|
|
210
go.mod
210
go.mod
|
@ -1,30 +1,30 @@
|
|||
module github.com/argoproj/argo-rollouts
|
||||
|
||||
go 1.23
|
||||
go 1.23.4
|
||||
|
||||
require (
|
||||
github.com/antonmedv/expr v1.15.5
|
||||
github.com/argoproj/notifications-engine v0.4.1-0.20240219110818-7a069766e954
|
||||
github.com/argoproj/notifications-engine v0.4.1-0.20240403133627-f48567108f01
|
||||
github.com/argoproj/pkg v0.13.6
|
||||
github.com/aws/aws-sdk-go-v2 v1.32.6
|
||||
github.com/aws/aws-sdk-go-v2/config v1.28.6
|
||||
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.43.3
|
||||
github.com/aws/aws-sdk-go-v2 v1.36.6
|
||||
github.com/aws/aws-sdk-go-v2/config v1.29.14
|
||||
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.45.4
|
||||
github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 v1.31.3
|
||||
github.com/aws/smithy-go v1.22.1
|
||||
github.com/aws/smithy-go v1.22.4
|
||||
github.com/blang/semver v3.5.1+incompatible
|
||||
github.com/bombsimon/logrusr/v4 v4.1.0
|
||||
github.com/evanphx/json-patch/v5 v5.9.0
|
||||
github.com/evanphx/json-patch/v5 v5.9.11
|
||||
github.com/gogo/protobuf v1.3.2
|
||||
github.com/golang/mock v1.6.0
|
||||
github.com/golang/protobuf v1.5.4
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/grpc-ecosystem/grpc-gateway v1.16.0
|
||||
github.com/hashicorp/go-plugin v1.6.2
|
||||
github.com/hashicorp/go-plugin v1.6.3
|
||||
github.com/influxdata/influxdb-client-go/v2 v2.14.0
|
||||
github.com/juju/ansiterm v1.0.0
|
||||
github.com/machinebox/graphql v0.2.2
|
||||
github.com/mitchellh/mapstructure v1.5.0
|
||||
github.com/newrelic/newrelic-client-go/v2 v2.51.3
|
||||
github.com/newrelic/newrelic-client-go/v2 v2.54.0
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/prometheus/client_golang v1.18.0
|
||||
github.com/prometheus/client_model v0.6.1
|
||||
|
@ -34,33 +34,34 @@ require (
|
|||
github.com/sirupsen/logrus v1.9.3
|
||||
github.com/soheilhy/cmux v0.1.5
|
||||
github.com/spaceapegames/go-wavefront v1.8.1
|
||||
github.com/spf13/cobra v1.8.1
|
||||
github.com/spf13/cobra v1.9.1
|
||||
github.com/stretchr/testify v1.10.0
|
||||
github.com/tj/assert v0.0.3
|
||||
github.com/valyala/fasttemplate v1.2.2
|
||||
golang.org/x/oauth2 v0.24.0
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1
|
||||
google.golang.org/grpc v1.68.1
|
||||
google.golang.org/protobuf v1.35.2
|
||||
golang.org/x/oauth2 v0.29.0
|
||||
golang.org/x/sync v0.16.0
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422
|
||||
google.golang.org/grpc v1.71.1
|
||||
google.golang.org/protobuf v1.36.5
|
||||
gopkg.in/yaml.v2 v2.4.0
|
||||
k8s.io/api v0.29.3
|
||||
k8s.io/apiextensions-apiserver v0.29.3
|
||||
k8s.io/apimachinery v0.29.3
|
||||
k8s.io/apiserver v0.29.3
|
||||
k8s.io/cli-runtime v0.29.3
|
||||
k8s.io/client-go v0.29.3
|
||||
k8s.io/code-generator v0.29.3
|
||||
k8s.io/component-base v0.29.3
|
||||
k8s.io/klog/v2 v2.110.1
|
||||
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00
|
||||
k8s.io/kubectl v0.29.3
|
||||
k8s.io/kubernetes v1.29.3
|
||||
k8s.io/utils v0.0.0-20230726121419-3b25d923346b
|
||||
k8s.io/api v0.30.14
|
||||
k8s.io/apiextensions-apiserver v0.30.13
|
||||
k8s.io/apimachinery v0.30.14
|
||||
k8s.io/apiserver v0.30.14
|
||||
k8s.io/cli-runtime v0.30.14
|
||||
k8s.io/client-go v0.30.14
|
||||
k8s.io/code-generator v0.30.14
|
||||
k8s.io/component-base v0.30.14
|
||||
k8s.io/klog/v2 v2.130.1
|
||||
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff
|
||||
k8s.io/kubectl v0.30.13
|
||||
k8s.io/kubernetes v1.30.14
|
||||
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
|
||||
sigs.k8s.io/yaml v1.4.0
|
||||
)
|
||||
|
||||
require (
|
||||
cloud.google.com/go/compute/metadata v0.5.0 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.6.0 // indirect
|
||||
github.com/PagerDuty/go-pagerduty v1.7.0 // indirect
|
||||
github.com/bradleyfalzon/ghinstallation/v2 v2.5.0 // indirect
|
||||
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 // indirect
|
||||
|
@ -79,24 +80,24 @@ require (
|
|||
github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20220708192748-b73dcb041214 // indirect
|
||||
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df // indirect
|
||||
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
|
||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect
|
||||
github.com/aws/aws-sdk-go v1.44.116 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.47 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.17.67 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.37 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.37 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sqs v1.29.7 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.24.7 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.33.2 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/blang/semver/v4 v4.0.0 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/chai2010/gettext-go v1.0.2 // indirect
|
||||
github.com/chainguard-dev/git-urls v1.0.2 // indirect
|
||||
github.com/cloudflare/circl v1.3.3 // indirect
|
||||
github.com/coreos/go-semver v0.3.1 // indirect
|
||||
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
|
||||
|
@ -105,22 +106,22 @@ require (
|
|||
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
|
||||
github.com/evanphx/json-patch v5.6.0+incompatible // indirect
|
||||
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
|
||||
github.com/fatih/color v1.7.0 // indirect
|
||||
github.com/fatih/color v1.16.0 // indirect
|
||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||
github.com/fsnotify/fsnotify v1.7.0 // indirect
|
||||
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect
|
||||
github.com/go-errors/errors v1.4.2 // indirect
|
||||
github.com/go-logr/logr v1.4.1 // indirect
|
||||
github.com/go-logr/logr v1.4.2 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.19.6 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.21.0 // indirect
|
||||
github.com/go-openapi/jsonreference v0.20.2 // indirect
|
||||
github.com/go-openapi/swag v0.22.3 // indirect
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
|
||||
github.com/golang/glog v1.2.2 // indirect
|
||||
github.com/go-openapi/swag v0.23.0 // indirect
|
||||
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
|
||||
github.com/golang/glog v1.2.4 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||
github.com/google/btree v1.1.2 // indirect
|
||||
github.com/google/cel-go v0.17.7 // indirect
|
||||
github.com/google/gnostic-models v0.6.8 // indirect
|
||||
github.com/google/cel-go v0.17.8 // indirect
|
||||
github.com/google/gnostic-models v0.6.9 // indirect
|
||||
github.com/google/go-cmp v0.6.0 // indirect
|
||||
github.com/google/go-github/v53 v53.0.0 // indirect
|
||||
github.com/google/go-querystring v1.1.0 // indirect
|
||||
|
@ -135,8 +136,8 @@ require (
|
|||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect
|
||||
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
|
||||
github.com/hashicorp/go-hclog v0.14.1 // indirect
|
||||
github.com/hashicorp/go-retryablehttp v0.7.1 // indirect
|
||||
github.com/hashicorp/go-hclog v1.6.3 // indirect
|
||||
github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
|
||||
github.com/hashicorp/yamux v0.1.1 // indirect
|
||||
github.com/huandu/xstrings v1.3.3 // indirect
|
||||
github.com/imdario/mergo v0.3.16 // indirect
|
||||
|
@ -150,7 +151,7 @@ require (
|
|||
github.com/lunixbochs/vtclean v1.0.0 // indirect
|
||||
github.com/mailru/easyjson v0.7.7 // indirect
|
||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
github.com/mattn/go-isatty v0.0.19 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mitchellh/copystructure v1.2.0 // indirect
|
||||
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
|
||||
github.com/mitchellh/reflectwalk v1.0.2 // indirect
|
||||
|
@ -172,92 +173,99 @@ require (
|
|||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
github.com/shopspring/decimal v1.2.0 // indirect
|
||||
github.com/slack-go/slack v0.12.2 // indirect
|
||||
github.com/spf13/cast v1.5.1 // indirect
|
||||
github.com/spf13/pflag v1.0.5 // indirect
|
||||
github.com/spf13/cast v1.6.0 // indirect
|
||||
github.com/spf13/pflag v1.0.6 // indirect
|
||||
github.com/stoewer/go-strcase v1.2.0 // indirect
|
||||
github.com/stretchr/objx v0.5.2 // indirect
|
||||
github.com/tomnomnom/linkheader v0.0.0-20180905144013-02ca5825eb80 // indirect
|
||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||
github.com/valyala/fastjson v1.6.4 // indirect
|
||||
github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0 // indirect
|
||||
github.com/xlab/treeprint v1.2.0 // indirect
|
||||
go.etcd.io/etcd/api/v3 v3.5.10 // indirect
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
|
||||
go.etcd.io/etcd/client/v3 v3.5.10 // indirect
|
||||
go.opencensus.io v0.24.0 // indirect
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect
|
||||
go.opentelemetry.io/otel v1.22.0 // indirect
|
||||
go.opentelemetry.io/otel v1.34.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.22.0 // indirect
|
||||
go.opentelemetry.io/otel/sdk v1.21.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.22.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.34.0 // indirect
|
||||
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.34.0 // indirect
|
||||
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
|
||||
go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
|
||||
go.uber.org/atomic v1.10.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/zap v1.19.0 // indirect
|
||||
golang.org/x/crypto v0.27.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
|
||||
golang.org/x/mod v0.17.0 // indirect
|
||||
golang.org/x/net v0.29.0 // indirect
|
||||
golang.org/x/sync v0.8.0 // indirect
|
||||
golang.org/x/sys v0.25.0 // indirect
|
||||
golang.org/x/term v0.24.0 // indirect
|
||||
golang.org/x/text v0.18.0 // indirect
|
||||
go.uber.org/zap v1.26.0 // indirect
|
||||
golang.org/x/crypto v0.32.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20220827204233-334a2380cb91 // indirect
|
||||
golang.org/x/mod v0.20.0 // indirect
|
||||
golang.org/x/net v0.34.0 // indirect
|
||||
golang.org/x/sys v0.29.0 // indirect
|
||||
golang.org/x/term v0.28.0 // indirect
|
||||
golang.org/x/text v0.21.0 // indirect
|
||||
golang.org/x/time v0.5.0 // indirect
|
||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
|
||||
golang.org/x/tools v0.24.0 // indirect
|
||||
gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 // indirect
|
||||
gomodules.xyz/notify v0.1.1 // indirect
|
||||
google.golang.org/api v0.162.0 // indirect
|
||||
google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
|
||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
k8s.io/cloud-provider v0.0.0 // indirect
|
||||
k8s.io/cloud-provider v0.30.13 // indirect
|
||||
k8s.io/cluster-bootstrap v0.25.8 // indirect
|
||||
k8s.io/component-helpers v0.29.3 // indirect
|
||||
k8s.io/controller-manager v0.29.3 // indirect
|
||||
k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 // indirect
|
||||
k8s.io/kms v0.29.3 // indirect
|
||||
k8s.io/component-helpers v0.30.14 // indirect
|
||||
k8s.io/controller-manager v0.30.14 // indirect
|
||||
k8s.io/gengo/v2 v2.0.0-20240826214909-a7b603a56eb7 // indirect
|
||||
k8s.io/kms v0.30.14 // indirect
|
||||
k8s.io/kubelet v0.0.0 // indirect
|
||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0 // indirect
|
||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0 // indirect
|
||||
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
|
||||
sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 // indirect
|
||||
sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
|
||||
sigs.k8s.io/randfill v1.0.0 // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
|
||||
)
|
||||
|
||||
replace (
|
||||
github.com/go-check/check => github.com/go-check/check v0.0.0-20180628173108-788fd7840127
|
||||
github.com/go-telegram-bot-api/telegram-bot-api/v5 => github.com/OvyFlash/telegram-bot-api/v5 v5.0.0-20240108230938-63e5c59035bf
|
||||
k8s.io/api v0.0.0 => k8s.io/api v0.29.3
|
||||
k8s.io/apiextensions-apiserver v0.0.0 => k8s.io/apiextensions-apiserver v0.29.3
|
||||
k8s.io/apimachinery v0.0.0 => k8s.io/apimachinery v0.29.3
|
||||
k8s.io/apiserver v0.0.0 => k8s.io/apiserver v0.29.3
|
||||
k8s.io/cli-runtime v0.0.0 => k8s.io/cli-runtime v0.29.3
|
||||
k8s.io/client-go v0.0.0 => k8s.io/client-go v0.29.3
|
||||
k8s.io/cloud-provider v0.0.0 => k8s.io/cloud-provider v0.29.3
|
||||
k8s.io/cluster-bootstrap v0.0.0 => k8s.io/cluster-bootstrap v0.29.3
|
||||
k8s.io/code-generator v0.0.0 => k8s.io/code-generator v0.29.3
|
||||
k8s.io/component-base v0.0.0 => k8s.io/component-base v0.29.3
|
||||
k8s.io/component-helpers v0.0.0 => k8s.io/component-helpers v0.29.3
|
||||
k8s.io/controller-manager v0.0.0 => k8s.io/controller-manager v0.29.3
|
||||
k8s.io/cri-api v0.0.0 => k8s.io/cri-api v0.29.3
|
||||
k8s.io/csi-translation-lib v0.0.0 => k8s.io/csi-translation-lib v0.29.3
|
||||
k8s.io/kube-aggregator v0.0.0 => k8s.io/kube-aggregator v0.29.3
|
||||
k8s.io/kube-controller-manager v0.0.0 => k8s.io/kube-controller-manager v0.29.3
|
||||
k8s.io/kube-proxy v0.0.0 => k8s.io/kube-proxy v0.29.3
|
||||
k8s.io/kube-scheduler v0.0.0 => k8s.io/kube-scheduler v0.29.3
|
||||
k8s.io/kubectl v0.0.0 => k8s.io/kubectl v0.29.3
|
||||
k8s.io/kubelet v0.0.0 => k8s.io/kubelet v0.29.3
|
||||
k8s.io/legacy-cloud-providers v0.0.0 => k8s.io/legacy-cloud-providers v0.29.3
|
||||
k8s.io/metrics v0.0.0 => k8s.io/metrics v0.29.3
|
||||
k8s.io/mount-utils v0.0.0 => k8s.io/mount-utils v0.29.3
|
||||
k8s.io/pod-security-admission v0.0.0 => k8s.io/pod-security-admission v0.29.3
|
||||
k8s.io/sample-apiserver v0.0.0 => k8s.io/sample-apiserver v0.29.3
|
||||
k8s.io/api => k8s.io/api v0.30.14
|
||||
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.30.14
|
||||
k8s.io/apimachinery => k8s.io/apimachinery v0.30.14
|
||||
k8s.io/apiserver => k8s.io/apiserver v0.30.14
|
||||
k8s.io/cli-runtime => k8s.io/cli-runtime v0.30.14
|
||||
k8s.io/client-go => k8s.io/client-go v0.30.14
|
||||
k8s.io/cloud-provider => k8s.io/cloud-provider v0.30.14
|
||||
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.30.14
|
||||
k8s.io/code-generator => k8s.io/code-generator v0.30.14
|
||||
k8s.io/component-base => k8s.io/component-base v0.30.14
|
||||
k8s.io/component-helpers => k8s.io/component-helpers v0.30.14
|
||||
k8s.io/controller-manager => k8s.io/controller-manager v0.30.14
|
||||
k8s.io/cri-api => k8s.io/cri-api v0.30.14
|
||||
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.30.14
|
||||
k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.30.14
|
||||
k8s.io/endpointslice => k8s.io/endpointslice v0.30.14
|
||||
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.30.14
|
||||
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.30.14
|
||||
k8s.io/kube-proxy => k8s.io/kube-proxy v0.30.14
|
||||
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.30.14
|
||||
k8s.io/kubectl => k8s.io/kubectl v0.30.14
|
||||
k8s.io/kubelet => k8s.io/kubelet v0.30.14
|
||||
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.30.14
|
||||
k8s.io/metrics => k8s.io/metrics v0.30.14
|
||||
k8s.io/mount-utils => k8s.io/mount-utils v0.30.14
|
||||
k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.30.14
|
||||
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.30.14
|
||||
)
|
||||
|
||||
replace k8s.io/kms => k8s.io/kms v0.30.14
|
||||
|
||||
replace k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.30.14
|
||||
|
||||
replace k8s.io/sample-controller => k8s.io/sample-controller v0.30.14
|
||||
|
|
|
@ -233,7 +233,7 @@ func removeK8S118Fields(un *unstructured.Unstructured) {
|
|||
setValidationOverride(un, preserveUnknownFields, "spec.template.spec.ephemeralContainers[].resources.requests")
|
||||
// Replace this with "spec.template.spec.volumes[].ephemeral.volumeClaimTemplate.spec.resources.{limits/requests}"
|
||||
// when it's ok to only support k8s 1.17+
|
||||
setValidationOverride(un, preserveUnknownFields, "spec.template.spec.volumes[]")
|
||||
setValidationOverride(un, preserveUnknownFields, "spec.template.spec.volumes")
|
||||
case "Experiment":
|
||||
setValidationOverride(un, preserveUnknownFields, "spec.templates[].template.spec.containers[].resources.limits")
|
||||
setValidationOverride(un, preserveUnknownFields, "spec.templates[].template.spec.containers[].resources.requests")
|
||||
|
@ -463,11 +463,6 @@ func main() {
|
|||
err = json.Unmarshal(jsonBytes, &r.Object)
|
||||
checkErr(err)
|
||||
|
||||
// Need to explicitly set spec.preserveUnknownFields to false, despite false being the
|
||||
// default value in v1, in order to facilitate upgrades from apiextensions.k8s.io/v1beta1 v1.
|
||||
// See https://github.com/argoproj/argo-rollouts/issues/1067
|
||||
unstructured.SetNestedField(r.Object, false, "spec", "preserveUnknownFields")
|
||||
|
||||
// clean up crd yaml before marshalling
|
||||
unstructured.RemoveNestedField(r.Object, "status")
|
||||
unstructured.RemoveNestedField(r.Object, "metadata", "creationTimestamp")
|
||||
|
|
|
@ -54,4 +54,4 @@ go install github.com/go-swagger/go-swagger/cmd/swagger@v0.30.5
|
|||
go install golang.org/x/tools/cmd/goimports@v0.20.0
|
||||
|
||||
# mockery is used for generating mock
|
||||
go install github.com/vektra/mockery/v2@v2.42.2
|
||||
go install github.com/vektra/mockery/v2@v2.53.4
|
||||
|
|
|
@ -37,7 +37,7 @@ url=https://github.com/protocolbuffers/protobuf/releases/download/v${protoc_vers
|
|||
mkdir -p /tmp/protoc-${protoc_version}
|
||||
unzip -o ${temp_path} -d /tmp/protoc-${protoc_version}
|
||||
mkdir -p ${DIST_PATH}/protoc-include
|
||||
cp /tmp/protoc-${protoc_version}/bin/protoc ${DIST_PATH}/protoc
|
||||
cp -f /tmp/protoc-${protoc_version}/bin/protoc ${DIST_PATH}/protoc
|
||||
chmod +x ${DIST_PATH}/protoc
|
||||
cp -a /tmp/protoc-${protoc_version}/include/* ${DIST_PATH}/protoc-include
|
||||
chmod -R +rx ${DIST_PATH}/protoc-include
|
||||
|
|
|
@ -19,15 +19,19 @@ cleanup() {
|
|||
}
|
||||
trap "cleanup" EXIT SIGINT
|
||||
|
||||
TARGET_SCRIPT=kube_codegen.sh
|
||||
|
||||
chmod +x ${CODEGEN_PKG}/*.sh
|
||||
chmod +x ${CODEGEN_PKG}/${TARGET_SCRIPT}
|
||||
|
||||
${CODEGEN_PKG}/generate-groups.sh "deepcopy,client,informer,lister" \
|
||||
github.com/argoproj/argo-rollouts/pkg/client github.com/argoproj/argo-rollouts/pkg/apis \
|
||||
"rollouts:v1alpha1" \
|
||||
--output-base "${TEMP_DIR}" \
|
||||
--go-header-file ${SCRIPT_ROOT}/hack/boilerplate.go.txt
|
||||
source ${CODEGEN_PKG}/${TARGET_SCRIPT}
|
||||
|
||||
cp -r "${TEMP_DIR}/github.com/argoproj/argo-rollouts/." "${SCRIPT_ROOT}/"
|
||||
# To use your own boilerplate text use:
|
||||
# --go-header-file ${SCRIPT_ROOT}/hack/custom-boilerplate.go.txt
|
||||
kube::codegen::gen_helpers pkg/apis/rollouts/v1alpha1 \
|
||||
--boilerplate "${SCRIPT_ROOT}/hack/boilerplate.go.txt"
|
||||
|
||||
kube::codegen::gen_client pkg/apis \
|
||||
--with-watch \
|
||||
--output-pkg github.com/argoproj/argo-rollouts/pkg/client \
|
||||
--output-dir "${TEMP_DIR}" \
|
||||
--boilerplate "${SCRIPT_ROOT}/hack/boilerplate.go.txt"
|
||||
|
||||
cp -rf "${TEMP_DIR}/." "${SCRIPT_ROOT}/pkg/client/"
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#!/bin/sh
|
||||
set -euo pipefail
|
||||
set -x
|
||||
|
||||
# Grabbed from https://github.com/kubernetes/kubernetes/issues/79384
|
||||
VERSION=${1#"v"}
|
||||
|
|
|
@ -7,7 +7,7 @@ import (
|
|||
"strings"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
"k8s.io/utils/pointer"
|
||||
"k8s.io/utils/ptr"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
ingressutil "github.com/argoproj/argo-rollouts/utils/ingress"
|
||||
|
@ -103,7 +103,7 @@ func getResetALBActionStr(ingress *ingressutil.Ingress, action string) (string,
|
|||
{
|
||||
ServiceName: service,
|
||||
ServicePort: port,
|
||||
Weight: pointer.Int64Ptr(int64(100)),
|
||||
Weight: ptr.To[int64](int64(100)),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
@ -18,12 +18,13 @@ import (
|
|||
k8sfake "k8s.io/client-go/kubernetes/fake"
|
||||
"k8s.io/client-go/util/workqueue"
|
||||
|
||||
"k8s.io/client-go/tools/cache"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/controller/metrics"
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
"github.com/argoproj/argo-rollouts/pkg/client/clientset/versioned/fake"
|
||||
informers "github.com/argoproj/argo-rollouts/pkg/client/informers/externalversions"
|
||||
ingressutil "github.com/argoproj/argo-rollouts/utils/ingress"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
)
|
||||
|
||||
const stableService string = "test-stable-service"
|
||||
|
|
|
@ -13,7 +13,6 @@ spec:
|
|||
shortNames:
|
||||
- ar
|
||||
singular: analysisrun
|
||||
preserveUnknownFields: false
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
|
@ -263,6 +262,8 @@ spec:
|
|||
completions:
|
||||
format: int32
|
||||
type: integer
|
||||
managedBy:
|
||||
type: string
|
||||
manualSelector:
|
||||
type: boolean
|
||||
maxFailedIndexes:
|
||||
|
@ -330,17 +331,35 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
successPolicy:
|
||||
properties:
|
||||
rules:
|
||||
items:
|
||||
properties:
|
||||
succeededCount:
|
||||
format: int32
|
||||
type: integer
|
||||
succeededIndexes:
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- rules
|
||||
type: object
|
||||
suspend:
|
||||
type: boolean
|
||||
template:
|
||||
|
@ -381,11 +400,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchFields:
|
||||
items:
|
||||
properties:
|
||||
|
@ -397,11 +418,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
weight:
|
||||
|
@ -412,6 +435,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
properties:
|
||||
nodeSelectorTerms:
|
||||
|
@ -428,11 +452,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchFields:
|
||||
items:
|
||||
properties:
|
||||
|
@ -444,14 +470,17 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- nodeSelectorTerms
|
||||
type: object
|
||||
|
@ -477,11 +506,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -511,11 +542,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -526,6 +559,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
|
@ -539,6 +573,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
items:
|
||||
properties:
|
||||
|
@ -555,11 +590,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -589,11 +626,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -604,12 +643,14 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
- topologyKey
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
podAntiAffinity:
|
||||
properties:
|
||||
|
@ -631,11 +672,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -665,11 +708,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -680,6 +725,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
|
@ -693,6 +739,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
items:
|
||||
properties:
|
||||
|
@ -709,11 +756,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -743,11 +792,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -758,12 +809,14 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
- topologyKey
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
type: object
|
||||
automountServiceAccountToken:
|
||||
|
@ -775,10 +828,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -793,6 +848,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -831,6 +887,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -843,12 +900,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -859,6 +920,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -866,6 +928,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -880,6 +943,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -897,6 +961,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -938,6 +1003,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -955,6 +1021,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -997,6 +1064,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1027,6 +1095,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1101,6 +1170,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1131,6 +1201,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1209,16 +1280,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -1274,6 +1356,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1304,6 +1387,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1366,6 +1450,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1377,6 +1464,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -1386,18 +1475,25 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
dnsConfig:
|
||||
properties:
|
||||
nameservers:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
options:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1407,10 +1503,12 @@ spec:
|
|||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
searches:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
dnsPolicy:
|
||||
type: string
|
||||
|
@ -1423,10 +1521,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1441,6 +1541,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1479,6 +1580,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1491,12 +1593,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1507,6 +1613,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1514,6 +1621,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -1528,6 +1636,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -1545,6 +1654,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1586,6 +1696,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -1603,6 +1714,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1645,6 +1757,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1675,6 +1788,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1749,6 +1863,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1779,6 +1894,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1857,16 +1973,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -1922,6 +2049,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1952,6 +2080,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2016,6 +2145,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2027,6 +2159,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -2036,12 +2170,18 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
hostAliases:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2049,10 +2189,16 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
ip:
|
||||
type: string
|
||||
required:
|
||||
- ip
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- ip
|
||||
x-kubernetes-list-type: map
|
||||
hostIPC:
|
||||
type: boolean
|
||||
hostNetwork:
|
||||
|
@ -2067,10 +2213,14 @@ spec:
|
|||
items:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
initContainers:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2078,10 +2228,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2096,6 +2248,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2134,6 +2287,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2146,12 +2300,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2162,6 +2320,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2169,6 +2328,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -2183,6 +2343,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -2200,6 +2361,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2241,6 +2403,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -2258,6 +2421,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2300,6 +2464,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2330,6 +2495,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2404,6 +2570,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2434,6 +2601,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2512,16 +2680,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -2577,6 +2756,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2607,6 +2787,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2669,6 +2850,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2680,6 +2864,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -2689,12 +2875,18 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
nodeName:
|
||||
type: string
|
||||
nodeSelector:
|
||||
|
@ -2733,6 +2925,7 @@ spec:
|
|||
- conditionType
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
resourceClaims:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2772,6 +2965,15 @@ spec:
|
|||
x-kubernetes-list-type: map
|
||||
securityContext:
|
||||
properties:
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
fsGroup:
|
||||
format: int64
|
||||
type: integer
|
||||
|
@ -2810,6 +3012,7 @@ spec:
|
|||
format: int64
|
||||
type: integer
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
sysctls:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2822,6 +3025,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
windowsOptions:
|
||||
properties:
|
||||
gmsaCredentialSpec:
|
||||
|
@ -2863,6 +3067,7 @@ spec:
|
|||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologySpreadConstraints:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2879,11 +3084,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
|
@ -13,7 +13,6 @@ spec:
|
|||
shortNames:
|
||||
- at
|
||||
singular: analysistemplate
|
||||
preserveUnknownFields: false
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
|
@ -259,6 +258,8 @@ spec:
|
|||
completions:
|
||||
format: int32
|
||||
type: integer
|
||||
managedBy:
|
||||
type: string
|
||||
manualSelector:
|
||||
type: boolean
|
||||
maxFailedIndexes:
|
||||
|
@ -326,17 +327,35 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
successPolicy:
|
||||
properties:
|
||||
rules:
|
||||
items:
|
||||
properties:
|
||||
succeededCount:
|
||||
format: int32
|
||||
type: integer
|
||||
succeededIndexes:
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- rules
|
||||
type: object
|
||||
suspend:
|
||||
type: boolean
|
||||
template:
|
||||
|
@ -377,11 +396,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchFields:
|
||||
items:
|
||||
properties:
|
||||
|
@ -393,11 +414,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
weight:
|
||||
|
@ -408,6 +431,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
properties:
|
||||
nodeSelectorTerms:
|
||||
|
@ -424,11 +448,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchFields:
|
||||
items:
|
||||
properties:
|
||||
|
@ -440,14 +466,17 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- nodeSelectorTerms
|
||||
type: object
|
||||
|
@ -473,11 +502,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -507,11 +538,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -522,6 +555,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
|
@ -535,6 +569,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
items:
|
||||
properties:
|
||||
|
@ -551,11 +586,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -585,11 +622,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -600,12 +639,14 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
- topologyKey
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
podAntiAffinity:
|
||||
properties:
|
||||
|
@ -627,11 +668,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -661,11 +704,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -676,6 +721,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
|
@ -689,6 +735,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
items:
|
||||
properties:
|
||||
|
@ -705,11 +752,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -739,11 +788,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -754,12 +805,14 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
- topologyKey
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
type: object
|
||||
automountServiceAccountToken:
|
||||
|
@ -771,10 +824,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -789,6 +844,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -827,6 +883,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -839,12 +896,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -855,6 +916,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -862,6 +924,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -876,6 +939,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -893,6 +957,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -934,6 +999,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -951,6 +1017,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -993,6 +1060,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1023,6 +1091,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1097,6 +1166,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1127,6 +1197,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1205,16 +1276,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -1270,6 +1352,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1300,6 +1383,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1362,6 +1446,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1373,6 +1460,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -1382,18 +1471,25 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
dnsConfig:
|
||||
properties:
|
||||
nameservers:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
options:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1403,10 +1499,12 @@ spec:
|
|||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
searches:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
dnsPolicy:
|
||||
type: string
|
||||
|
@ -1419,10 +1517,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1437,6 +1537,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1475,6 +1576,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1487,12 +1589,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1503,6 +1609,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1510,6 +1617,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -1524,6 +1632,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -1541,6 +1650,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1582,6 +1692,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -1599,6 +1710,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1641,6 +1753,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1671,6 +1784,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1745,6 +1859,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1775,6 +1890,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1853,16 +1969,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -1918,6 +2045,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1948,6 +2076,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2012,6 +2141,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2023,6 +2155,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -2032,12 +2166,18 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
hostAliases:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2045,10 +2185,16 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
ip:
|
||||
type: string
|
||||
required:
|
||||
- ip
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- ip
|
||||
x-kubernetes-list-type: map
|
||||
hostIPC:
|
||||
type: boolean
|
||||
hostNetwork:
|
||||
|
@ -2063,10 +2209,14 @@ spec:
|
|||
items:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
initContainers:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2074,10 +2224,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2092,6 +2244,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2130,6 +2283,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2142,12 +2296,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2158,6 +2316,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2165,6 +2324,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -2179,6 +2339,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -2196,6 +2357,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2237,6 +2399,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -2254,6 +2417,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2296,6 +2460,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2326,6 +2491,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2400,6 +2566,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2430,6 +2597,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2508,16 +2676,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -2573,6 +2752,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2603,6 +2783,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2665,6 +2846,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2676,6 +2860,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -2685,12 +2871,18 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
nodeName:
|
||||
type: string
|
||||
nodeSelector:
|
||||
|
@ -2729,6 +2921,7 @@ spec:
|
|||
- conditionType
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
resourceClaims:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2768,6 +2961,15 @@ spec:
|
|||
x-kubernetes-list-type: map
|
||||
securityContext:
|
||||
properties:
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
fsGroup:
|
||||
format: int64
|
||||
type: integer
|
||||
|
@ -2806,6 +3008,7 @@ spec:
|
|||
format: int64
|
||||
type: integer
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
sysctls:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2818,6 +3021,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
windowsOptions:
|
||||
properties:
|
||||
gmsaCredentialSpec:
|
||||
|
@ -2859,6 +3063,7 @@ spec:
|
|||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologySpreadConstraints:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2875,11 +3080,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
|
@ -13,7 +13,6 @@ spec:
|
|||
shortNames:
|
||||
- cat
|
||||
singular: clusteranalysistemplate
|
||||
preserveUnknownFields: false
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
|
@ -259,6 +258,8 @@ spec:
|
|||
completions:
|
||||
format: int32
|
||||
type: integer
|
||||
managedBy:
|
||||
type: string
|
||||
manualSelector:
|
||||
type: boolean
|
||||
maxFailedIndexes:
|
||||
|
@ -326,17 +327,35 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
successPolicy:
|
||||
properties:
|
||||
rules:
|
||||
items:
|
||||
properties:
|
||||
succeededCount:
|
||||
format: int32
|
||||
type: integer
|
||||
succeededIndexes:
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- rules
|
||||
type: object
|
||||
suspend:
|
||||
type: boolean
|
||||
template:
|
||||
|
@ -377,11 +396,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchFields:
|
||||
items:
|
||||
properties:
|
||||
|
@ -393,11 +414,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
weight:
|
||||
|
@ -408,6 +431,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
properties:
|
||||
nodeSelectorTerms:
|
||||
|
@ -424,11 +448,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchFields:
|
||||
items:
|
||||
properties:
|
||||
|
@ -440,14 +466,17 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- nodeSelectorTerms
|
||||
type: object
|
||||
|
@ -473,11 +502,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -507,11 +538,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -522,6 +555,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
|
@ -535,6 +569,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
items:
|
||||
properties:
|
||||
|
@ -551,11 +586,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -585,11 +622,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -600,12 +639,14 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
- topologyKey
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
podAntiAffinity:
|
||||
properties:
|
||||
|
@ -627,11 +668,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -661,11 +704,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -676,6 +721,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
|
@ -689,6 +735,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
items:
|
||||
properties:
|
||||
|
@ -705,11 +752,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -739,11 +788,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -754,12 +805,14 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
- topologyKey
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
type: object
|
||||
automountServiceAccountToken:
|
||||
|
@ -771,10 +824,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -789,6 +844,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -827,6 +883,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -839,12 +896,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -855,6 +916,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -862,6 +924,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -876,6 +939,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -893,6 +957,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -934,6 +999,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -951,6 +1017,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -993,6 +1060,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1023,6 +1091,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1097,6 +1166,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1127,6 +1197,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1205,16 +1276,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -1270,6 +1352,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1300,6 +1383,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1362,6 +1446,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1373,6 +1460,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -1382,18 +1471,25 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
dnsConfig:
|
||||
properties:
|
||||
nameservers:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
options:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1403,10 +1499,12 @@ spec:
|
|||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
searches:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
dnsPolicy:
|
||||
type: string
|
||||
|
@ -1419,10 +1517,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1437,6 +1537,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1475,6 +1576,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1487,12 +1589,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1503,6 +1609,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1510,6 +1617,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -1524,6 +1632,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -1541,6 +1650,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1582,6 +1692,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -1599,6 +1710,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1641,6 +1753,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1671,6 +1784,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1745,6 +1859,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1775,6 +1890,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1853,16 +1969,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -1918,6 +2045,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1948,6 +2076,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2012,6 +2141,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2023,6 +2155,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -2032,12 +2166,18 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
hostAliases:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2045,10 +2185,16 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
ip:
|
||||
type: string
|
||||
required:
|
||||
- ip
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- ip
|
||||
x-kubernetes-list-type: map
|
||||
hostIPC:
|
||||
type: boolean
|
||||
hostNetwork:
|
||||
|
@ -2063,10 +2209,14 @@ spec:
|
|||
items:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
initContainers:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2074,10 +2224,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2092,6 +2244,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2130,6 +2283,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2142,12 +2296,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2158,6 +2316,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2165,6 +2324,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -2179,6 +2339,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -2196,6 +2357,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2237,6 +2399,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -2254,6 +2417,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2296,6 +2460,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2326,6 +2491,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2400,6 +2566,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2430,6 +2597,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2508,16 +2676,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -2573,6 +2752,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2603,6 +2783,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2665,6 +2846,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2676,6 +2860,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -2685,12 +2871,18 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
nodeName:
|
||||
type: string
|
||||
nodeSelector:
|
||||
|
@ -2729,6 +2921,7 @@ spec:
|
|||
- conditionType
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
resourceClaims:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2768,6 +2961,15 @@ spec:
|
|||
x-kubernetes-list-type: map
|
||||
securityContext:
|
||||
properties:
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
fsGroup:
|
||||
format: int64
|
||||
type: integer
|
||||
|
@ -2806,6 +3008,7 @@ spec:
|
|||
format: int64
|
||||
type: integer
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
sysctls:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2818,6 +3021,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
windowsOptions:
|
||||
properties:
|
||||
gmsaCredentialSpec:
|
||||
|
@ -2859,6 +3063,7 @@ spec:
|
|||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologySpreadConstraints:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2875,11 +3080,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
|
@ -13,7 +13,6 @@ spec:
|
|||
shortNames:
|
||||
- exp
|
||||
singular: experiment
|
||||
preserveUnknownFields: false
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
|
@ -149,11 +148,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -203,11 +204,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchFields:
|
||||
items:
|
||||
properties:
|
||||
|
@ -219,11 +222,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
weight:
|
||||
|
@ -234,6 +239,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
properties:
|
||||
nodeSelectorTerms:
|
||||
|
@ -250,11 +256,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchFields:
|
||||
items:
|
||||
properties:
|
||||
|
@ -266,14 +274,17 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- nodeSelectorTerms
|
||||
type: object
|
||||
|
@ -299,11 +310,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -333,11 +346,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -348,6 +363,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
|
@ -361,6 +377,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
items:
|
||||
properties:
|
||||
|
@ -377,11 +394,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -411,11 +430,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -426,12 +447,14 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
- topologyKey
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
podAntiAffinity:
|
||||
properties:
|
||||
|
@ -453,11 +476,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -487,11 +512,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -502,6 +529,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
|
@ -515,6 +543,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
items:
|
||||
properties:
|
||||
|
@ -531,11 +560,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -565,11 +596,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -580,12 +613,14 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
- topologyKey
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
type: object
|
||||
automountServiceAccountToken:
|
||||
|
@ -597,10 +632,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -615,6 +652,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -653,6 +691,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -665,12 +704,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -681,6 +724,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -688,6 +732,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -702,6 +747,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -719,6 +765,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -760,6 +807,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -777,6 +825,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -819,6 +868,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -849,6 +899,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -923,6 +974,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -953,6 +1005,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1031,16 +1084,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -1096,6 +1160,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1126,6 +1191,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1188,6 +1254,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1199,6 +1268,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -1208,18 +1279,25 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
dnsConfig:
|
||||
properties:
|
||||
nameservers:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
options:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1229,10 +1307,12 @@ spec:
|
|||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
searches:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
dnsPolicy:
|
||||
type: string
|
||||
|
@ -1245,10 +1325,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1263,6 +1345,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1301,6 +1384,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1313,12 +1397,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1329,6 +1417,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1336,6 +1425,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -1350,6 +1440,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -1367,6 +1458,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1408,6 +1500,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -1425,6 +1518,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1467,6 +1561,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1497,6 +1592,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1571,6 +1667,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1601,6 +1698,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1679,16 +1777,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -1744,6 +1853,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1774,6 +1884,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1838,6 +1949,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1849,6 +1963,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -1858,12 +1974,18 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
hostAliases:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1871,10 +1993,16 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
ip:
|
||||
type: string
|
||||
required:
|
||||
- ip
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- ip
|
||||
x-kubernetes-list-type: map
|
||||
hostIPC:
|
||||
type: boolean
|
||||
hostNetwork:
|
||||
|
@ -1889,10 +2017,14 @@ spec:
|
|||
items:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
initContainers:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1900,10 +2032,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1918,6 +2052,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1956,6 +2091,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1968,12 +2104,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1984,6 +2124,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1991,6 +2132,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -2005,6 +2147,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -2022,6 +2165,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2063,6 +2207,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -2080,6 +2225,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2122,6 +2268,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2152,6 +2299,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2226,6 +2374,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2256,6 +2405,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2334,16 +2484,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -2399,6 +2560,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2429,6 +2591,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2491,6 +2654,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2502,6 +2668,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -2511,12 +2679,18 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
nodeName:
|
||||
type: string
|
||||
nodeSelector:
|
||||
|
@ -2555,6 +2729,7 @@ spec:
|
|||
- conditionType
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
resourceClaims:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2594,6 +2769,15 @@ spec:
|
|||
x-kubernetes-list-type: map
|
||||
securityContext:
|
||||
properties:
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
fsGroup:
|
||||
format: int64
|
||||
type: integer
|
||||
|
@ -2632,6 +2816,7 @@ spec:
|
|||
format: int64
|
||||
type: integer
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
sysctls:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2644,6 +2829,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
windowsOptions:
|
||||
properties:
|
||||
gmsaCredentialSpec:
|
||||
|
@ -2685,6 +2871,7 @@ spec:
|
|||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologySpreadConstraints:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2701,11 +2888,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
|
@ -13,7 +13,6 @@ spec:
|
|||
shortNames:
|
||||
- ro
|
||||
singular: rollout
|
||||
preserveUnknownFields: false
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
|
@ -98,17 +97,22 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
x-kubernetes-validations:
|
||||
- message: .spec.selector is immutable
|
||||
rule: self == oldSelf
|
||||
strategy:
|
||||
properties:
|
||||
blueGreen:
|
||||
|
@ -440,6 +444,17 @@ spec:
|
|||
- pingService
|
||||
- pongService
|
||||
type: object
|
||||
replicaProgressThreshold:
|
||||
properties:
|
||||
type:
|
||||
type: string
|
||||
value:
|
||||
format: int32
|
||||
type: integer
|
||||
required:
|
||||
- type
|
||||
- value
|
||||
type: object
|
||||
scaleDownDelayRevisionLimit:
|
||||
format: int32
|
||||
type: integer
|
||||
|
@ -625,11 +640,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -1013,11 +1030,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchFields:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1029,11 +1048,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
weight:
|
||||
|
@ -1044,6 +1065,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
properties:
|
||||
nodeSelectorTerms:
|
||||
|
@ -1060,11 +1082,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchFields:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1076,14 +1100,17 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- nodeSelectorTerms
|
||||
type: object
|
||||
|
@ -1109,11 +1136,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -1143,11 +1172,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -1158,6 +1189,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
|
@ -1171,6 +1203,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1187,11 +1220,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -1221,11 +1256,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -1236,12 +1273,14 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
- topologyKey
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
podAntiAffinity:
|
||||
properties:
|
||||
|
@ -1263,11 +1302,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -1297,11 +1338,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -1312,6 +1355,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
|
@ -1325,6 +1369,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1341,11 +1386,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -1375,11 +1422,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -1390,12 +1439,14 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
type: string
|
||||
required:
|
||||
- topologyKey
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
type: object
|
||||
automountServiceAccountToken:
|
||||
|
@ -1407,10 +1458,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -1425,6 +1478,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1463,6 +1517,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1475,12 +1530,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1491,6 +1550,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -1498,6 +1558,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -1512,6 +1573,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -1529,6 +1591,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1570,6 +1633,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -1587,6 +1651,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1629,6 +1694,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1659,6 +1725,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1733,6 +1800,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1763,6 +1831,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1841,16 +1910,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -1906,6 +1986,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -1936,6 +2017,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -1998,6 +2080,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2009,6 +2094,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -2018,18 +2105,25 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
dnsConfig:
|
||||
properties:
|
||||
nameservers:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
options:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2039,10 +2133,12 @@ spec:
|
|||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
searches:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
dnsPolicy:
|
||||
type: string
|
||||
|
@ -2055,10 +2151,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2073,6 +2171,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2111,6 +2210,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2123,12 +2223,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2139,6 +2243,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2146,6 +2251,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -2160,6 +2266,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -2177,6 +2284,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2218,6 +2326,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -2235,6 +2344,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2277,6 +2387,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2307,6 +2418,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2381,6 +2493,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2411,6 +2524,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2489,16 +2603,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -2554,6 +2679,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2584,6 +2710,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2648,6 +2775,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2659,6 +2789,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -2668,12 +2800,18 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
hostAliases:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2681,10 +2819,16 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
ip:
|
||||
type: string
|
||||
required:
|
||||
- ip
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- ip
|
||||
x-kubernetes-list-type: map
|
||||
hostIPC:
|
||||
type: boolean
|
||||
hostNetwork:
|
||||
|
@ -2699,10 +2843,14 @@ spec:
|
|||
items:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
initContainers:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2710,10 +2858,12 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
command:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
env:
|
||||
items:
|
||||
properties:
|
||||
|
@ -2728,6 +2878,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2766,6 +2917,7 @@ spec:
|
|||
key:
|
||||
type: string
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2778,12 +2930,16 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
envFrom:
|
||||
items:
|
||||
properties:
|
||||
configMapRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2794,6 +2950,7 @@ spec:
|
|||
secretRef:
|
||||
properties:
|
||||
name:
|
||||
default: ""
|
||||
type: string
|
||||
optional:
|
||||
type: boolean
|
||||
|
@ -2801,6 +2958,7 @@ spec:
|
|||
x-kubernetes-map-type: atomic
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
image:
|
||||
type: string
|
||||
imagePullPolicy:
|
||||
|
@ -2815,6 +2973,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -2832,6 +2991,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2873,6 +3033,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
httpGet:
|
||||
properties:
|
||||
|
@ -2890,6 +3051,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -2932,6 +3094,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -2962,6 +3125,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -3036,6 +3200,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -3066,6 +3231,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -3144,16 +3310,27 @@ spec:
|
|||
properties:
|
||||
allowPrivilegeEscalation:
|
||||
type: boolean
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
capabilities:
|
||||
properties:
|
||||
add:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
type: boolean
|
||||
|
@ -3209,6 +3386,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
failureThreshold:
|
||||
format: int32
|
||||
|
@ -3239,6 +3417,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
type: string
|
||||
port:
|
||||
|
@ -3301,6 +3480,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- devicePath
|
||||
x-kubernetes-list-type: map
|
||||
volumeMounts:
|
||||
items:
|
||||
properties:
|
||||
|
@ -3312,6 +3494,8 @@ spec:
|
|||
type: string
|
||||
readOnly:
|
||||
type: boolean
|
||||
recursiveReadOnly:
|
||||
type: string
|
||||
subPath:
|
||||
type: string
|
||||
subPathExpr:
|
||||
|
@ -3321,12 +3505,18 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- mountPath
|
||||
x-kubernetes-list-type: map
|
||||
workingDir:
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- name
|
||||
x-kubernetes-list-type: map
|
||||
nodeName:
|
||||
type: string
|
||||
nodeSelector:
|
||||
|
@ -3365,6 +3555,7 @@ spec:
|
|||
- conditionType
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
resourceClaims:
|
||||
items:
|
||||
properties:
|
||||
|
@ -3404,6 +3595,15 @@ spec:
|
|||
x-kubernetes-list-type: map
|
||||
securityContext:
|
||||
properties:
|
||||
appArmorProfile:
|
||||
properties:
|
||||
localhostProfile:
|
||||
type: string
|
||||
type:
|
||||
type: string
|
||||
required:
|
||||
- type
|
||||
type: object
|
||||
fsGroup:
|
||||
format: int64
|
||||
type: integer
|
||||
|
@ -3442,6 +3642,7 @@ spec:
|
|||
format: int64
|
||||
type: integer
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
sysctls:
|
||||
items:
|
||||
properties:
|
||||
|
@ -3454,6 +3655,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
windowsOptions:
|
||||
properties:
|
||||
gmsaCredentialSpec:
|
||||
|
@ -3495,6 +3697,7 @@ spec:
|
|||
type: string
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologySpreadConstraints:
|
||||
items:
|
||||
properties:
|
||||
|
@ -3511,11 +3714,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
@ -3552,9 +3757,7 @@ spec:
|
|||
- whenUnsatisfiable
|
||||
x-kubernetes-list-type: map
|
||||
volumes:
|
||||
items:
|
||||
x-kubernetes-preserve-unknown-fields: true
|
||||
type: array
|
||||
x-kubernetes-preserve-unknown-fields: true
|
||||
required:
|
||||
- containers
|
||||
type: object
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -192,6 +192,7 @@ rules:
|
|||
- get
|
||||
- apiGroups:
|
||||
- elbv2.k8s.aws
|
||||
- eks.amazonaws.com
|
||||
resources:
|
||||
- targetgroupbindings
|
||||
verbs:
|
||||
|
|
|
@ -197,6 +197,7 @@ rules:
|
|||
- get
|
||||
- apiGroups:
|
||||
- elbv2.k8s.aws
|
||||
- eks.amazonaws.com
|
||||
resources:
|
||||
- targetgroupbindings
|
||||
verbs:
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
"k8s.io/utils/pointer"
|
||||
"k8s.io/utils/ptr"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
)
|
||||
|
@ -242,65 +242,65 @@ func TestConvertType(t *testing.T) {
|
|||
query: []v1alpha1.CloudWatchMetricDataQuery{
|
||||
{
|
||||
Id: "rate",
|
||||
Expression: pointer.StringPtr("errors / requests"),
|
||||
Expression: ptr.To[string]("errors / requests"),
|
||||
},
|
||||
{
|
||||
Id: "errors",
|
||||
MetricStat: &v1alpha1.CloudWatchMetricStat{
|
||||
Metric: v1alpha1.CloudWatchMetricStatMetric{
|
||||
Namespace: pointer.StringPtr("app"),
|
||||
Namespace: ptr.To[string]("app"),
|
||||
MetricName: "errors",
|
||||
},
|
||||
Period: period,
|
||||
Stat: "Sum",
|
||||
Unit: "Count",
|
||||
},
|
||||
ReturnData: pointer.BoolPtr(false),
|
||||
ReturnData: ptr.To[bool](false),
|
||||
},
|
||||
{
|
||||
Id: "requests",
|
||||
MetricStat: &v1alpha1.CloudWatchMetricStat{
|
||||
Metric: v1alpha1.CloudWatchMetricStatMetric{
|
||||
Namespace: pointer.StringPtr("app"),
|
||||
Namespace: ptr.To[string]("app"),
|
||||
MetricName: "requests",
|
||||
},
|
||||
Period: period,
|
||||
Stat: "Sum",
|
||||
Unit: "Count",
|
||||
},
|
||||
ReturnData: pointer.BoolPtr(false),
|
||||
ReturnData: ptr.To[bool](false),
|
||||
},
|
||||
},
|
||||
expected: []types.MetricDataQuery{
|
||||
{
|
||||
Id: pointer.StringPtr("rate"),
|
||||
Expression: pointer.StringPtr("errors / requests"),
|
||||
Id: ptr.To[string]("rate"),
|
||||
Expression: ptr.To[string]("errors / requests"),
|
||||
},
|
||||
{
|
||||
Id: pointer.StringPtr("errors"),
|
||||
Id: ptr.To[string]("errors"),
|
||||
MetricStat: &types.MetricStat{
|
||||
Metric: &types.Metric{
|
||||
Namespace: pointer.StringPtr("app"),
|
||||
MetricName: pointer.StringPtr("errors"),
|
||||
Namespace: ptr.To[string]("app"),
|
||||
MetricName: ptr.To[string]("errors"),
|
||||
},
|
||||
Period: pointer.Int32Ptr(300),
|
||||
Stat: pointer.StringPtr("Sum"),
|
||||
Period: ptr.To[int32](300),
|
||||
Stat: ptr.To[string]("Sum"),
|
||||
Unit: types.StandardUnitCount,
|
||||
},
|
||||
ReturnData: pointer.BoolPtr(false),
|
||||
ReturnData: ptr.To[bool](false),
|
||||
},
|
||||
{
|
||||
Id: pointer.StringPtr("requests"),
|
||||
Id: ptr.To[string]("requests"),
|
||||
MetricStat: &types.MetricStat{
|
||||
Metric: &types.Metric{
|
||||
Namespace: pointer.StringPtr("app"),
|
||||
MetricName: pointer.StringPtr("requests"),
|
||||
Namespace: ptr.To[string]("app"),
|
||||
MetricName: ptr.To[string]("requests"),
|
||||
},
|
||||
Period: pointer.Int32Ptr(300),
|
||||
Stat: pointer.StringPtr("Sum"),
|
||||
Period: ptr.To[int32](300),
|
||||
Stat: ptr.To[string]("Sum"),
|
||||
Unit: types.StandardUnitCount,
|
||||
},
|
||||
ReturnData: pointer.BoolPtr(false),
|
||||
ReturnData: ptr.To[bool](false),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -308,7 +308,7 @@ func TestConvertType(t *testing.T) {
|
|||
query: []v1alpha1.CloudWatchMetricDataQuery{
|
||||
{
|
||||
Id: "rate",
|
||||
Expression: pointer.StringPtr("errors / requests"),
|
||||
Expression: ptr.To[string]("errors / requests"),
|
||||
},
|
||||
{
|
||||
Id: "errors",
|
||||
|
@ -320,65 +320,65 @@ func TestConvertType(t *testing.T) {
|
|||
Value: "fuga",
|
||||
},
|
||||
},
|
||||
Namespace: pointer.StringPtr("app1"),
|
||||
Namespace: ptr.To[string]("app1"),
|
||||
MetricName: "errors",
|
||||
},
|
||||
Period: period,
|
||||
Stat: "Max",
|
||||
Unit: "Count",
|
||||
},
|
||||
ReturnData: pointer.BoolPtr(false),
|
||||
ReturnData: ptr.To[bool](false),
|
||||
},
|
||||
{
|
||||
Id: "requests",
|
||||
MetricStat: &v1alpha1.CloudWatchMetricStat{
|
||||
Metric: v1alpha1.CloudWatchMetricStatMetric{
|
||||
Namespace: pointer.StringPtr("app2"),
|
||||
Namespace: ptr.To[string]("app2"),
|
||||
MetricName: "requests",
|
||||
},
|
||||
Period: period,
|
||||
Stat: "Sum",
|
||||
Unit: "Bytes/Second",
|
||||
},
|
||||
ReturnData: pointer.BoolPtr(true),
|
||||
ReturnData: ptr.To[bool](true),
|
||||
},
|
||||
},
|
||||
expected: []types.MetricDataQuery{
|
||||
{
|
||||
Id: pointer.StringPtr("rate"),
|
||||
Expression: pointer.StringPtr("errors / requests"),
|
||||
Id: ptr.To[string]("rate"),
|
||||
Expression: ptr.To[string]("errors / requests"),
|
||||
},
|
||||
{
|
||||
Id: pointer.StringPtr("errors"),
|
||||
Id: ptr.To[string]("errors"),
|
||||
MetricStat: &types.MetricStat{
|
||||
Metric: &types.Metric{
|
||||
Namespace: pointer.StringPtr("app1"),
|
||||
MetricName: pointer.StringPtr("errors"),
|
||||
Namespace: ptr.To[string]("app1"),
|
||||
MetricName: ptr.To[string]("errors"),
|
||||
Dimensions: []types.Dimension{
|
||||
{
|
||||
Name: pointer.StringPtr("hoge"),
|
||||
Value: pointer.StringPtr("fuga"),
|
||||
Name: ptr.To[string]("hoge"),
|
||||
Value: ptr.To[string]("fuga"),
|
||||
},
|
||||
},
|
||||
},
|
||||
Period: pointer.Int32Ptr(300),
|
||||
Stat: pointer.StringPtr("Max"),
|
||||
Period: ptr.To[int32](300),
|
||||
Stat: ptr.To[string]("Max"),
|
||||
Unit: types.StandardUnitCount,
|
||||
},
|
||||
ReturnData: pointer.BoolPtr(false),
|
||||
ReturnData: ptr.To[bool](false),
|
||||
},
|
||||
{
|
||||
Id: pointer.StringPtr("requests"),
|
||||
Id: ptr.To[string]("requests"),
|
||||
MetricStat: &types.MetricStat{
|
||||
Metric: &types.Metric{
|
||||
Namespace: pointer.StringPtr("app2"),
|
||||
MetricName: pointer.StringPtr("requests"),
|
||||
Namespace: ptr.To[string]("app2"),
|
||||
MetricName: ptr.To[string]("requests"),
|
||||
},
|
||||
Period: pointer.Int32Ptr(300),
|
||||
Stat: pointer.StringPtr("Sum"),
|
||||
Period: ptr.To[int32](300),
|
||||
Stat: ptr.To[string]("Sum"),
|
||||
Unit: types.StandardUnitBytesSecond,
|
||||
},
|
||||
ReturnData: pointer.BoolPtr(true),
|
||||
ReturnData: ptr.To[bool](true),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -386,7 +386,7 @@ func TestConvertType(t *testing.T) {
|
|||
query: []v1alpha1.CloudWatchMetricDataQuery{
|
||||
{
|
||||
Id: "rate",
|
||||
Expression: pointer.StringPtr("errors / requests"),
|
||||
Expression: ptr.To[string]("errors / requests"),
|
||||
},
|
||||
{
|
||||
Id: "errors",
|
||||
|
@ -402,69 +402,69 @@ func TestConvertType(t *testing.T) {
|
|||
Value: "doge",
|
||||
},
|
||||
},
|
||||
Namespace: pointer.StringPtr("app1"),
|
||||
Namespace: ptr.To[string]("app1"),
|
||||
MetricName: "errors",
|
||||
},
|
||||
Period: period,
|
||||
Stat: "Max",
|
||||
Unit: "Count",
|
||||
},
|
||||
ReturnData: pointer.BoolPtr(false),
|
||||
ReturnData: ptr.To[bool](false),
|
||||
},
|
||||
{
|
||||
Id: "requests",
|
||||
MetricStat: &v1alpha1.CloudWatchMetricStat{
|
||||
Metric: v1alpha1.CloudWatchMetricStatMetric{
|
||||
Namespace: pointer.StringPtr("app2"),
|
||||
Namespace: ptr.To[string]("app2"),
|
||||
MetricName: "requests",
|
||||
},
|
||||
Period: period,
|
||||
Stat: "Sum",
|
||||
Unit: "Bytes/Second",
|
||||
},
|
||||
ReturnData: pointer.BoolPtr(true),
|
||||
ReturnData: ptr.To[bool](true),
|
||||
},
|
||||
},
|
||||
expected: []types.MetricDataQuery{
|
||||
{
|
||||
Id: pointer.StringPtr("rate"),
|
||||
Expression: pointer.StringPtr("errors / requests"),
|
||||
Id: ptr.To[string]("rate"),
|
||||
Expression: ptr.To[string]("errors / requests"),
|
||||
},
|
||||
{
|
||||
Id: pointer.StringPtr("errors"),
|
||||
Id: ptr.To[string]("errors"),
|
||||
MetricStat: &types.MetricStat{
|
||||
Metric: &types.Metric{
|
||||
Namespace: pointer.StringPtr("app1"),
|
||||
MetricName: pointer.StringPtr("errors"),
|
||||
Namespace: ptr.To[string]("app1"),
|
||||
MetricName: ptr.To[string]("errors"),
|
||||
Dimensions: []types.Dimension{
|
||||
{
|
||||
Name: pointer.StringPtr("hoge"),
|
||||
Value: pointer.StringPtr("fuga"),
|
||||
Name: ptr.To[string]("hoge"),
|
||||
Value: ptr.To[string]("fuga"),
|
||||
},
|
||||
{
|
||||
Name: pointer.StringPtr("poge"),
|
||||
Value: pointer.StringPtr("doge"),
|
||||
Name: ptr.To[string]("poge"),
|
||||
Value: ptr.To[string]("doge"),
|
||||
},
|
||||
},
|
||||
},
|
||||
Period: pointer.Int32Ptr(300),
|
||||
Stat: pointer.StringPtr("Max"),
|
||||
Period: ptr.To[int32](300),
|
||||
Stat: ptr.To[string]("Max"),
|
||||
Unit: types.StandardUnitCount,
|
||||
},
|
||||
ReturnData: pointer.BoolPtr(false),
|
||||
ReturnData: ptr.To[bool](false),
|
||||
},
|
||||
{
|
||||
Id: pointer.StringPtr("requests"),
|
||||
Id: ptr.To[string]("requests"),
|
||||
MetricStat: &types.MetricStat{
|
||||
Metric: &types.Metric{
|
||||
Namespace: pointer.StringPtr("app2"),
|
||||
MetricName: pointer.StringPtr("requests"),
|
||||
Namespace: ptr.To[string]("app2"),
|
||||
MetricName: ptr.To[string]("requests"),
|
||||
},
|
||||
Period: pointer.Int32Ptr(300),
|
||||
Stat: pointer.StringPtr("Sum"),
|
||||
Period: ptr.To[int32](300),
|
||||
Stat: ptr.To[string]("Sum"),
|
||||
Unit: types.StandardUnitBytesSecond,
|
||||
},
|
||||
ReturnData: pointer.BoolPtr(true),
|
||||
ReturnData: ptr.To[bool](true),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
@ -451,7 +451,7 @@ func findCredentials(logCtx log.Entry, kubeclientset kubernetes.Interface, names
|
|||
}
|
||||
for _, finder := range finders {
|
||||
address, apiKey, appKey := finder.FindCredentials(logCtx)
|
||||
if address != "" && apiKey != "" && appKey != "" {
|
||||
if apiKey != "" && appKey != "" {
|
||||
return address, apiKey, appKey, nil
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@ import (
|
|||
"strconv"
|
||||
"testing"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/stretchr/testify/assert"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
|
@ -16,6 +15,8 @@ import (
|
|||
"k8s.io/apimachinery/pkg/runtime"
|
||||
k8sfake "k8s.io/client-go/kubernetes/fake"
|
||||
kubetesting "k8s.io/client-go/testing"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
)
|
||||
|
||||
func TestRunSuite(t *testing.T) {
|
||||
|
|
|
@ -8,7 +8,6 @@ import (
|
|||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/stretchr/testify/assert"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
|
@ -16,6 +15,8 @@ import (
|
|||
"k8s.io/apimachinery/pkg/runtime"
|
||||
k8sfake "k8s.io/client-go/kubernetes/fake"
|
||||
kubetesting "k8s.io/client-go/testing"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
)
|
||||
|
||||
func newQueryDefaultProvider() v1alpha1.MetricProvider {
|
||||
|
|
|
@ -6,7 +6,6 @@ import (
|
|||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/stretchr/testify/assert"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
|
@ -15,6 +14,8 @@ import (
|
|||
k8sfake "k8s.io/client-go/kubernetes/fake"
|
||||
"k8s.io/client-go/kubernetes/scheme"
|
||||
kubetesting "k8s.io/client-go/testing"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
)
|
||||
|
||||
func TestDatadogSpecDefaults(t *testing.T) {
|
||||
|
@ -187,16 +188,23 @@ func TestValidateIncomingProps(t *testing.T) {
|
|||
func TestFindCredentials(t *testing.T) {
|
||||
|
||||
testCases := []struct {
|
||||
name string
|
||||
secret *corev1.Secret
|
||||
expectsError bool
|
||||
metric v1alpha1.Metric
|
||||
name string
|
||||
secret *corev1.Secret
|
||||
expectsError bool
|
||||
expectsEmptyAddress bool
|
||||
metric v1alpha1.Metric
|
||||
}{
|
||||
{
|
||||
name: "when secretRef is set and secret found, should success",
|
||||
secret: NewSecretBuilderDefaultData().Build(),
|
||||
metric: newMetric("datadog", true),
|
||||
},
|
||||
{
|
||||
name: "when secretRef without address is set and secret found, should success",
|
||||
secret: NewSecretBuilder().WithData("api-key", []byte("apiKey")).WithData("app-key", []byte("appKey")).Build(),
|
||||
metric: newMetric("datadog", true),
|
||||
expectsEmptyAddress: true,
|
||||
},
|
||||
{
|
||||
name: "when secretRef is set but secret not found, should fail",
|
||||
secret: NewSecretBuilder().Build(),
|
||||
|
@ -222,7 +230,11 @@ func TestFindCredentials(t *testing.T) {
|
|||
address, apiKey, appKey, err := findCredentials(logCtx, fakeClient, "namespace", testCase.metric)
|
||||
assert.Equal(t, err != nil, testCase.expectsError)
|
||||
if !testCase.expectsError {
|
||||
assert.Equal(t, string(testCase.secret.Data["address"]), address)
|
||||
if testCase.expectsEmptyAddress {
|
||||
assert.Empty(t, address)
|
||||
} else {
|
||||
assert.Equal(t, string(testCase.secret.Data["address"]), address)
|
||||
}
|
||||
assert.Equal(t, string(testCase.secret.Data["api-key"]), apiKey)
|
||||
assert.Equal(t, string(testCase.secret.Data["app-key"]), appKey)
|
||||
}
|
||||
|
|
|
@ -8,9 +8,10 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
)
|
||||
|
||||
func testGraphiteMetric(addr string) v1alpha1.Metric {
|
||||
|
|
|
@ -6,14 +6,15 @@ import (
|
|||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/utils/defaults"
|
||||
"github.com/argoproj/argo-rollouts/utils/evaluate"
|
||||
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
||||
influxapi "github.com/influxdata/influxdb-client-go/v2/api"
|
||||
log "github.com/sirupsen/logrus"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/utils/defaults"
|
||||
"github.com/argoproj/argo-rollouts/utils/evaluate"
|
||||
|
||||
"github.com/argoproj/argo-rollouts/pkg/apis/rollouts/v1alpha1"
|
||||
metricutil "github.com/argoproj/argo-rollouts/utils/metric"
|
||||
)
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue