diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000000..639a059edc
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,16 @@
+# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
+# https://docs.github.com/code-security/dependabot/dependabot-version-updates/customizing-dependency-updates
+#
+# See: https://www.github.com/dependabot/dependabot-core/issues/4605
+---
+# yaml-language-server: $schema=https://json.schemastore.org/dependabot-2.0.json
+version: 2
+updates:
+ - package-ecosystem: github-actions
+ directory: /
+ schedule:
+ interval: weekly
+ day: tuesday
+ groups:
+ all-github-actions:
+ patterns: ['*']
diff --git a/.github/workflows/codeql-analysis.yaml b/.github/workflows/codeql-analysis.yaml
index 5ee0fd846a..ae4d24d122 100644
--- a/.github/workflows/codeql-analysis.yaml
+++ b/.github/workflows/codeql-analysis.yaml
@@ -1,15 +1,20 @@
name: CodeQL
on:
+ pull_request:
push:
branches:
- - master
+ - main
schedule:
- cron: '10 18 * * 2'
+env:
+ # Use the Go toolchain installed by setup-go
+ # https://github.com/actions/setup-go/issues/457
+ GOTOOLCHAIN: local
+
jobs:
analyze:
- name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
@@ -19,17 +24,17 @@ jobs:
if: ${{ github.repository == 'CrunchyData/postgres-operator' }}
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-go@v3
- with: { go-version: 1.x }
+ - uses: actions/checkout@v4
+ - uses: actions/setup-go@v5
+ with: { go-version: stable }
- name: Initialize CodeQL
- uses: github/codeql-action/init@v2
+ uses: github/codeql-action/init@v3
with: { languages: go }
- name: Autobuild
# This action calls `make` which runs our "help" target.
- uses: github/codeql-action/autobuild@v2
+ uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v2
+ uses: github/codeql-action/analyze@v3
diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml
index c9c578fc2c..c715f2a1d7 100644
--- a/.github/workflows/lint.yaml
+++ b/.github/workflows/lint.yaml
@@ -2,55 +2,24 @@ name: Linters
on:
pull_request:
- branches:
- - master
-jobs:
- documentation:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
-
- # Some versions of Ubuntu have an awk that does not recognize POSIX classes.
- # Log the version of awk and abort when it cannot match space U+0020.
- # - https://bugs.launchpad.net/ubuntu/+source/mawk/+bug/69724
- - run: awk -W version && awk '{ exit 1 != match($0, /[[:space:]]/) }' <<< ' '
- - run: |
- find docs/content -not -type d -not -name crd.md -print0 | xargs -0 awk '
- BEGIN { print "::add-matcher::.github/actions/awk-matcher.json" }
-
- /[[:space:]]$/ { errors++; print FILENAME ":" FNR " error: Trailing space" }
- /TODO/ { errors++; print FILENAME ":" FNR " error: Found TODO. Try running hack/create-todo-patch.sh" }
-
- END { print "::remove-matcher owner=awk::" }
- END { exit errors != 0 }
- '
-
- documentation-crd:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
-
- # The `documentation-crd` job only checks the crd.md for `TODO`,
- # as some of the upstream documentation has trailing spaces
- - run: |
- find docs/content -name crd.md -print0 | xargs -0 awk '
- BEGIN { print "::add-matcher::.github/actions/awk-matcher.json" }
-
- /TODO/ { errors++; print FILENAME ":" FNR " error: Found TODO. Try running hack/create-todo-patch.sh" }
-
- END { print "::remove-matcher owner=awk::" }
- END { exit errors != 0 }
- '
+env:
+ # Use the Go toolchain installed by setup-go
+ # https://github.com/actions/setup-go/issues/457
+ GOTOOLCHAIN: local
+jobs:
golangci-lint:
runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ checks: write
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-go@v3
- with: { go-version: 1.x }
+ - uses: actions/checkout@v4
+ - uses: actions/setup-go@v5
+ with: { go-version: stable }
- - uses: golangci/golangci-lint-action@v3
+ - uses: golangci/golangci-lint-action@v6
with:
version: latest
args: --timeout=5m
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index 45adcfb385..e8174e4f95 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -2,20 +2,22 @@ name: Tests
on:
pull_request:
- branches:
- - master
push:
branches:
- - master
+ - main
+
+env:
+ # Use the Go toolchain installed by setup-go
+ # https://github.com/actions/setup-go/issues/457
+ GOTOOLCHAIN: local
jobs:
go-test:
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-go@v3
- with:
- go-version: 1.x
+ - uses: actions/checkout@v4
+ - uses: actions/setup-go@v5
+ with: { go-version: stable }
- run: make check
- run: make check-generate
@@ -23,16 +25,16 @@ jobs:
run: go mod tidy && git diff --exit-code -- go.mod
kubernetes-api:
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-latest
needs: [go-test]
strategy:
fail-fast: false
matrix:
kubernetes: ['default']
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-go@v3
- with: { go-version: 1.x }
+ - uses: actions/checkout@v4
+ - uses: actions/setup-go@v5
+ with: { go-version: stable }
- run: go mod download
- run: ENVTEST_K8S_VERSION="${KUBERNETES#default}" make check-envtest
env:
@@ -41,33 +43,33 @@ jobs:
# Upload coverage to GitHub
- run: gzip envtest.coverage
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
with:
- name: "kubernetes-api=${{ matrix.kubernetes }}"
+ name: "~coverage~kubernetes-api=${{ matrix.kubernetes }}"
path: envtest.coverage.gz
retention-days: 1
kubernetes-k3d:
if: "${{ github.repository == 'CrunchyData/postgres-operator' }}"
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-latest
needs: [go-test]
strategy:
fail-fast: false
matrix:
- kubernetes: [v1.28, v1.25]
+ kubernetes: [v1.31, v1.28]
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-go@v3
- with: { go-version: 1.x }
+ - uses: actions/checkout@v4
+ - uses: actions/setup-go@v5
+ with: { go-version: stable }
- name: Start k3s
uses: ./.github/actions/k3d
with:
k3s-channel: "${{ matrix.kubernetes }}"
prefetch-images: |
- registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.47-0
- registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.19-4
- registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.9-0
+ registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.53.1-0
+ registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.23-0
+ registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-16.4-2
- run: make createnamespaces check-envtest-existing
env:
@@ -76,38 +78,39 @@ jobs:
# Upload coverage to GitHub
- run: gzip envtest-existing.coverage
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
with:
- name: "kubernetes-k3d=${{ matrix.kubernetes }}"
+ name: "~coverage~kubernetes-k3d=${{ matrix.kubernetes }}"
path: envtest-existing.coverage.gz
retention-days: 1
kuttl-k3d:
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-latest
needs: [go-test]
strategy:
fail-fast: false
matrix:
- kubernetes: [v1.28, v1.27, v1.26, v1.25]
+ kubernetes: [v1.31, v1.30, v1.29, v1.28]
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-go@v3
- with: { go-version: 1.x }
+ - uses: actions/checkout@v4
+ - uses: actions/setup-go@v5
+ with: { go-version: stable }
- name: Start k3s
uses: ./.github/actions/k3d
with:
k3s-channel: "${{ matrix.kubernetes }}"
prefetch-images: |
- registry.developers.crunchydata.com/crunchydata/crunchy-pgadmin4:ubi8-4.30-17
- registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.47-0
- registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.19-4
+ registry.developers.crunchydata.com/crunchydata/crunchy-pgadmin4:ubi8-4.30-31
+ registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.53.1-0
+ registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.23-0
registry.developers.crunchydata.com/crunchydata/crunchy-postgres-exporter:latest
registry.developers.crunchydata.com/crunchydata/crunchy-upgrade:latest
- registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.9-0
- registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-14.9-3.1-0
- registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-15.4-0
- registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-15.4-3.3-0
+ registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-16.4-2
+ registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-16.4-3.3-2
+ registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-16.4-3.4-2
+ registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-17.0-0
+ registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-17.0-3.4-0
- run: go mod download
- name: Build executable
run: PGO_VERSION='${{ github.sha }}' make build-postgres-operator
@@ -116,7 +119,7 @@ jobs:
run: make get-pgmonitor
env:
PGMONITOR_DIR: "${{ github.workspace }}/hack/tools/pgmonitor"
- QUERIES_CONFIG_DIR: "${{ github.workspace }}/hack/tools/queries"
+ QUERIES_CONFIG_DIR: "${{ github.workspace }}/hack/tools/queries"
# Start a Docker container with the working directory mounted.
- name: Start PGO
@@ -126,21 +129,23 @@ jobs:
hack/create-kubeconfig.sh postgres-operator pgo
docker run --detach --network host --read-only \
--volume "$(pwd):/mnt" --workdir '/mnt' --env 'PATH=/mnt/bin' \
+ --env 'CHECK_FOR_UPGRADES=false' \
--env 'QUERIES_CONFIG_DIR=/mnt/hack/tools/queries' \
--env 'KUBECONFIG=hack/.kube/postgres-operator/pgo' \
- --env 'RELATED_IMAGE_PGADMIN=registry.developers.crunchydata.com/crunchydata/crunchy-pgadmin4:ubi8-4.30-17' \
- --env 'RELATED_IMAGE_PGBACKREST=registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.47-0' \
- --env 'RELATED_IMAGE_PGBOUNCER=registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.19-4' \
+ --env 'RELATED_IMAGE_PGADMIN=registry.developers.crunchydata.com/crunchydata/crunchy-pgadmin4:ubi8-4.30-31' \
+ --env 'RELATED_IMAGE_PGBACKREST=registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.53.1-0' \
+ --env 'RELATED_IMAGE_PGBOUNCER=registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.23-0' \
--env 'RELATED_IMAGE_PGEXPORTER=registry.developers.crunchydata.com/crunchydata/crunchy-postgres-exporter:latest' \
--env 'RELATED_IMAGE_PGUPGRADE=registry.developers.crunchydata.com/crunchydata/crunchy-upgrade:latest' \
- --env 'RELATED_IMAGE_POSTGRES_14=registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.9-0' \
- --env 'RELATED_IMAGE_POSTGRES_14_GIS_3.1=registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-14.9-3.1-0' \
- --env 'RELATED_IMAGE_POSTGRES_15=registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-15.4-0' \
- --env 'RELATED_IMAGE_POSTGRES_15_GIS_3.3=registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-15.4-3.3-0' \
+ --env 'RELATED_IMAGE_POSTGRES_16=registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-16.4-2' \
+ --env 'RELATED_IMAGE_POSTGRES_16_GIS_3.3=registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-16.4-3.3-2' \
+ --env 'RELATED_IMAGE_POSTGRES_16_GIS_3.4=registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-16.4-3.4-2' \
+ --env 'RELATED_IMAGE_POSTGRES_17=registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-17.0-0' \
+ --env 'RELATED_IMAGE_POSTGRES_17_GIS_3.4=registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-17.0-3.4-0' \
+ --env 'RELATED_IMAGE_STANDALONE_PGADMIN=registry.developers.crunchydata.com/crunchydata/crunchy-pgadmin4:ubi8-8.12-0' \
--env 'PGO_FEATURE_GATES=TablespaceVolumes=true' \
--name 'postgres-operator' ubuntu \
postgres-operator
-
- name: Install kuttl
run: |
curl -Lo /usr/local/bin/kubectl-kuttl https://github.com/kudobuilder/kuttl/releases/download/v0.13.0/kubectl-kuttl_0.13.0_linux_x86_64
@@ -148,11 +153,11 @@ jobs:
- run: make generate-kuttl
env:
- KUTTL_PG_UPGRADE_FROM_VERSION: '14'
- KUTTL_PG_UPGRADE_TO_VERSION: '15'
- KUTTL_PG_VERSION: '14'
- KUTTL_POSTGIS_VERSION: '3.1'
- KUTTL_PSQL_IMAGE: 'registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.9-0'
+ KUTTL_PG_UPGRADE_FROM_VERSION: '16'
+ KUTTL_PG_UPGRADE_TO_VERSION: '17'
+ KUTTL_PG_VERSION: '16'
+ KUTTL_POSTGIS_VERSION: '3.4'
+ KUTTL_PSQL_IMAGE: 'registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-16.4-2'
- run: |
make check-kuttl && exit
failed=$?
@@ -170,10 +175,10 @@ jobs:
- kubernetes-api
- kubernetes-k3d
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-go@v3
- with: { go-version: 1.x }
- - uses: actions/download-artifact@v3
+ - uses: actions/checkout@v4
+ - uses: actions/setup-go@v5
+ with: { go-version: stable }
+ - uses: actions/download-artifact@v4
with: { path: download }
# Combine the coverage profiles by taking the mode line from any one file
@@ -197,8 +202,8 @@ jobs:
# Upload coverage to GitHub
- run: gzip total-coverage.html
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
with:
- name: coverage-report
+ name: coverage-report=html
path: total-coverage.html.gz
retention-days: 15
diff --git a/.github/workflows/trivy-pr-scan.yaml b/.github/workflows/trivy.yaml
similarity index 57%
rename from .github/workflows/trivy-pr-scan.yaml
rename to .github/workflows/trivy.yaml
index 183082e3f4..2a16e4929c 100644
--- a/.github/workflows/trivy-pr-scan.yaml
+++ b/.github/workflows/trivy.yaml
@@ -1,17 +1,38 @@
-# Uses Trivy to scan every pull request, rejecting those with severe, fixable vulnerabilities.
-# Scans on PR to master and weekly with same behavior.
name: Trivy
on:
pull_request:
- branches:
- - master
push:
branches:
- - master
+ - main
+
+env:
+ # Use the Go toolchain installed by setup-go
+ # https://github.com/actions/setup-go/issues/457
+ GOTOOLCHAIN: local
jobs:
- scan:
+ licenses:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ # Trivy needs a populated Go module cache to detect Go module licenses.
+ - uses: actions/setup-go@v5
+ with: { go-version: stable }
+ - run: go mod download
+
+ # Report success only when detected licenses are listed in [/trivy.yaml].
+ - name: Scan licenses
+ uses: aquasecurity/trivy-action@0.28.0
+ env:
+ TRIVY_DEBUG: true
+ with:
+ scan-type: filesystem
+ scanners: license
+ exit-code: 1
+
+ vulnerabilities:
if: ${{ github.repository == 'CrunchyData/postgres-operator' }}
permissions:
@@ -21,32 +42,34 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
# Run trivy and log detected and fixed vulnerabilities
# This report should match the uploaded code scan report below
# and is a convenience/redundant effort for those who prefer to
# read logs and/or if anything goes wrong with the upload.
- name: Log all detected vulnerabilities
- uses: aquasecurity/trivy-action@master
+ uses: aquasecurity/trivy-action@0.28.0
with:
- scan-type: fs
+ scan-type: filesystem
hide-progress: true
ignore-unfixed: true
-
+ scanners: secret,vuln
+
# Upload actionable results to the GitHub Security tab.
# Pull request checks fail according to repository settings.
# - https://docs.github.com/en/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github
# - https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning
- name: Report actionable vulnerabilities
- uses: aquasecurity/trivy-action@master
+ uses: aquasecurity/trivy-action@0.28.0
with:
- scan-type: fs
+ scan-type: filesystem
ignore-unfixed: true
format: 'sarif'
output: 'trivy-results.sarif'
+ scanners: secret,vuln
- name: Upload Trivy scan results to GitHub Security tab
- uses: github/codeql-action/upload-sarif@v2
+ uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: 'trivy-results.sarif'
diff --git a/.gitignore b/.gitignore
index 2fa6186778..dcfd7074a3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
.DS_Store
/vendor/
/testing/kuttl/e2e-generated*/
+gke_gcloud_auth_plugin_cache
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index b8907ec067..0000000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "hugo/themes/crunchy-hugo-theme"]
- path = docs/themes/crunchy-hugo-theme
- url = https://github.com/crunchydata/crunchy-hugo-theme
diff --git a/.golangci.next.yaml b/.golangci.next.yaml
index 8973702226..95b3f63347 100644
--- a/.golangci.next.yaml
+++ b/.golangci.next.yaml
@@ -9,11 +9,11 @@ linters:
disable-all: true
enable:
- contextcheck
+ - err113
- errchkjson
- gocritic
- godot
- godox
- - goerr113
- gofumpt
- gosec # exclude-use-default
- nilnil
@@ -38,7 +38,3 @@ linters-settings:
# https://github.com/kulti/thelper/issues/27
tb: { begin: true, first: true }
test: { begin: true, first: true, name: true }
-
-run:
- build-tags:
- - envtest
diff --git a/.golangci.yaml b/.golangci.yaml
index fb1ee2ceaf..87a6ed0464 100644
--- a/.golangci.yaml
+++ b/.golangci.yaml
@@ -6,9 +6,9 @@ linters:
- errchkjson
- gci
- gofumpt
- - scopelint
enable:
- depguard
+ - goheader
- gomodguard
- gosimple
- importas
@@ -44,6 +44,15 @@ linters-settings:
exhaustive:
default-signifies-exhaustive: true
+ goheader:
+ template: |-
+ Copyright {{ DATES }} Crunchy Data Solutions, Inc.
+
+ SPDX-License-Identifier: Apache-2.0
+ values:
+ regexp:
+ DATES: '((201[7-9]|202[0-3]) - 2024|2024)'
+
goimports:
local-prefixes: github.com/crunchydata/postgres-operator
@@ -58,6 +67,11 @@ linters-settings:
k8s.io/kubernetes is for managing dependencies of the Kubernetes
project, i.e. building kubelet and kubeadm.
+ gosec:
+ excludes:
+ # Flags for potentially-unsafe casting of ints, similar problem to globally-disabled G103
+ - G115
+
importas:
alias:
- pkg: k8s.io/api/(\w+)/(v[\w\w]+)
@@ -68,8 +82,6 @@ linters-settings:
alias: apierrors
no-unaliased: true
-run:
- build-tags:
- - envtest
- skip-dirs:
+issues:
+ exclude-dirs:
- pkg/generated
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 2e69d17f63..e209f4e5a7 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -13,15 +13,11 @@ Thanks! We look forward to your contribution.
# General Contributing Guidelines
All ongoing development for an upcoming release gets committed to the
-**`master`** branch. The `master` branch technically serves as the "development"
-branch as well, but all code that is committed to the `master` branch should be
+**`main`** branch. The `main` branch technically serves as the "development"
+branch as well, but all code that is committed to the `main` branch should be
considered _stable_, even if it is part of an ongoing release cycle.
-All fixes for a supported release should be committed to the supported release
-branch. For example, the 4.3 release is maintained on the `REL_4_3` branch.
-Please see the section on _Supported Releases_ for more information.
-
-Ensure any changes are clear and well-documented. When we say "well-documented":
+Ensure any changes are clear and well-documented:
- If the changes include code, ensure all additional code has corresponding
documentation in and around it. This includes documenting the definition of
@@ -32,10 +28,7 @@ summarize how. Avoid simply repeating details from declarations,. When in doubt,
favor overexplaining to underexplaining.
- Code comments should be consistent with their language conventions. For
-example, please use GoDoc conventions for Go source code.
-
-- Any new features must have corresponding user documentation. Any removed
-features must have their user documentation removed from the documents.
+example, please use `gofmt` [conventions](https://go.dev/doc/comment) for Go source code.
- Do not submit commented-out code. If the code does not need to be used
anymore, please remove it.
@@ -62,12 +55,7 @@ All commits must either be rebased in atomic order or squashed (if the squashed
commit is considered atomic). Merge commits are not accepted. All conflicts must
be resolved prior to pushing changes.
-**All pull requests should be made from the `master` branch** unless it is a fix
-for a specific supported release.
-
-Once a major or minor release is made, no new features are added into the
-release branch, only bug fixes. Any new features are added to the `master`
-branch until the time that said new features are released.
+**All pull requests should be made from the `main` branch.**
# Commit Messages
@@ -86,12 +74,11 @@ possible as to what the changes are. Good things to include:
understand.
```
-If you wish to tag a Github issue or another project management tracker, please
+If you wish to tag a GitHub issue or another project management tracker, please
do so at the bottom of the commit message, and make it clearly labeled like so:
```
-Issue: #123
-Issue: [sc-1234]
+Issue: CrunchyData/postgres-operator#123
```
# Submitting Pull Requests
@@ -100,102 +87,23 @@ All work should be made in your own repository fork. When you believe your work
is ready to be committed, please follow the guidance below for creating a pull
request.
-## Upcoming Releases / Features
-
-Ongoing work for new features should occur in branches off of the `master`
-branch. It is suggested, but not required, that the branch name should reflect
-that this is for an upcoming release, i.e. `upstream/branch-name` where the
-`branch-name` is something descriptive for what you're working on.
-
-## Supported Releases / Fixes
-
-While not required, it is recommended to make your branch name along the lines
-of: `REL_X_Y/branch-name` where the `branch-name` is something descriptive
-for what you're working on.
-
-# Releases & Versioning
-
-Overall, release tags attempt to follow the
-[semantic versioning](https://semver.org) scheme.
-
-"Supported releases" (described in the next section) occur on "minor" release
-branches (e.g. the `x.y` portion of the `x.y.z`).
-
-One or more "patch" releases can occur after a minor release. A patch release is
-used to fix bugs and other issues that may be found after a supported release.
-
-Fixes found on the `master` branch can be backported to a support release
-branch. Any fixes for a supported release must have a pull request off of the
-supported release branch, which is detailed below.
-
-## Supported Releases
+## Upcoming Features
-When a "minor" release is made, the release is stamped using the `vx.y.0` format
-as denoted above, and a branch is created with the name `REL_X_Y`. Once a
-minor release occurs, no new features are added to the `REL_X_Y` branch.
-However, bug fixes can (and if found, should) be added to this branch.
+Ongoing work for new features should occur in branches off of the `main`
+branch.
-To contribute a bug fix to a supported release, please make a pull request off
-of the supported release branch. For instance, if you find a bug in the 4.3
-release, then you would make a pull request off of the `REL_4_3` branch.
+## Unsupported Branches
-## Unsupported Releases
-
-When a release is no longer supported, the branch will be renamed following the
+When a release branch is no longer supported, it will be renamed following the
pattern `REL_X_Y_FINAL` with the key suffix being _FINAL_. For example,
`REL_3_2_FINAL` indicates that the 3.2 release is no longer supported.
Nothing should ever be pushed to a `REL_X_Y_FINAL` branch once `FINAL` is on
the branch name.
-## Alpha, Beta, Release Candidate Releases
-
-At any point in the release cycle for a new release, there could exist one or
-more alpha, beta, or release candidate (RC) release. Alpha, beta, and release
-candidates **should not be used in production environments**.
-
-Alpha is the early stage of a release cycle and is typically made to test the
-mechanics of an upcoming release. These should be considered relatively
-unstable. The format for an alpha release tag is `v4.3.0-alpha.1`, which in this
-case indicates it is the first alpha release for 4.3.
-
-Beta occurs during the later stage of a release cycle. At this point, the
-release should be considered feature complete and the beta is used to
-distribute, test, and collect feedback on the upcoming release. The betas should
-be considered unstable, but as mentioned feature complete. The format for an
-beta release tag is `v4.3.0-beta.1`, which in this case indicates it is the
-first beta release for 4.3.
-
-Release candidates (RCs) occur just before a release. A release candidate should
-be considered stable, and is typically used for a final round of bug checking
-and testing. Multiple release candidates can occur in the event of serious bugs.
-The format for a release candidate tag is `v4.3.0-rc.1`, which in this
-case indicates it is the first release candidate for 4.3.
-
-**After a major or minor release, no alpha, beta, or release candidate releases
-are supported**. In fact, any newer release of an alpha, beta, or RC immediately
-deprecates any older alpha, beta or RC. (Naturally, a beta deprecates an alpha,
-and a RC deprecates a beta).
-
-If you are testing on an older alpha, beta or RC, bug reports will not be
-accepted. Please ensure you are testing on the latest version.
-
# Testing
-We greatly appreciate any and all testing for the project. When testing, please
-be sure you do the following:
-
-- If testing against a release, ensure your tests are performed against the
-latest minor version (the last number in the release denotes the minor version,
-e.g. the "3" in the 4.3.3)
-- If testing against a pre-release (alpha, beta, RC), ensure your tests are
-performed against latest version
-- If testing against a development (`master`) or release (`REL_X_Y`) branch,
-ensure your tests are performed against the latest commit
-
-Please do not test against unsupported versions (e.g. any release that is marked
-final).
-
+We greatly appreciate any and all testing for the project.
There are several ways to help with the testing effort:
- Manual testing: testing particular features with a series of manual commands
diff --git a/LICENSE.md b/LICENSE.md
index 8ce5664373..8d57ad6f2e 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -176,7 +176,7 @@
END OF TERMS AND CONDITIONS
- Copyright 2017 - 2023 Crunchy Data Solutions, Inc.
+ Copyright 2017 - 2024 Crunchy Data Solutions, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/Makefile b/Makefile
index d8f325965b..37aca1a37e 100644
--- a/Makefile
+++ b/Makefile
@@ -6,25 +6,21 @@ PGO_IMAGE_URL ?= https://www.crunchydata.com/products/crunchy-postgresql-for-kub
PGO_IMAGE_PREFIX ?= localhost
PGMONITOR_DIR ?= hack/tools/pgmonitor
-PGMONITOR_VERSION ?= v4.10.0
+PGMONITOR_VERSION ?= v5.1.1
QUERIES_CONFIG_DIR ?= hack/tools/queries
+EXTERNAL_SNAPSHOTTER_DIR ?= hack/tools/external-snapshotter
+EXTERNAL_SNAPSHOTTER_VERSION ?= v8.0.1
+
# Buildah's "build" used to be "bud". Use the alias to be compatible for a while.
BUILDAH_BUILD ?= buildah bud
-DEBUG_BUILD ?= false
GO ?= go
-GO_BUILD = $(GO_CMD) build -trimpath
-GO_CMD = $(GO_ENV) $(GO)
+GO_BUILD = $(GO) build
GO_TEST ?= $(GO) test
KUTTL ?= kubectl-kuttl
KUTTL_TEST ?= $(KUTTL) test
-# Disable optimizations if creating a debug build
-ifeq ("$(DEBUG_BUILD)", "true")
- GO_BUILD = $(GO_CMD) build -gcflags='all=-N -l'
-endif
-
##@ General
# The help target prints out all targets with their descriptions organized
@@ -59,18 +55,23 @@ get-pgmonitor:
cp -r '$(PGMONITOR_DIR)/postgres_exporter/common/.' '${QUERIES_CONFIG_DIR}'
cp '$(PGMONITOR_DIR)/postgres_exporter/linux/queries_backrest.yml' '${QUERIES_CONFIG_DIR}'
+.PHONY: get-external-snapshotter
+get-external-snapshotter:
+ git -C '$(dir $(EXTERNAL_SNAPSHOTTER_DIR))' clone https://github.com/kubernetes-csi/external-snapshotter.git || git -C '$(EXTERNAL_SNAPSHOTTER_DIR)' fetch origin
+ @git -C '$(EXTERNAL_SNAPSHOTTER_DIR)' checkout '$(EXTERNAL_SNAPSHOTTER_VERSION)'
+ @git -C '$(EXTERNAL_SNAPSHOTTER_DIR)' config pull.ff only
+
.PHONY: clean
clean: ## Clean resources
clean: clean-deprecated
rm -f bin/postgres-operator
- rm -f config/rbac/role.yaml
+ rm -rf licenses/*/
[ ! -d testing/kuttl/e2e-generated ] || rm -r testing/kuttl/e2e-generated
[ ! -d testing/kuttl/e2e-generated-other ] || rm -r testing/kuttl/e2e-generated-other
- rm -rf build/crd/generated build/crd/*/generated
- [ ! -f hack/tools/setup-envtest ] || hack/tools/setup-envtest --bin-dir=hack/tools/envtest cleanup
[ ! -f hack/tools/setup-envtest ] || rm hack/tools/setup-envtest
- [ ! -d hack/tools/envtest ] || rm -r hack/tools/envtest
+ [ ! -d hack/tools/envtest ] || { chmod -R u+w hack/tools/envtest && rm -r hack/tools/envtest; }
[ ! -d hack/tools/pgmonitor ] || rm -rf hack/tools/pgmonitor
+ [ ! -d hack/tools/external-snapshotter ] || rm -rf hack/tools/external-snapshotter
[ ! -n "$$(ls hack/tools)" ] || rm -r hack/tools/*
[ ! -d hack/.kube ] || rm -r hack/.kube
@@ -91,6 +92,8 @@ clean-deprecated: ## Clean deprecated resources
@# crunchy-postgres-exporter used to live in this repo
[ ! -d bin/crunchy-postgres-exporter ] || rm -r bin/crunchy-postgres-exporter
[ ! -d build/crunchy-postgres-exporter ] || rm -r build/crunchy-postgres-exporter
+ @# CRDs used to require patching
+ [ ! -d build/crd ] || rm -r build/crd
##@ Deployment
@@ -120,7 +123,7 @@ undeploy: ## Undeploy the PostgreSQL Operator
.PHONY: deploy-dev
deploy-dev: ## Deploy the PostgreSQL Operator locally
-deploy-dev: PGO_FEATURE_GATES ?= "TablespaceVolumes=true"
+deploy-dev: PGO_FEATURE_GATES ?= "TablespaceVolumes=true,VolumeSnapshots=true"
deploy-dev: get-pgmonitor
deploy-dev: build-postgres-operator
deploy-dev: createnamespaces
@@ -133,6 +136,9 @@ deploy-dev: createnamespaces
CHECK_FOR_UPGRADES='$(if $(CHECK_FOR_UPGRADES),$(CHECK_FOR_UPGRADES),false)' \
KUBECONFIG=hack/.kube/postgres-operator/pgo \
PGO_NAMESPACE='postgres-operator' \
+ PGO_INSTALLER='deploy-dev' \
+ PGO_INSTALLER_ORIGIN='postgres-operator-repo' \
+ BUILD_SOURCE='build-postgres-operator' \
$(shell kubectl kustomize ./config/dev | \
sed -ne '/^kind: Deployment/,/^---/ { \
/RELATED_IMAGE_/ { N; s,.*\(RELATED_[^[:space:]]*\).*value:[[:space:]]*\([^[:space:]]*\),\1="\2",; p; }; \
@@ -143,8 +149,9 @@ deploy-dev: createnamespaces
##@ Build - Binary
.PHONY: build-postgres-operator
build-postgres-operator: ## Build the postgres-operator binary
- $(GO_BUILD) -ldflags '-X "main.versionString=$(PGO_VERSION)"' \
- -o bin/postgres-operator ./cmd/postgres-operator
+ CGO_ENABLED=1 $(GO_BUILD) $(\
+ ) --ldflags '-X "main.versionString=$(PGO_VERSION)"' $(\
+ ) --trimpath -o bin/postgres-operator ./cmd/postgres-operator
##@ Build - Images
.PHONY: build-postgres-operator-image
@@ -187,19 +194,19 @@ build-postgres-operator-image: build/postgres-operator/Dockerfile
##@ Test
.PHONY: check
check: ## Run basic go tests with coverage output
- $(GO_TEST) -cover ./...
+check: get-pgmonitor
+ QUERIES_CONFIG_DIR="$(CURDIR)/${QUERIES_CONFIG_DIR}" $(GO_TEST) -cover ./...
# Available versions: curl -s 'https://storage.googleapis.com/kubebuilder-tools/' | grep -o '[^<]*'
# - KUBEBUILDER_ATTACH_CONTROL_PLANE_OUTPUT=true
.PHONY: check-envtest
check-envtest: ## Run check using envtest and a mock kube api
-check-envtest: ENVTEST_USE = hack/tools/setup-envtest --bin-dir=$(CURDIR)/hack/tools/envtest use $(ENVTEST_K8S_VERSION)
+check-envtest: ENVTEST_USE = $(ENVTEST) --bin-dir=$(CURDIR)/hack/tools/envtest use $(ENVTEST_K8S_VERSION)
check-envtest: SHELL = bash
-check-envtest: get-pgmonitor
- GOBIN='$(CURDIR)/hack/tools' $(GO) install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
+check-envtest: get-pgmonitor tools/setup-envtest get-external-snapshotter
@$(ENVTEST_USE) --print=overview && echo
source <($(ENVTEST_USE) --print=env) && PGO_NAMESPACE="postgres-operator" QUERIES_CONFIG_DIR="$(CURDIR)/${QUERIES_CONFIG_DIR}" \
- $(GO_TEST) -count=1 -cover -tags=envtest ./...
+ $(GO_TEST) -count=1 -cover ./...
# The "PGO_TEST_TIMEOUT_SCALE" environment variable (default: 1) can be set to a
# positive number that extends test timeouts. The following runs tests with
@@ -207,11 +214,11 @@ check-envtest: get-pgmonitor
# make check-envtest-existing PGO_TEST_TIMEOUT_SCALE=1.2
.PHONY: check-envtest-existing
check-envtest-existing: ## Run check using envtest and an existing kube api
-check-envtest-existing: get-pgmonitor
+check-envtest-existing: get-pgmonitor get-external-snapshotter
check-envtest-existing: createnamespaces
kubectl apply --server-side -k ./config/dev
USE_EXISTING_CLUSTER=true PGO_NAMESPACE="postgres-operator" QUERIES_CONFIG_DIR="$(CURDIR)/${QUERIES_CONFIG_DIR}" \
- $(GO_TEST) -count=1 -cover -p=1 -tags=envtest ./...
+ $(GO_TEST) -count=1 -cover -p=1 ./...
kubectl delete -k ./config/dev
# Expects operator to be running
@@ -222,11 +229,11 @@ check-kuttl: ## example command: make check-kuttl KUTTL_TEST='
--config testing/kuttl/kuttl-test.yaml
.PHONY: generate-kuttl
-generate-kuttl: export KUTTL_PG_UPGRADE_FROM_VERSION ?= 14
-generate-kuttl: export KUTTL_PG_UPGRADE_TO_VERSION ?= 15
-generate-kuttl: export KUTTL_PG_VERSION ?= 15
-generate-kuttl: export KUTTL_POSTGIS_VERSION ?= 3.3
-generate-kuttl: export KUTTL_PSQL_IMAGE ?= registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-15.4-0
+generate-kuttl: export KUTTL_PG_UPGRADE_FROM_VERSION ?= 15
+generate-kuttl: export KUTTL_PG_UPGRADE_TO_VERSION ?= 16
+generate-kuttl: export KUTTL_PG_VERSION ?= 16
+generate-kuttl: export KUTTL_POSTGIS_VERSION ?= 3.4
+generate-kuttl: export KUTTL_PSQL_IMAGE ?= registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-16.3-1
generate-kuttl: export KUTTL_TEST_DELETE_NAMESPACE ?= kuttl-test-delete-namespace
generate-kuttl: ## Generate kuttl tests
[ ! -d testing/kuttl/e2e-generated ] || rm -r testing/kuttl/e2e-generated
@@ -238,7 +245,6 @@ generate-kuttl: ## Generate kuttl tests
14 ) export KUTTL_BITNAMI_IMAGE_TAG=14.5.0-debian-11-r37 ;; \
13 ) export KUTTL_BITNAMI_IMAGE_TAG=13.8.0-debian-11-r39 ;; \
12 ) export KUTTL_BITNAMI_IMAGE_TAG=12.12.0-debian-11-r40 ;; \
- 11 ) export KUTTL_BITNAMI_IMAGE_TAG=11.17.0-debian-11-r39 ;; \
esac; \
render() { envsubst '"'"' \
$$KUTTL_PG_UPGRADE_FROM_VERSION $$KUTTL_PG_UPGRADE_TO_VERSION \
@@ -253,7 +259,7 @@ generate-kuttl: ## Generate kuttl tests
##@ Generate
.PHONY: check-generate
-check-generate: ## Check crd, crd-docs, deepcopy functions, and rbac generation
+check-generate: ## Check crd, deepcopy functions, and rbac generation
check-generate: generate-crd
check-generate: generate-deepcopy
check-generate: generate-rbac
@@ -262,51 +268,53 @@ check-generate: generate-rbac
git diff --exit-code -- pkg/apis
.PHONY: generate
-generate: ## Generate crd, crd-docs, deepcopy functions, and rbac
+generate: ## Generate crd, deepcopy functions, and rbac
generate: generate-crd
-generate: generate-crd-docs
generate: generate-deepcopy
generate: generate-rbac
.PHONY: generate-crd
-generate-crd: ## Generate crd
- GOBIN='$(CURDIR)/hack/tools' ./hack/controller-generator.sh \
- crd:crdVersions='v1' \
- paths='./pkg/apis/...' \
- output:dir='build/crd/postgresclusters/generated' # build/crd/{plural}/generated/{group}_{plural}.yaml
- @
- GOBIN='$(CURDIR)/hack/tools' ./hack/controller-generator.sh \
- crd:crdVersions='v1' \
- paths='./pkg/apis/...' \
- output:dir='build/crd/pgupgrades/generated' # build/crd/{plural}/generated/{group}_{plural}.yaml
- @
- GOBIN='$(CURDIR)/hack/tools' ./hack/controller-generator.sh \
+generate-crd: ## Generate Custom Resource Definitions (CRDs)
+generate-crd: tools/controller-gen
+ $(CONTROLLER) \
crd:crdVersions='v1' \
paths='./pkg/apis/...' \
- output:dir='build/crd/pgadmins/generated' # build/crd/{plural}/generated/{group}_{plural}.yaml
- @
- kubectl kustomize ./build/crd/postgresclusters > ./config/crd/bases/postgres-operator.crunchydata.com_postgresclusters.yaml
- kubectl kustomize ./build/crd/pgupgrades > ./config/crd/bases/postgres-operator.crunchydata.com_pgupgrades.yaml
- kubectl kustomize ./build/crd/pgadmins > ./config/crd/bases/postgres-operator.crunchydata.com_pgadmins.yaml
-
-.PHONY: generate-crd-docs
-generate-crd-docs: ## Generate crd-docs
- GOBIN='$(CURDIR)/hack/tools' $(GO) install fybrik.io/crdoc@v0.5.2
- ./hack/tools/crdoc \
- --resources ./config/crd/bases \
- --template ./hack/api-template.tmpl \
- --output ./docs/content/references/crd.md
+ output:dir='config/crd/bases' # {directory}/{group}_{plural}.yaml
.PHONY: generate-deepcopy
-generate-deepcopy: ## Generate deepcopy functions
- GOBIN='$(CURDIR)/hack/tools' ./hack/controller-generator.sh \
+generate-deepcopy: ## Generate DeepCopy functions
+generate-deepcopy: tools/controller-gen
+ $(CONTROLLER) \
object:headerFile='hack/boilerplate.go.txt' \
paths='./pkg/apis/postgres-operator.crunchydata.com/...'
.PHONY: generate-rbac
-generate-rbac: ## Generate rbac
- GOBIN='$(CURDIR)/hack/tools' ./hack/generate-rbac.sh \
- './internal/...' 'config/rbac'
+generate-rbac: ## Generate RBAC
+generate-rbac: tools/controller-gen
+ $(CONTROLLER) \
+ rbac:roleName='postgres-operator' \
+ paths='./cmd/...' paths='./internal/...' \
+ output:dir='config/rbac' # {directory}/role.yaml
+
+##@ Tools
+
+.PHONY: tools
+tools: ## Download tools like controller-gen and kustomize if necessary.
+
+# go-get-tool will 'go install' any package $2 and install it to $1.
+define go-get-tool
+@[ -f '$(1)' ] || { echo Downloading '$(2)'; GOBIN='$(abspath $(dir $(1)))' $(GO) install '$(2)'; }
+endef
+
+CONTROLLER ?= hack/tools/controller-gen
+tools: tools/controller-gen
+tools/controller-gen:
+ $(call go-get-tool,$(CONTROLLER),sigs.k8s.io/controller-tools/cmd/controller-gen@v0.16.4)
+
+ENVTEST ?= hack/tools/setup-envtest
+tools: tools/setup-envtest
+tools/setup-envtest:
+ $(call go-get-tool,$(ENVTEST),sigs.k8s.io/controller-runtime/tools/setup-envtest@latest)
##@ Release
diff --git a/README.md b/README.md
index 3e33c32f75..357734566e 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
PGO: The Postgres Operator from Crunchy Data
-
+
[](https://goreportcard.com/report/github.com/CrunchyData/postgres-operator)
@@ -18,9 +18,13 @@ With conveniences like cloning Postgres clusters to using rolling updates to rol
PGO is developed with many years of production experience in automating Postgres management on Kubernetes, providing a seamless cloud native Postgres solution to keep your data always available.
+Have questions or looking for help? [Join our Discord group](https://discord.gg/a7vWKG8Ec9).
+
# Installation
-We recommend following our [Quickstart](https://access.crunchydata.com/documentation/postgres-operator/v5/quickstart/) for how to install and get up and running with PGO, the Postgres Operator from Crunchy Data. However, if you can't wait to try it out, here are some instructions to get Postgres up and running on Kubernetes:
+Crunchy Data makes PGO available as the orchestration behind Crunchy Postgres for Kubernetes. Crunchy Postgres for Kubernetes is the integrated product that includes PostgreSQL, PGO and a collection of PostgreSQL tools and extensions that includes the various [open source components listed in the documentation](https://access.crunchydata.com/documentation/postgres-operator/latest/references/components).
+
+We recommend following our [Quickstart](https://access.crunchydata.com/documentation/postgres-operator/v5/quickstart/) for how to install and get up and running. However, if you can't wait to try it out, here are some instructions to get Postgres up and running on Kubernetes:
1. [Fork the Postgres Operator examples repository](https://github.com/CrunchyData/postgres-operator-examples/fork) and clone it to your host machine. For example:
@@ -39,6 +43,8 @@ kubectl apply --server-side -k kustomize/install/default
For more information please read the [Quickstart](https://access.crunchydata.com/documentation/postgres-operator/v5/quickstart/) and [Tutorial](https://access.crunchydata.com/documentation/postgres-operator/v5/tutorials/).
+These installation instructions provide the steps necessary to install PGO along with Crunchy Data's Postgres distribution, Crunchy Postgres, as Crunchy Postgres for Kubernetes. In doing so the installation downloads a series of container images from Crunchy Data's Developer Portal. For more information on the use of container images downloaded from the Crunchy Data Developer Portal or other third party sources, please see 'License and Terms' below. The installation and use of PGO outside of the use of Crunchy Postgres for Kubernetes will require modifications of these installation instructions and creation of the necessary PostgreSQL and related containers.
+
# Cloud Native Postgres for Kubernetes
PGO, the Postgres Operator from Crunchy Data, comes with all of the features you need for a complete cloud native Postgres experience on Kubernetes!
@@ -179,22 +185,18 @@ In addition to the above, the geospatially enhanced PostgreSQL + PostGIS contain
For more information about which versions of the PostgreSQL Operator include which components, please visit the [compatibility](https://access.crunchydata.com/documentation/postgres-operator/v5/references/components/) section of the documentation.
-## Supported Platforms
+## [Supported Platforms](https://access.crunchydata.com/documentation/postgres-operator/latest/overview/supported-platforms)
PGO, the Postgres Operator from Crunchy Data, is tested on the following platforms:
-- Kubernetes 1.24-1.27
-- OpenShift 4.10-4.13
+- Kubernetes
+- OpenShift
- Rancher
- Google Kubernetes Engine (GKE), including Anthos
- Amazon EKS
- Microsoft AKS
- VMware Tanzu
-This list only includes the platforms that the Postgres Operator is specifically
-tested on as part of the release process: PGO works on other Kubernetes
-distributions as well.
-
# Contributing to the Project
Want to contribute to the PostgreSQL Operator project? Great! We've put together
@@ -208,7 +210,7 @@ Once you are ready to submit a Pull Request, please ensure you do the following:
that you have followed the commit message format, added testing where
appropriate, documented your changes, etc.
1. Open up a pull request based upon the guidelines. If you are adding a new
- feature, please open up the pull request on the `master` branch.
+ feature, please open up the pull request on the `main` branch.
1. Please be as descriptive in your pull request as possible. If you are
referencing an issue, please be sure to include the issue in your pull request
@@ -216,7 +218,7 @@ Once you are ready to submit a Pull Request, please ensure you do the following:
If you believe you have found a bug or have a detailed feature request, please open a GitHub issue and follow the guidelines for submitting a bug.
-For general questions or community support, we welcome you to join our [community Discord](https://discord.gg/a7vWKG8Ec9) or the PGO project [community mailing list](https://groups.google.com/a/crunchydata.com/forum/#!forum/postgres-operator/join) and ask your questions there.
+For general questions or community support, we welcome you to join our [community Discord](https://discord.gg/a7vWKG8Ec9) and ask your questions there.
For other information, please visit the [Support](https://access.crunchydata.com/documentation/postgres-operator/latest/support/) section of the documentation.
@@ -242,4 +244,10 @@ The image rollout can occur over the course of several days.
To stay up-to-date on when releases are made available in the [Crunchy Data Developer Portal](https://www.crunchydata.com/developers), please sign up for the [Crunchy Data Developer Program Newsletter](https://www.crunchydata.com/developers#email). You can also [join the PGO project community discord](https://discord.gg/a7vWKG8Ec9)
+# FAQs, License and Terms
+
+For more information regarding PGO, the Postgres Operator project from Crunchy Data, and Crunchy Postgres for Kubernetes, please see the [frequently asked questions](https://access.crunchydata.com/documentation/postgres-operator/latest/faq).
+
+The installation instructions provided in this repo are designed for the use of PGO along with Crunchy Data's Postgres distribution, Crunchy Postgres, as Crunchy Postgres for Kubernetes. The unmodified use of these installation instructions will result in downloading container images from Crunchy Data repositories - specifically the Crunchy Data Developer Portal. The use of container images downloaded from the Crunchy Data Developer Portal are subject to the [Crunchy Data Developer Program terms](https://www.crunchydata.com/developers/terms-of-use).
+
The PGO Postgres Operator project source code is available subject to the [Apache 2.0 license](LICENSE.md) with the PGO logo and branding assets covered by [our trademark guidelines](docs/static/logos/TRADEMARKS.md).
diff --git a/bin/license_aggregator.sh b/bin/license_aggregator.sh
index ee76031472..66f7284a97 100755
--- a/bin/license_aggregator.sh
+++ b/bin/license_aggregator.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-# Copyright 2021 - 2023 Crunchy Data Solutions, Inc.
+# Copyright 2021 - 2024 Crunchy Data Solutions, Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
diff --git a/build/crd/.gitignore b/build/crd/.gitignore
deleted file mode 100644
index 8a65c2f7ef..0000000000
--- a/build/crd/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/postgresclusters/generated/
-/pgupgrades/generated/
-/pgadmins/generated/
diff --git a/build/crd/pgadmins/kustomization.yaml b/build/crd/pgadmins/kustomization.yaml
deleted file mode 100644
index 78888103ef..0000000000
--- a/build/crd/pgadmins/kustomization.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-
-resources:
-- generated/postgres-operator.crunchydata.com_pgadmins.yaml
-
-patches:
-# Remove the zero status field included by controller-gen@v0.8.0. These zero
-# values conflict with the CRD controller in Kubernetes before v1.22.
-# - https://github.com/kubernetes-sigs/controller-tools/pull/630
-# - https://pr.k8s.io/100970
-- target:
- group: apiextensions.k8s.io
- version: v1
- kind: CustomResourceDefinition
- name: pgadmins.postgres-operator.crunchydata.com
- patch: |-
- - op: remove
- path: /status
-- target:
- group: apiextensions.k8s.io
- version: v1
- kind: CustomResourceDefinition
- name: pgadmins.postgres-operator.crunchydata.com
- path: todos.yaml
-- target:
- group: apiextensions.k8s.io
- version: v1
- kind: CustomResourceDefinition
- name: pgadmins.postgres-operator.crunchydata.com
-# The version below should match the version on the PostgresCluster CRD
- patch: |-
- - op: add
- path: "/metadata/labels"
- value:
- app.kubernetes.io/name: pgo
- app.kubernetes.io/version: latest
diff --git a/build/crd/pgadmins/todos.yaml b/build/crd/pgadmins/todos.yaml
deleted file mode 100644
index 285c688088..0000000000
--- a/build/crd/pgadmins/todos.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-- op: add
- path: /work
- value: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/imagePullSecrets/items/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/config/properties/files/items/properties/configMap/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/config/properties/files/items/properties/secret/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/config/properties/ldapBindPassword/properties/name/description
-- op: remove
- path: /work
diff --git a/build/crd/pgupgrades/kustomization.yaml b/build/crd/pgupgrades/kustomization.yaml
deleted file mode 100644
index 67bca8fca8..0000000000
--- a/build/crd/pgupgrades/kustomization.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-
-resources:
-- generated/postgres-operator.crunchydata.com_pgupgrades.yaml
-
-patches:
-# Remove the zero status field included by controller-gen@v0.8.0. These zero
-# values conflict with the CRD controller in Kubernetes before v1.22.
-# - https://github.com/kubernetes-sigs/controller-tools/pull/630
-# - https://pr.k8s.io/100970
-- target:
- group: apiextensions.k8s.io
- version: v1
- kind: CustomResourceDefinition
- name: pgupgrades.postgres-operator.crunchydata.com
- patch: |-
- - op: remove
- path: /status
-- target:
- group: apiextensions.k8s.io
- version: v1
- kind: CustomResourceDefinition
- name: pgupgrades.postgres-operator.crunchydata.com
- path: todos.yaml
-- target:
- group: apiextensions.k8s.io
- version: v1
- kind: CustomResourceDefinition
- name: pgupgrades.postgres-operator.crunchydata.com
-# The version below should match the version on the PostgresCluster CRD
- patch: |-
- - op: add
- path: "/metadata/labels"
- value:
- app.kubernetes.io/name: pgo
- app.kubernetes.io/version: latest
diff --git a/build/crd/pgupgrades/todos.yaml b/build/crd/pgupgrades/todos.yaml
deleted file mode 100644
index c0d2202859..0000000000
--- a/build/crd/pgupgrades/todos.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-- op: add
- path: /work
- value: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/imagePullSecrets/items/properties/name/description
-- op: remove
- path: /work
diff --git a/build/crd/postgresclusters/condition.yaml b/build/crd/postgresclusters/condition.yaml
deleted file mode 100644
index 577787b520..0000000000
--- a/build/crd/postgresclusters/condition.yaml
+++ /dev/null
@@ -1,24 +0,0 @@
-# PostgresCluster "v1beta1" is in "/spec/versions/0"
-
-- op: add
- path: /spec/versions/0/schema/openAPIV3Schema/properties/status/properties/conditions/items/description
- value: Condition contains details for one aspect of the current state of this API Resource.
-- op: add
- path: /spec/versions/0/schema/openAPIV3Schema/properties/status/properties/conditions/items/properties/type/description
- value: type of condition in CamelCase.
-- op: add
- path: "/spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/instances/items/properties/containers/items\
- /properties/securityContext/properties/seccompProfile/properties/type/description"
- value: >-
- type indicates which kind of seccomp profile will be applied. Valid options are:
- Localhost - a profile defined in a file on the node should be used.
- RuntimeDefault - the container runtime default profile should be used.
- Unconfined - no profile should be applied.
-- op: add
- path: "/spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/proxy/properties/pgBouncer/properties\
- /containers/items/properties/securityContext/properties/seccompProfile/properties/type/description"
- value: >-
- type indicates which kind of seccomp profile will be applied. Valid options are:
- Localhost - a profile defined in a file on the node should be used.
- RuntimeDefault - the container runtime default profile should be used.
- Unconfined - no profile should be applied.
diff --git a/build/crd/postgresclusters/kustomization.yaml b/build/crd/postgresclusters/kustomization.yaml
deleted file mode 100644
index 4e790295c4..0000000000
--- a/build/crd/postgresclusters/kustomization.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-
-resources:
-- generated/postgres-operator.crunchydata.com_postgresclusters.yaml
-
-patchesJson6902:
-- target:
- group: apiextensions.k8s.io
- version: v1
- kind: CustomResourceDefinition
- name: postgresclusters.postgres-operator.crunchydata.com
- path: condition.yaml
-- target:
- group: apiextensions.k8s.io
- version: v1
- kind: CustomResourceDefinition
- name: postgresclusters.postgres-operator.crunchydata.com
- path: status.yaml
-- target:
- group: apiextensions.k8s.io
- version: v1
- kind: CustomResourceDefinition
- name: postgresclusters.postgres-operator.crunchydata.com
- path: todos.yaml
-- target:
- group: apiextensions.k8s.io
- version: v1
- kind: CustomResourceDefinition
- name: postgresclusters.postgres-operator.crunchydata.com
- path: validation.yaml
-- target:
- group: apiextensions.k8s.io
- version: v1
- kind: CustomResourceDefinition
- name: postgresclusters.postgres-operator.crunchydata.com
- patch: |-
- - op: add
- path: "/metadata/labels"
- value:
- app.kubernetes.io/name: pgo
- app.kubernetes.io/version: latest
diff --git a/build/crd/postgresclusters/status.yaml b/build/crd/postgresclusters/status.yaml
deleted file mode 100644
index eacd47582f..0000000000
--- a/build/crd/postgresclusters/status.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-# Remove the zero status field included by controller-gen@v0.8.0. These zero
-# values conflict with the CRD controller in Kubernetes before v1.22.
-# - https://github.com/kubernetes-sigs/controller-tools/pull/630
-# - https://pr.k8s.io/100970
-- op: remove
- path: /status
diff --git a/build/crd/postgresclusters/todos.yaml b/build/crd/postgresclusters/todos.yaml
deleted file mode 100644
index daa05249a0..0000000000
--- a/build/crd/postgresclusters/todos.yaml
+++ /dev/null
@@ -1,89 +0,0 @@
-- op: add
- path: /work
- value: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/backups/properties/pgbackrest/properties/configuration/items/properties/configMap/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/backups/properties/pgbackrest/properties/configuration/items/properties/secret/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/backups/properties/pgbackrest/properties/repoHost/properties/sshConfigMap/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/backups/properties/pgbackrest/properties/repoHost/properties/sshSecret/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/config/properties/files/items/properties/configMap/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/config/properties/files/items/properties/secret/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/customReplicationTLSSecret/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/customTLSSecret/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/dataSource/properties/pgbackrest/properties/configuration/items/properties/configMap/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/dataSource/properties/pgbackrest/properties/configuration/items/properties/secret/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/imagePullSecrets/items/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/instances/items/properties/containers/items/properties/env/items/properties/valueFrom/properties/configMapKeyRef/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/instances/items/properties/containers/items/properties/env/items/properties/valueFrom/properties/secretKeyRef/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/instances/items/properties/containers/items/properties/envFrom/items/properties/configMapRef/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/instances/items/properties/containers/items/properties/envFrom/items/properties/secretRef/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/monitoring/properties/pgmonitor/properties/exporter/properties/configuration/items/properties/configMap/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/monitoring/properties/pgmonitor/properties/exporter/properties/configuration/items/properties/secret/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/monitoring/properties/pgmonitor/properties/exporter/properties/customTLSSecret/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/proxy/properties/pgBouncer/properties/config/properties/files/items/properties/configMap/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/proxy/properties/pgBouncer/properties/config/properties/files/items/properties/secret/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/proxy/properties/pgBouncer/properties/containers/items/properties/env/items/properties/valueFrom/properties/configMapKeyRef/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/proxy/properties/pgBouncer/properties/containers/items/properties/env/items/properties/valueFrom/properties/secretKeyRef/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/proxy/properties/pgBouncer/properties/containers/items/properties/envFrom/items/properties/configMapRef/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/proxy/properties/pgBouncer/properties/containers/items/properties/envFrom/items/properties/secretRef/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/proxy/properties/pgBouncer/properties/customTLSSecret/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/userInterface/properties/pgAdmin/properties/config/properties/files/items/properties/configMap/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/userInterface/properties/pgAdmin/properties/config/properties/files/items/properties/secret/properties/name/description
-- op: copy
- from: /work
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/userInterface/properties/pgAdmin/properties/config/properties/ldapBindPassword/properties/name/description
-- op: remove
- path: /work
diff --git a/build/crd/postgresclusters/validation.yaml b/build/crd/postgresclusters/validation.yaml
deleted file mode 100644
index c619c4f11d..0000000000
--- a/build/crd/postgresclusters/validation.yaml
+++ /dev/null
@@ -1,76 +0,0 @@
-# PostgresCluster "v1beta1" is in "/spec/versions/0"
-
-# Make a temporary workspace.
-- { op: add, path: /work, value: {} }
-
-# Containers should not run with a root GID.
-# - https://kubernetes.io/docs/concepts/security/pod-security-standards/
-- op: add
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/supplementalGroups/items/minimum
- value: 1
-
-# Supplementary GIDs must fit within int32.
-# - https://releases.k8s.io/v1.18.0/pkg/apis/core/validation/validation.go#L3659-L3663
-# - https://releases.k8s.io/v1.22.0/pkg/apis/core/validation/validation.go#L3923-L3927
-- op: add
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/supplementalGroups/items/maximum
- value: 2147483647 # math.MaxInt32
-
-# Make a copy of a standard PVC properties.
-- op: copy
- from: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/instances/items/properties/dataVolumeClaimSpec/properties
- path: /work/pvcSpecProperties
-
-# Start an empty list when a standard PVC has no required fields.
-- op: test
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/instances/items/properties/dataVolumeClaimSpec/required
- value: null
-- op: add
- path: /work/pvcSpecRequired
- value: []
-
-# PersistentVolumeClaims must have an access mode.
-# - https://releases.k8s.io/v1.18.0/pkg/apis/core/validation/validation.go#L1893-L1895
-# - https://releases.k8s.io/v1.22.0/pkg/apis/core/validation/validation.go#L2073-L2075
-- op: add
- path: /work/pvcSpecRequired/-
- value: accessModes
-- op: add
- path: /work/pvcSpecProperties/accessModes/minItems
- value: 1
-
-# PersistentVolumeClaims must have a storage request.
-# - https://releases.k8s.io/v1.18.0/pkg/apis/core/validation/validation.go#L1904-L1911
-# - https://releases.k8s.io/v1.22.0/pkg/apis/core/validation/validation.go#L2101-L2108
-- op: add
- path: /work/pvcSpecRequired/-
- value: resources
-- op: add
- path: /work/pvcSpecProperties/resources/required
- value: [requests]
-- op: add
- path: /work/pvcSpecProperties/resources/properties/requests/required
- value: [storage]
-
-# Replace PVCs throughout the CRD.
-- op: copy
- from: /work/pvcSpecProperties
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/instances/items/properties/dataVolumeClaimSpec/properties
-- op: copy
- from: /work/pvcSpecRequired
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/instances/items/properties/dataVolumeClaimSpec/required
-- op: copy
- from: /work/pvcSpecProperties
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/instances/items/properties/walVolumeClaimSpec/properties
-- op: copy
- from: /work/pvcSpecRequired
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/instances/items/properties/walVolumeClaimSpec/required
-- op: copy
- from: /work/pvcSpecProperties
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/backups/properties/pgbackrest/properties/repos/items/properties/volume/properties/volumeClaimSpec/properties
-- op: copy
- from: /work/pvcSpecRequired
- path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/backups/properties/pgbackrest/properties/repos/items/properties/volume/properties/volumeClaimSpec/required
-
-# Remove the temporary workspace.
-- { op: remove, path: /work }
diff --git a/build/postgres-operator/Dockerfile b/build/postgres-operator/Dockerfile
index a65ae04f22..69c5953761 100644
--- a/build/postgres-operator/Dockerfile
+++ b/build/postgres-operator/Dockerfile
@@ -1,4 +1,4 @@
-FROM registry.access.redhat.com/ubi8/ubi-micro
+FROM registry.access.redhat.com/ubi8/ubi-minimal
COPY licenses /licenses
@@ -6,8 +6,7 @@ COPY bin/postgres-operator /usr/local/bin
RUN mkdir -p /opt/crunchy/conf
-COPY hack/tools/pgmonitor/postgres_exporter/common /opt/crunchy/conf
-COPY hack/tools/pgmonitor/postgres_exporter/linux/queries_backrest.yml /opt/crunchy/conf
+COPY hack/tools/queries /opt/crunchy/conf
RUN chgrp -R 0 /opt/crunchy/conf && chmod -R g=u opt/crunchy/conf
diff --git a/cmd/postgres-operator/main.go b/cmd/postgres-operator/main.go
index 4a2ea7e56b..b2f8ae49b6 100644
--- a/cmd/postgres-operator/main.go
+++ b/cmd/postgres-operator/main.go
@@ -1,41 +1,38 @@
-package main
-
-/*
-Copyright 2017 - 2023 Crunchy Data Solutions, Inc.
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
+// Copyright 2017 - 2024 Crunchy Data Solutions, Inc.
+//
+// SPDX-License-Identifier: Apache-2.0
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
+package main
import (
+ "context"
+ "fmt"
"net/http"
"os"
+ "strconv"
"strings"
+ "time"
+ "unicode"
- "github.com/go-logr/logr"
"go.opentelemetry.io/otel"
+ "k8s.io/apimachinery/pkg/util/validation"
"k8s.io/client-go/discovery"
"k8s.io/client-go/rest"
- cruntime "sigs.k8s.io/controller-runtime"
- "sigs.k8s.io/controller-runtime/pkg/manager"
+ "sigs.k8s.io/controller-runtime/pkg/healthz"
"github.com/crunchydata/postgres-operator/internal/bridge"
+ "github.com/crunchydata/postgres-operator/internal/bridge/crunchybridgecluster"
"github.com/crunchydata/postgres-operator/internal/controller/pgupgrade"
"github.com/crunchydata/postgres-operator/internal/controller/postgrescluster"
"github.com/crunchydata/postgres-operator/internal/controller/runtime"
"github.com/crunchydata/postgres-operator/internal/controller/standalone_pgadmin"
+ "github.com/crunchydata/postgres-operator/internal/feature"
+ "github.com/crunchydata/postgres-operator/internal/initialize"
"github.com/crunchydata/postgres-operator/internal/logging"
"github.com/crunchydata/postgres-operator/internal/naming"
+ "github.com/crunchydata/postgres-operator/internal/registration"
"github.com/crunchydata/postgres-operator/internal/upgradecheck"
- "github.com/crunchydata/postgres-operator/internal/util"
+ "github.com/crunchydata/postgres-operator/pkg/apis/postgres-operator.crunchydata.com/v1beta1"
)
var versionString string
@@ -48,18 +45,83 @@ func assertNoError(err error) {
}
func initLogging() {
- // Configure a singleton that treats logr.Logger.V(1) as logrus.DebugLevel.
+ // Configure a singleton that treats logging.Logger.V(1) as logrus.DebugLevel.
var verbosity int
if strings.EqualFold(os.Getenv("CRUNCHY_DEBUG"), "true") {
verbosity = 1
}
logging.SetLogSink(logging.Logrus(os.Stdout, versionString, 1, verbosity))
+
+ global := logging.FromContext(context.Background())
+ runtime.SetLogger(global)
+}
+
+//+kubebuilder:rbac:groups="coordination.k8s.io",resources="leases",verbs={get,create,update,watch}
+
+func initManager() (runtime.Options, error) {
+ log := logging.FromContext(context.Background())
+
+ options := runtime.Options{}
+ options.Cache.SyncPeriod = initialize.Pointer(time.Hour)
+
+ options.HealthProbeBindAddress = ":8081"
+
+ // Enable leader elections when configured with a valid Lease.coordination.k8s.io name.
+ // - https://docs.k8s.io/concepts/architecture/leases
+ // - https://releases.k8s.io/v1.30.0/pkg/apis/coordination/validation/validation.go#L26
+ if lease := os.Getenv("PGO_CONTROLLER_LEASE_NAME"); len(lease) > 0 {
+ if errs := validation.IsDNS1123Subdomain(lease); len(errs) > 0 {
+ return options, fmt.Errorf("value for PGO_CONTROLLER_LEASE_NAME is invalid: %v", errs)
+ }
+
+ options.LeaderElection = true
+ options.LeaderElectionID = lease
+ options.LeaderElectionNamespace = os.Getenv("PGO_NAMESPACE")
+ }
+
+ // Check PGO_TARGET_NAMESPACE for backwards compatibility with
+ // "singlenamespace" installations
+ singlenamespace := strings.TrimSpace(os.Getenv("PGO_TARGET_NAMESPACE"))
+
+ // Check PGO_TARGET_NAMESPACES for non-cluster-wide, multi-namespace
+ // installations
+ multinamespace := strings.TrimSpace(os.Getenv("PGO_TARGET_NAMESPACES"))
+
+ // Initialize DefaultNamespaces if any target namespaces are set
+ if len(singlenamespace) > 0 || len(multinamespace) > 0 {
+ options.Cache.DefaultNamespaces = map[string]runtime.CacheConfig{}
+ }
+
+ if len(singlenamespace) > 0 {
+ options.Cache.DefaultNamespaces[singlenamespace] = runtime.CacheConfig{}
+ }
+
+ if len(multinamespace) > 0 {
+ for _, namespace := range strings.FieldsFunc(multinamespace, func(c rune) bool {
+ return c != '-' && !unicode.IsLetter(c) && !unicode.IsNumber(c)
+ }) {
+ options.Cache.DefaultNamespaces[namespace] = runtime.CacheConfig{}
+ }
+ }
+
+ options.Controller.GroupKindConcurrency = map[string]int{
+ "PostgresCluster." + v1beta1.GroupVersion.Group: 2,
+ }
+
+ if s := os.Getenv("PGO_WORKERS"); s != "" {
+ if i, err := strconv.Atoi(s); err == nil && i > 0 {
+ options.Controller.GroupKindConcurrency["PostgresCluster."+v1beta1.GroupVersion.Group] = i
+ } else {
+ log.Error(err, "PGO_WORKERS must be a positive number")
+ }
+ }
+
+ return options, nil
}
func main() {
- // Set any supplied feature gates; panic on any unrecognized feature gate
- err := util.AddAndSetFeatureGates(os.Getenv("PGO_FEATURE_GATES"))
- assertNoError(err)
+ // This context is canceled by SIGINT, SIGTERM, or by calling shutdown.
+ ctx, shutdown := context.WithCancel(runtime.SignalHandler())
otelFlush, err := initOpenTelemetry()
assertNoError(err)
@@ -67,15 +129,12 @@ func main() {
initLogging()
- // create a context that will be used to stop all controllers on a SIGTERM or SIGINT
- ctx := cruntime.SetupSignalHandler()
log := logging.FromContext(ctx)
log.V(1).Info("debug flag set to true")
- log.Info("feature gates enabled",
- "PGO_FEATURE_GATES", os.Getenv("PGO_FEATURE_GATES"))
-
- cruntime.SetLogger(log)
+ features := feature.NewGate()
+ assertNoError(features.Set(os.Getenv("PGO_FEATURE_GATES")))
+ log.Info("feature gates enabled", "PGO_FEATURE_GATES", features.String())
cfg, err := runtime.GetConfig()
assertNoError(err)
@@ -87,7 +146,18 @@ func main() {
// deprecation warnings when using an older version of a resource for backwards compatibility).
rest.SetDefaultWarningHandler(rest.NoWarnings{})
- mgr, err := runtime.CreateRuntimeManager(os.Getenv("PGO_TARGET_NAMESPACE"), cfg, false)
+ options, err := initManager()
+ assertNoError(err)
+
+ // Add to the Context that Manager passes to Reconciler.Start, Runnable.Start,
+ // and eventually Reconciler.Reconcile.
+ options.BaseContext = func() context.Context {
+ ctx := context.Background()
+ ctx = feature.NewContext(ctx, features)
+ return ctx
+ }
+
+ mgr, err := runtime.NewManager(cfg, options)
assertNoError(err)
openshift := isOpenshift(cfg)
@@ -95,10 +165,15 @@ func main() {
log.Info("detected OpenShift environment")
}
+ registrar, err := registration.NewRunner(os.Getenv("RSA_KEY"), os.Getenv("TOKEN_PATH"), shutdown)
+ assertNoError(err)
+ assertNoError(mgr.Add(registrar))
+ token, _ := registrar.CheckToken()
+
// add all PostgreSQL Operator controllers to the runtime manager
- addControllersToManager(mgr, openshift, log)
+ addControllersToManager(mgr, openshift, log, registrar)
- if util.DefaultMutableFeatureGate.Enabled(util.BridgeIdentifiers) {
+ if features.Enabled(feature.BridgeIdentifiers) {
constructor := func() *bridge.Client {
client := bridge.NewClient(os.Getenv("PGO_BRIDGE_URL"), versionString)
client.Transport = otelTransportWrapper()(http.DefaultTransport)
@@ -113,12 +188,22 @@ func main() {
if !upgradeCheckingDisabled {
log.Info("upgrade checking enabled")
// get the URL for the check for upgrades endpoint if set in the env
- assertNoError(upgradecheck.ManagedScheduler(mgr,
- openshift, os.Getenv("CHECK_FOR_UPGRADES_URL"), versionString))
+ assertNoError(
+ upgradecheck.ManagedScheduler(
+ mgr,
+ openshift,
+ os.Getenv("CHECK_FOR_UPGRADES_URL"),
+ versionString,
+ token,
+ ))
} else {
log.Info("upgrade checking disabled")
}
+ // Enable health probes
+ assertNoError(mgr.AddHealthzCheck("health", healthz.Ping))
+ assertNoError(mgr.AddReadyzCheck("check", healthz.Ping))
+
log.Info("starting controller runtime manager and will wait for signal to exit")
assertNoError(mgr.Start(ctx))
@@ -127,18 +212,14 @@ func main() {
// addControllersToManager adds all PostgreSQL Operator controllers to the provided controller
// runtime manager.
-func addControllersToManager(mgr manager.Manager, openshift bool, log logr.Logger) {
+func addControllersToManager(mgr runtime.Manager, openshift bool, log logging.Logger, reg registration.Registration) {
pgReconciler := &postgrescluster.Reconciler{
- Client: mgr.GetClient(),
- IsOpenShift: openshift,
- Owner: postgrescluster.ControllerName,
- PGOVersion: versionString,
- Recorder: mgr.GetEventRecorderFor(postgrescluster.ControllerName),
- // TODO(tlandreth) Replace the contents of cpk_rsa_key.pub with a key from a
- // Crunchy authorization server.
- Registration: util.GetRegistration(os.Getenv("RSA_KEY"), os.Getenv("TOKEN_PATH"), log),
- RegistrationURL: os.Getenv("REGISTRATION_URL"),
- Tracer: otel.Tracer(postgrescluster.ControllerName),
+ Client: mgr.GetClient(),
+ IsOpenShift: openshift,
+ Owner: postgrescluster.ControllerName,
+ Recorder: mgr.GetEventRecorderFor(postgrescluster.ControllerName),
+ Registration: reg,
+ Tracer: otel.Tracer(postgrescluster.ControllerName),
}
if err := pgReconciler.SetupWithManager(mgr); err != nil {
@@ -147,9 +228,10 @@ func addControllersToManager(mgr manager.Manager, openshift bool, log logr.Logge
}
upgradeReconciler := &pgupgrade.PGUpgradeReconciler{
- Client: mgr.GetClient(),
- Owner: "pgupgrade-controller",
- Scheme: mgr.GetScheme(),
+ Client: mgr.GetClient(),
+ Owner: "pgupgrade-controller",
+ Recorder: mgr.GetEventRecorderFor("pgupgrade-controller"),
+ Registration: reg,
}
if err := upgradeReconciler.SetupWithManager(mgr); err != nil {
@@ -158,16 +240,35 @@ func addControllersToManager(mgr manager.Manager, openshift bool, log logr.Logge
}
pgAdminReconciler := &standalone_pgadmin.PGAdminReconciler{
- Client: mgr.GetClient(),
- Owner: "pgadmin-controller",
- Recorder: mgr.GetEventRecorderFor(naming.ControllerPGAdmin),
- Scheme: mgr.GetScheme(),
+ Client: mgr.GetClient(),
+ Owner: "pgadmin-controller",
+ Recorder: mgr.GetEventRecorderFor(naming.ControllerPGAdmin),
+ IsOpenShift: openshift,
}
if err := pgAdminReconciler.SetupWithManager(mgr); err != nil {
log.Error(err, "unable to create PGAdmin controller")
os.Exit(1)
}
+
+ constructor := func() bridge.ClientInterface {
+ client := bridge.NewClient(os.Getenv("PGO_BRIDGE_URL"), versionString)
+ client.Transport = otelTransportWrapper()(http.DefaultTransport)
+ return client
+ }
+
+ crunchyBridgeClusterReconciler := &crunchybridgecluster.CrunchyBridgeClusterReconciler{
+ Client: mgr.GetClient(),
+ Owner: "crunchybridgecluster-controller",
+ // TODO(crunchybridgecluster): recorder?
+ // Recorder: mgr.GetEventRecorderFor(naming...),
+ NewClient: constructor,
+ }
+
+ if err := crunchyBridgeClusterReconciler.SetupWithManager(mgr); err != nil {
+ log.Error(err, "unable to create CrunchyBridgeCluster controller")
+ os.Exit(1)
+ }
}
func isOpenshift(cfg *rest.Config) bool {
diff --git a/cmd/postgres-operator/main_test.go b/cmd/postgres-operator/main_test.go
new file mode 100644
index 0000000000..f369ce6bd3
--- /dev/null
+++ b/cmd/postgres-operator/main_test.go
@@ -0,0 +1,118 @@
+// Copyright 2017 - 2024 Crunchy Data Solutions, Inc.
+//
+// SPDX-License-Identifier: Apache-2.0
+
+package main
+
+import (
+ "reflect"
+ "testing"
+ "time"
+
+ "gotest.tools/v3/assert"
+ "gotest.tools/v3/assert/cmp"
+)
+
+func TestInitManager(t *testing.T) {
+ t.Run("Defaults", func(t *testing.T) {
+ options, err := initManager()
+ assert.NilError(t, err)
+
+ if assert.Check(t, options.Cache.SyncPeriod != nil) {
+ assert.Equal(t, *options.Cache.SyncPeriod, time.Hour)
+ }
+
+ assert.Assert(t, options.HealthProbeBindAddress == ":8081")
+
+ assert.DeepEqual(t, options.Controller.GroupKindConcurrency,
+ map[string]int{
+ "PostgresCluster.postgres-operator.crunchydata.com": 2,
+ })
+
+ assert.Assert(t, options.Cache.DefaultNamespaces == nil)
+ assert.Assert(t, options.LeaderElection == false)
+
+ {
+ options.Cache.SyncPeriod = nil
+ options.Controller.GroupKindConcurrency = nil
+ options.HealthProbeBindAddress = ""
+
+ assert.Assert(t, reflect.ValueOf(options).IsZero(),
+ "expected remaining fields to be unset:\n%+v", options)
+ }
+ })
+
+ t.Run("PGO_CONTROLLER_LEASE_NAME", func(t *testing.T) {
+ t.Setenv("PGO_NAMESPACE", "test-namespace")
+
+ t.Run("Invalid", func(t *testing.T) {
+ t.Setenv("PGO_CONTROLLER_LEASE_NAME", "INVALID_NAME")
+
+ options, err := initManager()
+ assert.ErrorContains(t, err, "PGO_CONTROLLER_LEASE_NAME")
+ assert.ErrorContains(t, err, "invalid")
+
+ assert.Assert(t, options.LeaderElection == false)
+ assert.Equal(t, options.LeaderElectionNamespace, "")
+ })
+
+ t.Run("Valid", func(t *testing.T) {
+ t.Setenv("PGO_CONTROLLER_LEASE_NAME", "valid-name")
+
+ options, err := initManager()
+ assert.NilError(t, err)
+ assert.Assert(t, options.LeaderElection == true)
+ assert.Equal(t, options.LeaderElectionNamespace, "test-namespace")
+ assert.Equal(t, options.LeaderElectionID, "valid-name")
+ })
+ })
+
+ t.Run("PGO_TARGET_NAMESPACE", func(t *testing.T) {
+ t.Setenv("PGO_TARGET_NAMESPACE", "some-such")
+
+ options, err := initManager()
+ assert.NilError(t, err)
+ assert.Assert(t, cmp.Len(options.Cache.DefaultNamespaces, 1),
+ "expected only one configured namespace")
+
+ assert.Assert(t, cmp.Contains(options.Cache.DefaultNamespaces, "some-such"))
+ })
+
+ t.Run("PGO_TARGET_NAMESPACES", func(t *testing.T) {
+ t.Setenv("PGO_TARGET_NAMESPACES", "some-such,another-one")
+
+ options, err := initManager()
+ assert.NilError(t, err)
+ assert.Assert(t, cmp.Len(options.Cache.DefaultNamespaces, 2),
+ "expect two configured namespaces")
+
+ assert.Assert(t, cmp.Contains(options.Cache.DefaultNamespaces, "some-such"))
+ assert.Assert(t, cmp.Contains(options.Cache.DefaultNamespaces, "another-one"))
+ })
+
+ t.Run("PGO_WORKERS", func(t *testing.T) {
+ t.Run("Invalid", func(t *testing.T) {
+ for _, v := range []string{"-3", "0", "3.14"} {
+ t.Setenv("PGO_WORKERS", v)
+
+ options, err := initManager()
+ assert.NilError(t, err)
+ assert.DeepEqual(t, options.Controller.GroupKindConcurrency,
+ map[string]int{
+ "PostgresCluster.postgres-operator.crunchydata.com": 2,
+ })
+ }
+ })
+
+ t.Run("Valid", func(t *testing.T) {
+ t.Setenv("PGO_WORKERS", "19")
+
+ options, err := initManager()
+ assert.NilError(t, err)
+ assert.DeepEqual(t, options.Controller.GroupKindConcurrency,
+ map[string]int{
+ "PostgresCluster.postgres-operator.crunchydata.com": 19,
+ })
+ })
+ })
+}
diff --git a/cmd/postgres-operator/open_telemetry.go b/cmd/postgres-operator/open_telemetry.go
index 5d53d039a7..2c9eedc135 100644
--- a/cmd/postgres-operator/open_telemetry.go
+++ b/cmd/postgres-operator/open_telemetry.go
@@ -1,19 +1,8 @@
-package main
-
-/*
-Copyright 2021 - 2023 Crunchy Data Solutions, Inc.
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
+// Copyright 2021 - 2024 Crunchy Data Solutions, Inc.
+//
+// SPDX-License-Identifier: Apache-2.0
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
+package main
import (
"context"
diff --git a/config/README.md b/config/README.md
index 87708d16ff..73d2e59e6f 100644
--- a/config/README.md
+++ b/config/README.md
@@ -1,16 +1,7 @@
@@ -19,9 +10,6 @@
- The `default` target installs the operator in the `postgres-operator`
namespace and configures it to manage resources in all namespaces.
-- The `singlenamespace` target installs the operator in the `postgres-operator`
- namespace and configures it to manage resources in that same namespace.
-
diff --git a/config/crd/bases/postgres-operator.crunchydata.com_crunchybridgeclusters.yaml b/config/crd/bases/postgres-operator.crunchydata.com_crunchybridgeclusters.yaml
new file mode 100644
index 0000000000..82db84b466
--- /dev/null
+++ b/config/crd/bases/postgres-operator.crunchydata.com_crunchybridgeclusters.yaml
@@ -0,0 +1,290 @@
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.16.4
+ name: crunchybridgeclusters.postgres-operator.crunchydata.com
+spec:
+ group: postgres-operator.crunchydata.com
+ names:
+ kind: CrunchyBridgeCluster
+ listKind: CrunchyBridgeClusterList
+ plural: crunchybridgeclusters
+ singular: crunchybridgecluster
+ scope: Namespaced
+ versions:
+ - name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: CrunchyBridgeCluster is the Schema for the crunchybridgeclusters
+ API
+ properties:
+ apiVersion:
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+ type: string
+ kind:
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: |-
+ CrunchyBridgeClusterSpec defines the desired state of CrunchyBridgeCluster
+ to be managed by Crunchy Data Bridge
+ properties:
+ clusterName:
+ description: The name of the cluster
+ maxLength: 50
+ minLength: 5
+ pattern: ^[A-Za-z][A-Za-z0-9\-_ ]*[A-Za-z0-9]$
+ type: string
+ isHa:
+ description: |-
+ Whether the cluster is high availability,
+ meaning that it has a secondary it can fail over to quickly
+ in case the primary becomes unavailable.
+ type: boolean
+ isProtected:
+ description: |-
+ Whether the cluster is protected. Protected clusters can't be destroyed until
+ their protected flag is removed
+ type: boolean
+ majorVersion:
+ description: |-
+ The ID of the cluster's major Postgres version.
+ Currently Bridge offers 13-17
+ maximum: 17
+ minimum: 13
+ type: integer
+ metadata:
+ description: Metadata contains metadata for custom resources
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ plan:
+ description: The ID of the cluster's plan. Determines instance, CPU,
+ and memory.
+ type: string
+ provider:
+ description: |-
+ The cloud provider where the cluster is located.
+ Currently Bridge offers aws, azure, and gcp only
+ enum:
+ - aws
+ - azure
+ - gcp
+ type: string
+ x-kubernetes-validations:
+ - message: immutable
+ rule: self == oldSelf
+ region:
+ description: The provider region where the cluster is located.
+ type: string
+ x-kubernetes-validations:
+ - message: immutable
+ rule: self == oldSelf
+ roles:
+ description: |-
+ Roles for which to create Secrets that contain their credentials which
+ are retrieved from the Bridge API. An empty list creates no role secrets.
+ Removing a role from this list does NOT drop the role nor revoke their
+ access, but it will delete that role's secret from the kube cluster.
+ items:
+ properties:
+ name:
+ description: |-
+ Name of the role within Crunchy Bridge.
+ More info: https://docs.crunchybridge.com/concepts/users
+ type: string
+ secretName:
+ description: The name of the Secret that will hold the role
+ credentials.
+ maxLength: 253
+ pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
+ type: string
+ required:
+ - name
+ - secretName
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ secret:
+ description: The name of the secret containing the API key and team
+ id
+ type: string
+ storage:
+ anyOf:
+ - type: integer
+ - type: string
+ description: |-
+ The amount of storage available to the cluster in gigabytes.
+ The amount must be an integer, followed by Gi (gibibytes) or G (gigabytes) to match Kubernetes conventions.
+ If the amount is given in Gi, we round to the nearest G value.
+ The minimum value allowed by Bridge is 10 GB.
+ The maximum value allowed by Bridge is 65535 GB.
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ required:
+ - clusterName
+ - isHa
+ - majorVersion
+ - plan
+ - provider
+ - region
+ - secret
+ - storage
+ type: object
+ status:
+ description: CrunchyBridgeClusterStatus defines the observed state of
+ CrunchyBridgeCluster
+ properties:
+ conditions:
+ description: conditions represent the observations of postgres cluster's
+ current state.
+ items:
+ description: Condition contains details for one aspect of the current
+ state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ host:
+ description: The Hostname of the postgres cluster in Bridge, provided
+ by Bridge API and null until then.
+ type: string
+ id:
+ description: The ID of the postgres cluster in Bridge, provided by
+ Bridge API and null until then.
+ type: string
+ isHa:
+ description: |-
+ Whether the cluster is high availability, meaning that it has a secondary it can fail
+ over to quickly in case the primary becomes unavailable.
+ type: boolean
+ isProtected:
+ description: |-
+ Whether the cluster is protected. Protected clusters can't be destroyed until
+ their protected flag is removed
+ type: boolean
+ majorVersion:
+ description: The cluster's major Postgres version.
+ type: integer
+ name:
+ description: The name of the cluster in Bridge.
+ type: string
+ observedGeneration:
+ description: observedGeneration represents the .metadata.generation
+ on which the status was based.
+ format: int64
+ minimum: 0
+ type: integer
+ ongoingUpgrade:
+ description: The cluster upgrade as represented by Bridge
+ items:
+ properties:
+ flavor:
+ type: string
+ starting_from:
+ type: string
+ state:
+ type: string
+ required:
+ - flavor
+ - starting_from
+ - state
+ type: object
+ type: array
+ plan:
+ description: The ID of the cluster's plan. Determines instance, CPU,
+ and memory.
+ type: string
+ responses:
+ description: Most recent, raw responses from Bridge API
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ state:
+ description: State of cluster in Bridge.
+ type: string
+ storage:
+ anyOf:
+ - type: integer
+ - type: string
+ description: The amount of storage available to the cluster.
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/config/crd/bases/postgres-operator.crunchydata.com_pgadmins.yaml b/config/crd/bases/postgres-operator.crunchydata.com_pgadmins.yaml
index f0dae5f9c3..da729cfaf2 100644
--- a/config/crd/bases/postgres-operator.crunchydata.com_pgadmins.yaml
+++ b/config/crd/bases/postgres-operator.crunchydata.com_pgadmins.yaml
@@ -1,12 +1,9 @@
+---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
- controller-gen.kubebuilder.io/version: v0.8.0
- creationTimestamp: null
- labels:
- app.kubernetes.io/name: pgo
- app.kubernetes.io/version: latest
+ controller-gen.kubebuilder.io/version: v0.16.4
name: pgadmins.postgres-operator.crunchydata.com
spec:
group: postgres-operator.crunchydata.com
@@ -20,17 +17,22 @@ spec:
- name: v1beta1
schema:
openAPIV3Schema:
- description: PGAdmin is the Schema for the pgadmins API
+ description: PGAdmin is the Schema for the PGAdmin API
properties:
apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
@@ -38,30 +40,29 @@ spec:
description: PGAdminSpec defines the desired state of PGAdmin
properties:
affinity:
- description: 'Scheduling constraints of the PGAdmin pod. More info:
- https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node'
+ description: |-
+ Scheduling constraints of the PGAdmin pod.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
properties:
nodeAffinity:
description: Describes node affinity scheduling rules for the
pod.
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule pods to
- nodes that satisfy the affinity expressions specified by
- this field, but it may choose a node that violates one or
- more of the expressions. The node that is most preferred
- is the one with the greatest sum of weights, i.e. for each
- node that meets all of the scheduling requirements (resource
- request, requiredDuringScheduling affinity expressions,
- etc.), compute a sum by iterating through the elements of
- this field and adding "weight" to the sum if the node matches
- the corresponding matchExpressions; the node(s) with the
- highest sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node matches the corresponding matchExpressions; the
+ node(s) with the highest sum are the most preferred.
items:
- description: An empty preferred scheduling term matches
- all objects with implicit weight 0 (i.e. it's a no-op).
- A null preferred scheduling term matches no objects (i.e.
- is also a no-op).
+ description: |-
+ An empty preferred scheduling term matches all objects with implicit weight 0
+ (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
properties:
preference:
description: A node selector term, associated with the
@@ -71,75 +72,72 @@ spec:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the selector
applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values. If
- the operator is In or NotIn, the values
- array must be non-empty. If the operator
- is Exists or DoesNotExist, the values array
- must be empty. If the operator is Gt or
- Lt, the values array must have a single
- element, which will be interpreted as an
- integer. This array is replaced during a
- strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the selector
applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values. If
- the operator is In or NotIn, the values
- array must be non-empty. If the operator
- is Exists or DoesNotExist, the values array
- must be empty. If the operator is Gt or
- Lt, the values array must have a single
- element, which will be interpreted as an
- integer. This array is replaced during a
- strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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:
description: Weight associated with matching the corresponding
nodeSelectorTerm, in the range 1-100.
@@ -150,116 +148,115 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified by this
- field are not met at scheduling time, the pod will not be
- scheduled onto the node. If the affinity requirements specified
- by this field cease to be met at some point during pod execution
- (e.g. due to an update), the system may or may not try to
- eventually evict the pod from its node.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to an update), the system
+ may or may not try to eventually evict the pod from its node.
properties:
nodeSelectorTerms:
description: Required. A list of node selector terms.
The terms are ORed.
items:
- description: A null or empty node selector term matches
- no objects. The requirements of them are ANDed. The
- TopologySelectorTerm type implements a subset of the
- NodeSelectorTerm.
+ description: |-
+ A null or empty node selector term matches no objects. The requirements of
+ them are ANDed.
+ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
properties:
matchExpressions:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the selector
applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values. If
- the operator is In or NotIn, the values
- array must be non-empty. If the operator
- is Exists or DoesNotExist, the values array
- must be empty. If the operator is Gt or
- Lt, the values array must have a single
- element, which will be interpreted as an
- integer. This array is replaced during a
- strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the selector
applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values. If
- the operator is In or NotIn, the values
- array must be non-empty. If the operator
- is Exists or DoesNotExist, the values array
- must be empty. If the operator is Gt or
- Lt, the values array must have a single
- element, which will be interpreted as an
- integer. This array is replaced during a
- strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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
+ x-kubernetes-map-type: atomic
type: object
podAffinity:
description: Describes pod affinity scheduling rules (e.g. co-locate
this pod in the same node, zone, etc. as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule pods to
- nodes that satisfy the affinity expressions specified by
- this field, but it may choose a node that violates one or
- more of the expressions. The node that is most preferred
- is the one with the greatest sum of weights, i.e. for each
- node that meets all of the scheduling requirements (resource
- request, requiredDuringScheduling affinity expressions,
- etc.), compute a sum by iterating through the elements of
- this field and adding "weight" to the sum if the node has
- pods which matches the corresponding podAffinityTerm; the
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
@@ -270,137 +267,161 @@ spec:
with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a key,
- and an operator that relates the key and
- values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only "value".
- The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by this
- field and the ones listed in the namespaces field.
- null selector and null or empty namespaces list
- means "this pod's namespace". An empty selector
- ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a key,
- and an operator that relates the key and
- values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only "value".
- The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to. The
- term is applied to the union of the namespaces
- listed in this field and the ones selected by
- namespaceSelector. null or empty namespaces list
- and null namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the pods
- matching the labelSelector in the specified namespaces,
- where co-located is defined as running on a node
- whose value of the label with key topologyKey
- matches that of any node on which any of the selected
- pods is running. Empty topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching the corresponding
- podAffinityTerm, in the range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -408,146 +429,177 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified by this
- field are not met at scheduling time, the pod will not be
- scheduled onto the node. If the affinity requirements specified
- by this field cease to be met at some point during pod execution
- (e.g. due to a pod label update), the system may or may
- not try to eventually evict the pod from its node. When
- there are multiple elements, the lists of nodes corresponding
- to each podAffinityTerm are intersected, i.e. all terms
- must be satisfied.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those matching
- the labelSelector relative to the given namespace(s))
- that this pod should be co-located (affinity) or not co-located
- (anti-affinity) with, where co-located is defined as running
- on a node whose value of the label with key
- matches that of any node on which a pod of the set of
- pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty. If the
- operator is Exists or DoesNotExist, the
- values array must be empty. This array is
- replaced during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is "In",
- and the values array contains only "value". The
- requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied to the
- union of the namespaces selected by this field and
- the ones listed in the namespaces field. null selector
- and null or empty namespaces list means "this pod's
- namespace". An empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty. If the
- operator is Exists or DoesNotExist, the
- values array must be empty. This array is
- replaced during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is "In",
- and the values array contains only "value". The
- requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list of namespace
- names that the term applies to. The term is applied
- to the union of the namespaces listed in this field
- and the ones selected by namespaceSelector. null or
- empty namespaces list and null namespaceSelector means
- "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the pods matching
- the labelSelector in the specified namespaces, where
- co-located is defined as running on a node whose value
- of the label with key topologyKey matches that of
- any node on which any of the selected pods is running.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
podAntiAffinity:
description: Describes pod anti-affinity scheduling rules (e.g.
@@ -555,16 +607,15 @@ spec:
other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule pods to
- nodes that satisfy the anti-affinity expressions specified
- by this field, but it may choose a node that violates one
- or more of the expressions. The node that is most preferred
- is the one with the greatest sum of weights, i.e. for each
- node that meets all of the scheduling requirements (resource
- request, requiredDuringScheduling anti-affinity expressions,
- etc.), compute a sum by iterating through the elements of
- this field and adding "weight" to the sum if the node has
- pods which matches the corresponding podAffinityTerm; the
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the anti-affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling anti-affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
@@ -575,137 +626,161 @@ spec:
with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a key,
- and an operator that relates the key and
- values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only "value".
- The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by this
- field and the ones listed in the namespaces field.
- null selector and null or empty namespaces list
- means "this pod's namespace". An empty selector
- ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a key,
- and an operator that relates the key and
- values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only "value".
- The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to. The
- term is applied to the union of the namespaces
- listed in this field and the ones selected by
- namespaceSelector. null or empty namespaces list
- and null namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the pods
- matching the labelSelector in the specified namespaces,
- where co-located is defined as running on a node
- whose value of the label with key topologyKey
- matches that of any node on which any of the selected
- pods is running. Empty topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching the corresponding
- podAffinityTerm, in the range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -713,176 +788,324 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the anti-affinity requirements specified by
- this field are not met at scheduling time, the pod will
- not be scheduled onto the node. If the anti-affinity requirements
- specified by this field cease to be met at some point during
- pod execution (e.g. due to a pod label update), the system
- may or may not try to eventually evict the pod from its
- node. When there are multiple elements, the lists of nodes
- corresponding to each podAffinityTerm are intersected, i.e.
- all terms must be satisfied.
+ description: |-
+ If the anti-affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the anti-affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those matching
- the labelSelector relative to the given namespace(s))
- that this pod should be co-located (affinity) or not co-located
- (anti-affinity) with, where co-located is defined as running
- on a node whose value of the label with key
- matches that of any node on which a pod of the set of
- pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty. If the
- operator is Exists or DoesNotExist, the
- values array must be empty. This array is
- replaced during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is "In",
- and the values array contains only "value". The
- requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied to the
- union of the namespaces selected by this field and
- the ones listed in the namespaces field. null selector
- and null or empty namespaces list means "this pod's
- namespace". An empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty. If the
- operator is Exists or DoesNotExist, the
- values array must be empty. This array is
- replaced during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is "In",
- and the values array contains only "value". The
- requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list of namespace
- names that the term applies to. The term is applied
- to the union of the namespaces listed in this field
- and the ones selected by namespaceSelector. null or
- empty namespaces list and null namespaceSelector means
- "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the pods matching
- the labelSelector in the specified namespaces, where
- co-located is defined as running on a node whose value
- of the label with key topologyKey matches that of
- any node on which any of the selected pods is running.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
type: object
config:
- description: Configuration settings for the pgAdmin process. Changes
- to any of these values will be loaded without validation. Be careful,
- as you may put pgAdmin into an unusable state.
+ description: |-
+ Configuration settings for the pgAdmin process. Changes to any of these
+ values will be loaded without validation. Be careful, as
+ you may put pgAdmin into an unusable state.
properties:
+ configDatabaseURI:
+ description: |-
+ A Secret containing the value for the CONFIG_DATABASE_URI setting.
+ More info: https://www.pgadmin.org/docs/pgadmin4/latest/external_database.html
+ properties:
+ key:
+ description: The key of the secret to select from. Must be
+ a valid secret key.
+ type: string
+ name:
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ optional:
+ description: Specify whether the Secret or its key must be
+ defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
files:
- description: Files allows the user to mount projected volumes
- into the pgAdmin container so that files can be referenced by
- pgAdmin as needed.
+ description: |-
+ Files allows the user to mount projected volumes into the pgAdmin
+ container so that files can be referenced by pgAdmin as needed.
items:
description: Projection that may be projected along with other
supported volume types
properties:
+ clusterTrustBundle:
+ description: |-
+ ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
+ of ClusterTrustBundle objects in an auto-updating file.
+
+ Alpha, gated by the ClusterTrustBundleProjection feature gate.
+
+ ClusterTrustBundle objects can either be selected by name, or by the
+ combination of signer name and a label selector.
+
+ Kubelet performs aggressive normalization of the PEM contents written
+ into the pod filesystem. Esoteric PEM features such as inter-block
+ comments and block headers are stripped. Certificates are deduplicated.
+ The ordering of certificates within the file is arbitrary, and Kubelet
+ may change the order over time.
+ properties:
+ labelSelector:
+ description: |-
+ Select all ClusterTrustBundles that match this label selector. Only has
+ effect if signerName is set. Mutually-exclusive with name. If unset,
+ interpreted as "match nothing". If set but empty, interpreted as "match
+ everything".
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ 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
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ name:
+ description: |-
+ Select a single ClusterTrustBundle by object name. Mutually-exclusive
+ with signerName and labelSelector.
+ type: string
+ optional:
+ description: |-
+ If true, don't block pod startup if the referenced ClusterTrustBundle(s)
+ aren't available. If using name, then the named ClusterTrustBundle is
+ allowed not to exist. If using signerName, then the combination of
+ signerName and labelSelector is allowed to match zero
+ ClusterTrustBundles.
+ type: boolean
+ path:
+ description: Relative path from the volume root to write
+ the bundle.
+ type: string
+ signerName:
+ description: |-
+ Select all ClusterTrustBundles that match this signer name.
+ Mutually-exclusive with name. The contents of all selected
+ ClusterTrustBundles will be unified and deduplicated.
+ type: string
+ required:
+ - path
+ type: object
configMap:
description: configMap information about the configMap data
to project
properties:
items:
- description: items if unspecified, each key-value pair
- in the Data field of the referenced ConfigMap will
- be projected into the volume as a file whose name
- is the key and content is the value. If specified,
- the listed keys will be projected into the specified
- paths, and unlisted keys will not be present. If a
- key is specified which is not present in the ConfigMap,
- the volume setup will error unless it is marked optional.
- Paths must be relative and may not contain the '..'
- path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ ConfigMap will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the ConfigMap,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within a
volume.
@@ -891,22 +1114,20 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits used
- to set permissions on this file. Must be an
- octal value between 0000 and 0777 or a decimal
- value between 0 and 511. YAML accepts both octal
- and decimal values, JSON requires decimal values
- for mode bits. If not specified, the volume
- defaultMode will be used. This might be in conflict
- with other options that affect the file mode,
- like fsGroup, and the result can be other mode
- bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of the
- file to map the key to. May not be an absolute
- path. May not contain the path element '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
May not start with the string '..'.
type: string
required:
@@ -914,14 +1135,22 @@ spec:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional specify whether the ConfigMap
or its keys must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
downwardAPI:
description: downwardAPI information about the downwardAPI
data to project
@@ -934,8 +1163,8 @@ spec:
properties:
fieldRef:
description: 'Required: Selects a field of the
- pod: only annotations, labels, name and namespace
- are supported.'
+ pod: only annotations, labels, name, namespace
+ and uid are supported.'
properties:
apiVersion:
description: Version of the schema the FieldPath
@@ -948,17 +1177,15 @@ spec:
required:
- fieldPath
type: object
+ x-kubernetes-map-type: atomic
mode:
- description: 'Optional: mode bits used to set
- permissions on this file, must be an octal value
- between 0000 and 0777 or a decimal value between
- 0 and 511. YAML accepts both octal and decimal
- values, JSON requires decimal values for mode
- bits. If not specified, the volume defaultMode
- will be used. This might be in conflict with
- other options that affect the file mode, like
- fsGroup, and the result can be other mode bits
- set.'
+ description: |-
+ Optional: mode bits used to set permissions on this file, must be an octal value
+ between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
@@ -969,10 +1196,9 @@ spec:
path must not start with ''..'''
type: string
resourceFieldRef:
- description: 'Selects a resource of the container:
- only resources limits and requests (limits.cpu,
- limits.memory, requests.cpu and requests.memory)
- are currently supported.'
+ description: |-
+ Selects a resource of the container: only resources limits and requests
+ (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
properties:
containerName:
description: 'Container name: required for
@@ -992,26 +1218,26 @@ spec:
required:
- resource
type: object
+ x-kubernetes-map-type: atomic
required:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
secret:
description: secret information about the secret data to
project
properties:
items:
- description: items if unspecified, each key-value pair
- in the Data field of the referenced Secret will be
- projected into the volume as a file whose name is
- the key and content is the value. If specified, the
- listed keys will be projected into the specified paths,
- and unlisted keys will not be present. If a key is
- specified which is not present in the Secret, the
- volume setup will error unless it is marked optional.
- Paths must be relative and may not contain the '..'
- path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ Secret will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the Secret,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within a
volume.
@@ -1020,22 +1246,20 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits used
- to set permissions on this file. Must be an
- octal value between 0000 and 0777 or a decimal
- value between 0 and 511. YAML accepts both octal
- and decimal values, JSON requires decimal values
- for mode bits. If not specified, the volume
- defaultMode will be used. This might be in conflict
- with other options that affect the file mode,
- like fsGroup, and the result can be other mode
- bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of the
- file to map the key to. May not be an absolute
- path. May not contain the path element '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
May not start with the string '..'.
type: string
required:
@@ -1043,55 +1267,76 @@ spec:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional field specify whether the Secret
or its key must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
serviceAccountToken:
description: serviceAccountToken is information about the
serviceAccountToken data to project
properties:
audience:
- description: audience is the intended audience of the
- token. A recipient of a token must identify itself
- with an identifier specified in the audience of the
- token, and otherwise should reject the token. The
- audience defaults to the identifier of the apiserver.
+ description: |-
+ audience is the intended audience of the token. A recipient of a token
+ must identify itself with an identifier specified in the audience of the
+ token, and otherwise should reject the token. The audience defaults to the
+ identifier of the apiserver.
type: string
expirationSeconds:
- description: expirationSeconds is the requested duration
- of validity of the service account token. As the token
- approaches expiration, the kubelet volume plugin will
- proactively rotate the service account token. The
- kubelet will start trying to rotate the token if the
- token is older than 80 percent of its time to live
- or if the token is older than 24 hours.Defaults to
- 1 hour and must be at least 10 minutes.
+ description: |-
+ expirationSeconds is the requested duration of validity of the service
+ account token. As the token approaches expiration, the kubelet volume
+ plugin will proactively rotate the service account token. The kubelet will
+ start trying to rotate the token if the token is older than 80 percent of
+ its time to live or if the token is older than 24 hours.Defaults to 1 hour
+ and must be at least 10 minutes.
format: int64
type: integer
path:
- description: path is the path relative to the mount
- point of the file to project the token into.
+ description: |-
+ path is the path relative to the mount point of the file to project the
+ token into.
type: string
required:
- path
type: object
type: object
type: array
+ gunicorn:
+ description: |-
+ Settings for the gunicorn server.
+ More info: https://docs.gunicorn.org/en/latest/settings.html
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
ldapBindPassword:
- description: 'A Secret containing the value for the LDAP_BIND_PASSWORD
- setting. More info: https://www.pgadmin.org/docs/pgadmin4/latest/ldap.html'
+ description: |-
+ A Secret containing the value for the LDAP_BIND_PASSWORD setting.
+ More info: https://www.pgadmin.org/docs/pgadmin4/latest/ldap.html
properties:
key:
description: The key of the secret to select from. Must be
a valid secret key.
type: string
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret or its key must be
@@ -1100,37 +1345,44 @@ spec:
required:
- key
type: object
+ x-kubernetes-map-type: atomic
settings:
- description: 'Settings for the pgAdmin server process. Keys should
- be uppercase and values must be constants. More info: https://www.pgadmin.org/docs/pgadmin4/latest/config_py.html'
+ description: |-
+ Settings for the pgAdmin server process. Keys should be uppercase and
+ values must be constants.
+ More info: https://www.pgadmin.org/docs/pgadmin4/latest/config_py.html
type: object
x-kubernetes-preserve-unknown-fields: true
type: object
dataVolumeClaimSpec:
- description: 'Defines a PersistentVolumeClaim for pgAdmin data. More
- info: https://kubernetes.io/docs/concepts/storage/persistent-volumes'
+ description: |-
+ Defines a PersistentVolumeClaim for pgAdmin data.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
properties:
accessModes:
- description: 'accessModes contains the desired access modes the
- volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
+ description: |-
+ accessModes contains the desired access modes the volume should have.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
dataSource:
- description: 'dataSource field can be used to specify either:
+ description: |-
+ dataSource field can be used to specify either:
* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
- * An existing PVC (PersistentVolumeClaim) If the provisioner
- or an external controller can support the specified data source,
- it will create a new volume based on the contents of the specified
- data source. If the AnyVolumeDataSource feature gate is enabled,
- this field will always have the same contents as the DataSourceRef
- field.'
+ * An existing PVC (PersistentVolumeClaim)
+ If the provisioner or an external controller can support the specified data source,
+ it will create a new volume based on the contents of the specified data source.
+ When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
+ and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
+ If the namespace is specified, then dataSourceRef will not be copied to dataSource.
properties:
apiGroup:
- description: APIGroup is the group for the resource being
- referenced. If APIGroup is not specified, the specified
- Kind must be in the core API group. For any other third-party
- types, APIGroup is required.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
+ For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource being referenced
@@ -1142,32 +1394,38 @@ spec:
- kind
- name
type: object
+ x-kubernetes-map-type: atomic
dataSourceRef:
- description: 'dataSourceRef specifies the object from which to
- populate the volume with data, if a non-empty volume is desired.
- This may be any local object from a non-empty API group (non
- core object) or a PersistentVolumeClaim object. When this field
- is specified, volume binding will only succeed if the type of
- the specified object matches some installed volume populator
- or dynamic provisioner. This field will replace the functionality
- of the DataSource field and as such if both fields are non-empty,
- they must have the same value. For backwards compatibility,
- both fields (DataSource and DataSourceRef) will be set to the
- same value automatically if one of them is empty and the other
- is non-empty. There are two important differences between DataSource
- and DataSourceRef: * While DataSource only allows two specific
- types of objects, DataSourceRef allows any non-core object,
- as well as PersistentVolumeClaim objects. * While DataSource
- ignores disallowed values (dropping them), DataSourceRef preserves
- all values, and generates an error if a disallowed value is
- specified. (Beta) Using this field requires the AnyVolumeDataSource
- feature gate to be enabled.'
+ description: |-
+ dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
+ volume is desired. This may be any object from a non-empty API group (non
+ core object) or a PersistentVolumeClaim object.
+ When this field is specified, volume binding will only succeed if the type of
+ the specified object matches some installed volume populator or dynamic
+ provisioner.
+ This field will replace the functionality of the dataSource field and as such
+ if both fields are non-empty, they must have the same value. For backwards
+ compatibility, when namespace isn't specified in dataSourceRef,
+ both fields (dataSource and dataSourceRef) will be set to the same
+ value automatically if one of them is empty and the other is non-empty.
+ When namespace is specified in dataSourceRef,
+ dataSource isn't set to the same value and must be empty.
+ There are three important differences between dataSource and dataSourceRef:
+ * While dataSource only allows two specific types of objects, dataSourceRef
+ allows any non-core object, as well as PersistentVolumeClaim objects.
+ * While dataSource ignores disallowed values (dropping them), dataSourceRef
+ preserves all values, and generates an error if a disallowed value is
+ specified.
+ * While dataSource only allows local objects, dataSourceRef allows objects
+ in any namespaces.
+ (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
+ (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
properties:
apiGroup:
- description: APIGroup is the group for the resource being
- referenced. If APIGroup is not specified, the specified
- Kind must be in the core API group. For any other third-party
- types, APIGroup is required.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
+ For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource being referenced
@@ -1175,16 +1433,23 @@ spec:
name:
description: Name is the name of resource being referenced
type: string
+ namespace:
+ description: |-
+ Namespace is the namespace of resource being referenced
+ Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
+ (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
+ type: string
required:
- kind
- name
type: object
resources:
- description: 'resources represents the minimum resources the volume
- should have. If RecoverVolumeExpansionFailure feature is enabled
- users are allowed to specify resource requirements that are
- lower than previous value but must still be higher than capacity
- recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
+ description: |-
+ resources represents the minimum resources the volume should have.
+ If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
+ that are lower than previous value but must still be higher than capacity recorded in the
+ status field of the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
properties:
limits:
additionalProperties:
@@ -1193,8 +1458,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount of compute
- resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -1203,10 +1469,11 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount of compute
- resources required. If Requests is omitted for a container,
- it defaults to Limits if that is explicitly specified, otherwise
- to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
selector:
@@ -1217,51 +1484,69 @@ spec:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a selector
- that contains values, a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are In, NotIn,
- Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string values. If
- the operator is In or NotIn, the values array must
- be non-empty. If the operator is Exists or DoesNotExist,
- the values array must be empty. This array is replaced
- during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value} pairs. A
- single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field is "key",
- the operator is "In", and the values array contains only
- "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
storageClassName:
- description: 'storageClassName is the name of the StorageClass
- required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
+ description: |-
+ storageClassName is the name of the StorageClass required by the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
+ type: string
+ volumeAttributesClassName:
+ description: |-
+ volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
+ If specified, the CSI driver will create or update the volume with the attributes defined
+ in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
+ it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
+ will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
+ If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
+ will be set by the persistentvolume controller if it exists.
+ If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
+ set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
+ exists.
+ More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
+ (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
type: string
volumeMode:
- description: volumeMode defines what type of volume is required
- by the claim. Value of Filesystem is implied when not included
- in claim spec.
+ description: |-
+ volumeMode defines what type of volume is required by the claim.
+ Value of Filesystem is implied when not included in claim spec.
type: string
volumeName:
description: volumeName is the binding reference to the PersistentVolume
@@ -1272,25 +1557,36 @@ spec:
description: The image name to use for pgAdmin instance.
type: string
imagePullPolicy:
- description: 'ImagePullPolicy is used to determine when Kubernetes
- will attempt to pull (download) container images. More info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy'
+ description: |-
+ ImagePullPolicy is used to determine when Kubernetes will attempt to
+ pull (download) container images.
+ More info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
enum:
- Always
- Never
- IfNotPresent
type: string
imagePullSecrets:
- description: The image pull secrets used to pull from a private registry.
+ description: |-
+ The image pull secrets used to pull from a private registry.
Changing this value causes all running PGAdmin pods to restart.
https://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/
items:
- description: LocalObjectReference contains enough information to
- let you locate the referenced object inside the same namespace.
+ description: |-
+ LocalObjectReference contains enough information to let you locate the
+ referenced object inside the same namespace.
properties:
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
+ x-kubernetes-map-type: atomic
type: array
metadata:
description: Metadata contains metadata for custom resources
@@ -1305,12 +1601,39 @@ spec:
type: object
type: object
priorityClassName:
- description: 'Priority class name for the PGAdmin pod. Changing this
- value causes PGAdmin pod to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/'
+ description: |-
+ Priority class name for the PGAdmin pod. Changing this
+ value causes PGAdmin pod to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
type: string
resources:
description: Resource requirements for the PGAdmin container.
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -1318,8 +1641,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount of compute resources
- allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -1328,116 +1652,188 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount of compute
- resources required. If Requests is omitted for a container,
- it defaults to Limits if that is explicitly specified, otherwise
- to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
serverGroups:
- description: ServerGroups for importing PostgresClusters to pgAdmin.
- To create a pgAdmin with no selectors, leave this field empty. A
- pgAdmin created with no `ServerGroups` will not automatically add
- any servers through discovery. PostgresClusters can still be added
- manually.
+ description: |-
+ ServerGroups for importing PostgresClusters to pgAdmin.
+ To create a pgAdmin with no selectors, leave this field empty.
+ A pgAdmin created with no `ServerGroups` will not automatically
+ add any servers through discovery. PostgresClusters can still be
+ added manually.
items:
properties:
name:
- description: The name for the ServerGroup in pgAdmin. Must be
- unique in the pgAdmin's ServerGroups since it becomes the
- ServerGroup name in pgAdmin.
+ description: |-
+ The name for the ServerGroup in pgAdmin.
+ Must be unique in the pgAdmin's ServerGroups since it becomes the ServerGroup name in pgAdmin.
+ type: string
+ postgresClusterName:
+ description: PostgresClusterName selects one cluster to add
+ to pgAdmin by name.
type: string
postgresClusterSelector:
- description: PostgresClusterSelector selects clusters to dynamically
- add to pgAdmin by matching labels. An empty selector like
- `{}` will select ALL clusters in the namespace.
+ description: |-
+ PostgresClusterSelector selects clusters to dynamically add to pgAdmin by matching labels.
+ An empty selector like `{}` will select ALL clusters in the namespace.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a selector
- that contains values, a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are In, NotIn,
- Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string values.
- If the operator is In or NotIn, the values array
- must be non-empty. If the operator is Exists or
- DoesNotExist, the values array must be empty. This
- array is replaced during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field is
- "key", the operator is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
required:
- name
- - postgresClusterSelector
type: object
+ x-kubernetes-validations:
+ - message: exactly one of "postgresClusterName" or "postgresClusterSelector"
+ is required
+ rule: '[has(self.postgresClusterName),has(self.postgresClusterSelector)].exists_one(x,x)'
type: array
+ serviceName:
+ description: |-
+ ServiceName will be used as the name of a ClusterIP service pointing
+ to the pgAdmin pod and port. If the service already exists, PGO will
+ update the service. For more information about services reference
+ the Kubernetes and CrunchyData documentation.
+ https://kubernetes.io/docs/concepts/services-networking/service/
+ type: string
tolerations:
- description: 'Tolerations of the PGAdmin pod. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration'
+ description: |-
+ Tolerations of the PGAdmin pod.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
items:
- description: The pod this Toleration is attached to tolerates any
- taint that matches the triple using the matching
- operator .
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
properties:
effect:
- description: Effect indicates the taint effect to match. Empty
- means match all taint effects. When specified, allowed values
- are NoSchedule, PreferNoSchedule and NoExecute.
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
type: string
key:
- description: Key is the taint key that the toleration applies
- to. Empty means match all taint keys. If the key is empty,
- operator must be Exists; this combination means to match all
- values and all keys.
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
type: string
operator:
- description: Operator represents a key's relationship to the
- value. Valid operators are Exists and Equal. Defaults to Equal.
- Exists is equivalent to wildcard for value, so that a pod
- can tolerate all taints of a particular category.
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
type: string
tolerationSeconds:
- description: TolerationSeconds represents the period of time
- the toleration (which must be of effect NoExecute, otherwise
- this field is ignored) tolerates the taint. By default, it
- is not set, which means tolerate the taint forever (do not
- evict). Zero and negative values will be treated as 0 (evict
- immediately) by the system.
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
format: int64
type: integer
value:
- description: Value is the taint value the toleration matches
- to. If the operator is Exists, the value should be empty,
- otherwise just a regular string.
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ users:
+ description: |-
+ pgAdmin users that are managed via the PGAdmin spec. Users can still
+ be added via the pgAdmin GUI, but those users will not show up here.
+ items:
+ properties:
+ passwordRef:
+ description: A reference to the secret that holds the user's
+ password.
+ properties:
+ key:
+ description: The key of the secret to select from. Must
+ be a valid secret key.
+ type: string
+ name:
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ optional:
+ description: Specify whether the Secret or its key must
+ be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ x-kubernetes-map-type: atomic
+ role:
+ description: |-
+ Role determines whether the user has admin privileges or not.
+ Defaults to User. Valid options are Administrator and User.
+ enum:
+ - Administrator
+ - User
type: string
+ username:
+ description: |-
+ The username for User in pgAdmin.
+ Must be unique in the pgAdmin's users list.
+ type: string
+ required:
+ - passwordRef
+ - username
type: object
type: array
+ x-kubernetes-list-map-keys:
+ - username
+ x-kubernetes-list-type: map
required:
- dataVolumeClaimSpec
type: object
@@ -1445,47 +1841,39 @@ spec:
description: PGAdminStatus defines the observed state of PGAdmin
properties:
conditions:
- description: 'conditions represent the observations of pgadmin''s
- current state. Known .status.conditions.type are: "PersistentVolumeResizing",
- "Progressing", "ProxyAvailable"'
+ description: |-
+ conditions represent the observations of pgAdmin's current state.
+ Known .status.conditions.type is: "PersistentVolumeResizing"
items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- type FooStatus struct{ // Represents the observations of a foo's
- current state. // Known .status.conditions.type are: \"Available\",
- \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
- // +listType=map // +listMapKey=type Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
+ description: Condition contains details for one aspect of the current
+ state of this API Resource.
properties:
lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
format: int64
minimum: 0
type: integer
reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
@@ -1500,10 +1888,6 @@ spec:
type: string
type:
description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
@@ -1518,6 +1902,14 @@ spec:
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
+ imageSHA:
+ description: ImageSHA represents the image SHA for the container running
+ pgAdmin.
+ type: string
+ majorVersion:
+ description: MajorVersion represents the major version of the running
+ pgAdmin.
+ type: integer
observedGeneration:
description: observedGeneration represents the .metadata.generation
on which the status was based.
diff --git a/config/crd/bases/postgres-operator.crunchydata.com_pgupgrades.yaml b/config/crd/bases/postgres-operator.crunchydata.com_pgupgrades.yaml
index b35c209b37..4ae831cfc7 100644
--- a/config/crd/bases/postgres-operator.crunchydata.com_pgupgrades.yaml
+++ b/config/crd/bases/postgres-operator.crunchydata.com_pgupgrades.yaml
@@ -1,12 +1,9 @@
+---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
- controller-gen.kubebuilder.io/version: v0.8.0
- creationTimestamp: null
- labels:
- app.kubernetes.io/name: pgo
- app.kubernetes.io/version: latest
+ controller-gen.kubebuilder.io/version: v0.16.4
name: pgupgrades.postgres-operator.crunchydata.com
spec:
group: postgres-operator.crunchydata.com
@@ -23,14 +20,19 @@ spec:
description: PGUpgrade is the Schema for the pgupgrades API
properties:
apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
@@ -38,30 +40,29 @@ spec:
description: PGUpgradeSpec defines the desired state of PGUpgrade
properties:
affinity:
- description: 'Scheduling constraints of the PGUpgrade pod. More info:
- https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node'
+ description: |-
+ Scheduling constraints of the PGUpgrade pod.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
properties:
nodeAffinity:
description: Describes node affinity scheduling rules for the
pod.
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule pods to
- nodes that satisfy the affinity expressions specified by
- this field, but it may choose a node that violates one or
- more of the expressions. The node that is most preferred
- is the one with the greatest sum of weights, i.e. for each
- node that meets all of the scheduling requirements (resource
- request, requiredDuringScheduling affinity expressions,
- etc.), compute a sum by iterating through the elements of
- this field and adding "weight" to the sum if the node matches
- the corresponding matchExpressions; the node(s) with the
- highest sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node matches the corresponding matchExpressions; the
+ node(s) with the highest sum are the most preferred.
items:
- description: An empty preferred scheduling term matches
- all objects with implicit weight 0 (i.e. it's a no-op).
- A null preferred scheduling term matches no objects (i.e.
- is also a no-op).
+ description: |-
+ An empty preferred scheduling term matches all objects with implicit weight 0
+ (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
properties:
preference:
description: A node selector term, associated with the
@@ -71,75 +72,72 @@ spec:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the selector
applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values. If
- the operator is In or NotIn, the values
- array must be non-empty. If the operator
- is Exists or DoesNotExist, the values array
- must be empty. If the operator is Gt or
- Lt, the values array must have a single
- element, which will be interpreted as an
- integer. This array is replaced during a
- strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the selector
applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values. If
- the operator is In or NotIn, the values
- array must be non-empty. If the operator
- is Exists or DoesNotExist, the values array
- must be empty. If the operator is Gt or
- Lt, the values array must have a single
- element, which will be interpreted as an
- integer. This array is replaced during a
- strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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:
description: Weight associated with matching the corresponding
nodeSelectorTerm, in the range 1-100.
@@ -150,116 +148,115 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified by this
- field are not met at scheduling time, the pod will not be
- scheduled onto the node. If the affinity requirements specified
- by this field cease to be met at some point during pod execution
- (e.g. due to an update), the system may or may not try to
- eventually evict the pod from its node.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to an update), the system
+ may or may not try to eventually evict the pod from its node.
properties:
nodeSelectorTerms:
description: Required. A list of node selector terms.
The terms are ORed.
items:
- description: A null or empty node selector term matches
- no objects. The requirements of them are ANDed. The
- TopologySelectorTerm type implements a subset of the
- NodeSelectorTerm.
+ description: |-
+ A null or empty node selector term matches no objects. The requirements of
+ them are ANDed.
+ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
properties:
matchExpressions:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the selector
applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values. If
- the operator is In or NotIn, the values
- array must be non-empty. If the operator
- is Exists or DoesNotExist, the values array
- must be empty. If the operator is Gt or
- Lt, the values array must have a single
- element, which will be interpreted as an
- integer. This array is replaced during a
- strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the selector
applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values. If
- the operator is In or NotIn, the values
- array must be non-empty. If the operator
- is Exists or DoesNotExist, the values array
- must be empty. If the operator is Gt or
- Lt, the values array must have a single
- element, which will be interpreted as an
- integer. This array is replaced during a
- strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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
+ x-kubernetes-map-type: atomic
type: object
podAffinity:
description: Describes pod affinity scheduling rules (e.g. co-locate
this pod in the same node, zone, etc. as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule pods to
- nodes that satisfy the affinity expressions specified by
- this field, but it may choose a node that violates one or
- more of the expressions. The node that is most preferred
- is the one with the greatest sum of weights, i.e. for each
- node that meets all of the scheduling requirements (resource
- request, requiredDuringScheduling affinity expressions,
- etc.), compute a sum by iterating through the elements of
- this field and adding "weight" to the sum if the node has
- pods which matches the corresponding podAffinityTerm; the
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
@@ -270,137 +267,161 @@ spec:
with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a key,
- and an operator that relates the key and
- values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only "value".
- The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by this
- field and the ones listed in the namespaces field.
- null selector and null or empty namespaces list
- means "this pod's namespace". An empty selector
- ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a key,
- and an operator that relates the key and
- values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only "value".
- The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to. The
- term is applied to the union of the namespaces
- listed in this field and the ones selected by
- namespaceSelector. null or empty namespaces list
- and null namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the pods
- matching the labelSelector in the specified namespaces,
- where co-located is defined as running on a node
- whose value of the label with key topologyKey
- matches that of any node on which any of the selected
- pods is running. Empty topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching the corresponding
- podAffinityTerm, in the range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -408,146 +429,177 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified by this
- field are not met at scheduling time, the pod will not be
- scheduled onto the node. If the affinity requirements specified
- by this field cease to be met at some point during pod execution
- (e.g. due to a pod label update), the system may or may
- not try to eventually evict the pod from its node. When
- there are multiple elements, the lists of nodes corresponding
- to each podAffinityTerm are intersected, i.e. all terms
- must be satisfied.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those matching
- the labelSelector relative to the given namespace(s))
- that this pod should be co-located (affinity) or not co-located
- (anti-affinity) with, where co-located is defined as running
- on a node whose value of the label with key
- matches that of any node on which a pod of the set of
- pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty. If the
- operator is Exists or DoesNotExist, the
- values array must be empty. This array is
- replaced during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is "In",
- and the values array contains only "value". The
- requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied to the
- union of the namespaces selected by this field and
- the ones listed in the namespaces field. null selector
- and null or empty namespaces list means "this pod's
- namespace". An empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty. If the
- operator is Exists or DoesNotExist, the
- values array must be empty. This array is
- replaced during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is "In",
- and the values array contains only "value". The
- requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list of namespace
- names that the term applies to. The term is applied
- to the union of the namespaces listed in this field
- and the ones selected by namespaceSelector. null or
- empty namespaces list and null namespaceSelector means
- "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the pods matching
- the labelSelector in the specified namespaces, where
- co-located is defined as running on a node whose value
- of the label with key topologyKey matches that of
- any node on which any of the selected pods is running.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
podAntiAffinity:
description: Describes pod anti-affinity scheduling rules (e.g.
@@ -555,16 +607,15 @@ spec:
other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule pods to
- nodes that satisfy the anti-affinity expressions specified
- by this field, but it may choose a node that violates one
- or more of the expressions. The node that is most preferred
- is the one with the greatest sum of weights, i.e. for each
- node that meets all of the scheduling requirements (resource
- request, requiredDuringScheduling anti-affinity expressions,
- etc.), compute a sum by iterating through the elements of
- this field and adding "weight" to the sum if the node has
- pods which matches the corresponding podAffinityTerm; the
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the anti-affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling anti-affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
@@ -575,137 +626,161 @@ spec:
with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a key,
- and an operator that relates the key and
- values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only "value".
- The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by this
- field and the ones listed in the namespaces field.
- null selector and null or empty namespaces list
- means "this pod's namespace". An empty selector
- ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a key,
- and an operator that relates the key and
- values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only "value".
- The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to. The
- term is applied to the union of the namespaces
- listed in this field and the ones selected by
- namespaceSelector. null or empty namespaces list
- and null namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the pods
- matching the labelSelector in the specified namespaces,
- where co-located is defined as running on a node
- whose value of the label with key topologyKey
- matches that of any node on which any of the selected
- pods is running. Empty topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching the corresponding
- podAffinityTerm, in the range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -713,176 +788,218 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the anti-affinity requirements specified by
- this field are not met at scheduling time, the pod will
- not be scheduled onto the node. If the anti-affinity requirements
- specified by this field cease to be met at some point during
- pod execution (e.g. due to a pod label update), the system
- may or may not try to eventually evict the pod from its
- node. When there are multiple elements, the lists of nodes
- corresponding to each podAffinityTerm are intersected, i.e.
- all terms must be satisfied.
+ description: |-
+ If the anti-affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the anti-affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those matching
- the labelSelector relative to the given namespace(s))
- that this pod should be co-located (affinity) or not co-located
- (anti-affinity) with, where co-located is defined as running
- on a node whose value of the label with key
- matches that of any node on which a pod of the set of
- pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty. If the
- operator is Exists or DoesNotExist, the
- values array must be empty. This array is
- replaced during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is "In",
- and the values array contains only "value". The
- requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied to the
- union of the namespaces selected by this field and
- the ones listed in the namespaces field. null selector
- and null or empty namespaces list means "this pod's
- namespace". An empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty. If the
- operator is Exists or DoesNotExist, the
- values array must be empty. This array is
- replaced during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is "In",
- and the values array contains only "value". The
- requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list of namespace
- names that the term applies to. The term is applied
- to the union of the namespaces listed in this field
- and the ones selected by namespaceSelector. null or
- empty namespaces list and null namespaceSelector means
- "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the pods matching
- the labelSelector in the specified namespaces, where
- co-located is defined as running on a node whose value
- of the label with key topologyKey matches that of
- any node on which any of the selected pods is running.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
type: object
fromPostgresVersion:
description: The major version of PostgreSQL before the upgrade.
- maximum: 16
- minimum: 10
+ maximum: 17
+ minimum: 11
type: integer
image:
description: The image name to use for major PostgreSQL upgrades.
type: string
imagePullPolicy:
- description: 'ImagePullPolicy is used to determine when Kubernetes
- will attempt to pull (download) container images. More info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy'
+ description: |-
+ ImagePullPolicy is used to determine when Kubernetes will attempt to
+ pull (download) container images.
+ More info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
enum:
- Always
- Never
- IfNotPresent
type: string
imagePullSecrets:
- description: The image pull secrets used to pull from a private registry.
+ description: |-
+ The image pull secrets used to pull from a private registry.
Changing this value causes all running PGUpgrade pods to restart.
https://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/
items:
- description: LocalObjectReference contains enough information to
- let you locate the referenced object inside the same namespace.
+ description: |-
+ LocalObjectReference contains enough information to let you locate the
+ referenced object inside the same namespace.
properties:
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
+ x-kubernetes-map-type: atomic
type: array
metadata:
description: Metadata contains metadata for custom resources
@@ -901,12 +1018,39 @@ spec:
minLength: 1
type: string
priorityClassName:
- description: 'Priority class name for the PGUpgrade pod. Changing
- this value causes PGUpgrade pod to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/'
+ description: |-
+ Priority class name for the PGUpgrade pod. Changing this
+ value causes PGUpgrade pod to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
type: string
resources:
description: Resource requirements for the PGUpgrade container.
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -914,8 +1058,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount of compute resources
- allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -924,59 +1069,61 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount of compute
- resources required. If Requests is omitted for a container,
- it defaults to Limits if that is explicitly specified, otherwise
- to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
toPostgresImage:
- description: The image name to use for PostgreSQL containers after
- upgrade. When omitted, the value comes from an operator environment
- variable.
+ description: |-
+ The image name to use for PostgreSQL containers after upgrade.
+ When omitted, the value comes from an operator environment variable.
type: string
toPostgresVersion:
description: The major version of PostgreSQL to be upgraded to.
- maximum: 16
- minimum: 10
+ maximum: 17
+ minimum: 11
type: integer
tolerations:
- description: 'Tolerations of the PGUpgrade pod. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration'
+ description: |-
+ Tolerations of the PGUpgrade pod.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
items:
- description: The pod this Toleration is attached to tolerates any
- taint that matches the triple using the matching
- operator .
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
properties:
effect:
- description: Effect indicates the taint effect to match. Empty
- means match all taint effects. When specified, allowed values
- are NoSchedule, PreferNoSchedule and NoExecute.
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
type: string
key:
- description: Key is the taint key that the toleration applies
- to. Empty means match all taint keys. If the key is empty,
- operator must be Exists; this combination means to match all
- values and all keys.
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
type: string
operator:
- description: Operator represents a key's relationship to the
- value. Valid operators are Exists and Equal. Defaults to Equal.
- Exists is equivalent to wildcard for value, so that a pod
- can tolerate all taints of a particular category.
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
type: string
tolerationSeconds:
- description: TolerationSeconds represents the period of time
- the toleration (which must be of effect NoExecute, otherwise
- this field is ignored) tolerates the taint. By default, it
- is not set, which means tolerate the taint forever (do not
- evict). Zero and negative values will be treated as 0 (evict
- immediately) by the system.
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
format: int64
type: integer
value:
- description: Value is the taint value the toleration matches
- to. If the operator is Exists, the value should be empty,
- otherwise just a regular string.
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
type: object
type: array
@@ -992,43 +1139,35 @@ spec:
description: conditions represent the observations of PGUpgrade's
current state.
items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- type FooStatus struct{ // Represents the observations of a foo's
- current state. // Known .status.conditions.type are: \"Available\",
- \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
- // +listType=map // +listMapKey=type Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
+ description: Condition contains details for one aspect of the current
+ state of this API Resource.
properties:
lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
format: int64
minimum: 0
type: integer
reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
@@ -1043,10 +1182,6 @@ spec:
type: string
type:
description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
diff --git a/config/crd/bases/postgres-operator.crunchydata.com_postgresclusters.yaml b/config/crd/bases/postgres-operator.crunchydata.com_postgresclusters.yaml
index 2e66275521..6f9dd40f02 100644
--- a/config/crd/bases/postgres-operator.crunchydata.com_postgresclusters.yaml
+++ b/config/crd/bases/postgres-operator.crunchydata.com_postgresclusters.yaml
@@ -1,12 +1,9 @@
+---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
- controller-gen.kubebuilder.io/version: v0.8.0
- creationTimestamp: null
- labels:
- app.kubernetes.io/name: pgo
- app.kubernetes.io/version: latest
+ controller-gen.kubebuilder.io/version: v0.16.4
name: postgresclusters.postgres-operator.crunchydata.com
spec:
group: postgres-operator.crunchydata.com
@@ -23,14 +20,19 @@ spec:
description: PostgresCluster is the Schema for the postgresclusters API
properties:
apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
@@ -44,30 +46,121 @@ spec:
description: pgBackRest archive configuration
properties:
configuration:
- description: 'Projected volumes containing custom pgBackRest
- configuration. These files are mounted under "/etc/pgbackrest/conf.d"
- alongside any pgBackRest configuration generated by the
- PostgreSQL Operator: https://pgbackrest.org/configuration.html'
+ description: |-
+ Projected volumes containing custom pgBackRest configuration. These files are mounted
+ under "/etc/pgbackrest/conf.d" alongside any pgBackRest configuration generated by the
+ PostgreSQL Operator:
+ https://pgbackrest.org/configuration.html
items:
description: Projection that may be projected along with
other supported volume types
properties:
+ clusterTrustBundle:
+ description: |-
+ ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
+ of ClusterTrustBundle objects in an auto-updating file.
+
+ Alpha, gated by the ClusterTrustBundleProjection feature gate.
+
+ ClusterTrustBundle objects can either be selected by name, or by the
+ combination of signer name and a label selector.
+
+ Kubelet performs aggressive normalization of the PEM contents written
+ into the pod filesystem. Esoteric PEM features such as inter-block
+ comments and block headers are stripped. Certificates are deduplicated.
+ The ordering of certificates within the file is arbitrary, and Kubelet
+ may change the order over time.
+ properties:
+ labelSelector:
+ description: |-
+ Select all ClusterTrustBundles that match this label selector. Only has
+ effect if signerName is set. Mutually-exclusive with name. If unset,
+ interpreted as "match nothing". If set but empty, interpreted as "match
+ everything".
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are
+ ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that
+ the selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ 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
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ name:
+ description: |-
+ Select a single ClusterTrustBundle by object name. Mutually-exclusive
+ with signerName and labelSelector.
+ type: string
+ optional:
+ description: |-
+ If true, don't block pod startup if the referenced ClusterTrustBundle(s)
+ aren't available. If using name, then the named ClusterTrustBundle is
+ allowed not to exist. If using signerName, then the combination of
+ signerName and labelSelector is allowed to match zero
+ ClusterTrustBundles.
+ type: boolean
+ path:
+ description: Relative path from the volume root
+ to write the bundle.
+ type: string
+ signerName:
+ description: |-
+ Select all ClusterTrustBundles that match this signer name.
+ Mutually-exclusive with name. The contents of all selected
+ ClusterTrustBundles will be unified and deduplicated.
+ type: string
+ required:
+ - path
+ type: object
configMap:
description: configMap information about the configMap
data to project
properties:
items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced ConfigMap
- will be projected into the volume as a file whose
- name is the key and content is the value. If specified,
- the listed keys will be projected into the specified
- paths, and unlisted keys will not be present.
- If a key is specified which is not present in
- the ConfigMap, the volume setup will error unless
- it is marked optional. Paths must be relative
- and may not contain the '..' path or start with
- '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ ConfigMap will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the ConfigMap,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within
a volume.
@@ -76,39 +169,43 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits
- used to set permissions on this file. Must
- be an octal value between 0000 and 0777
- or a decimal value between 0 and 511. YAML
- accepts both octal and decimal values, JSON
- requires decimal values for mode bits. If
- not specified, the volume defaultMode will
- be used. This might be in conflict with
- other options that affect the file mode,
- like fsGroup, and the result can be other
- mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of
- the file to map the key to. May not be an
- absolute path. May not contain the path
- element '..'. May not start with the string
- '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional specify whether the ConfigMap
or its keys must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
downwardAPI:
description: downwardAPI information about the downwardAPI
data to project
@@ -123,8 +220,8 @@ spec:
properties:
fieldRef:
description: 'Required: Selects a field of
- the pod: only annotations, labels, name
- and namespace are supported.'
+ the pod: only annotations, labels, name,
+ namespace and uid are supported.'
properties:
apiVersion:
description: Version of the schema the
@@ -138,17 +235,15 @@ spec:
required:
- fieldPath
type: object
+ x-kubernetes-map-type: atomic
mode:
- description: 'Optional: mode bits used to
- set permissions on this file, must be an
- octal value between 0000 and 0777 or a decimal
- value between 0 and 511. YAML accepts both
- octal and decimal values, JSON requires
- decimal values for mode bits. If not specified,
- the volume defaultMode will be used. This
- might be in conflict with other options
- that affect the file mode, like fsGroup,
- and the result can be other mode bits set.'
+ description: |-
+ Optional: mode bits used to set permissions on this file, must be an octal value
+ between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
@@ -159,10 +254,9 @@ spec:
the relative path must not start with ''..'''
type: string
resourceFieldRef:
- description: 'Selects a resource of the container:
- only resources limits and requests (limits.cpu,
- limits.memory, requests.cpu and requests.memory)
- are currently supported.'
+ description: |-
+ Selects a resource of the container: only resources limits and requests
+ (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
properties:
containerName:
description: 'Container name: required
@@ -183,27 +277,26 @@ spec:
required:
- resource
type: object
+ x-kubernetes-map-type: atomic
required:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
secret:
description: secret information about the secret data
to project
properties:
items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced Secret
- will be projected into the volume as a file whose
- name is the key and content is the value. If specified,
- the listed keys will be projected into the specified
- paths, and unlisted keys will not be present.
- If a key is specified which is not present in
- the Secret, the volume setup will error unless
- it is marked optional. Paths must be relative
- and may not contain the '..' path or start with
- '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ Secret will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the Secret,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within
a volume.
@@ -212,66 +305,68 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits
- used to set permissions on this file. Must
- be an octal value between 0000 and 0777
- or a decimal value between 0 and 511. YAML
- accepts both octal and decimal values, JSON
- requires decimal values for mode bits. If
- not specified, the volume defaultMode will
- be used. This might be in conflict with
- other options that affect the file mode,
- like fsGroup, and the result can be other
- mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of
- the file to map the key to. May not be an
- absolute path. May not contain the path
- element '..'. May not start with the string
- '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional field specify whether the
Secret or its key must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
serviceAccountToken:
description: serviceAccountToken is information about
the serviceAccountToken data to project
properties:
audience:
- description: audience is the intended audience of
- the token. A recipient of a token must identify
- itself with an identifier specified in the audience
- of the token, and otherwise should reject the
- token. The audience defaults to the identifier
- of the apiserver.
+ description: |-
+ audience is the intended audience of the token. A recipient of a token
+ must identify itself with an identifier specified in the audience of the
+ token, and otherwise should reject the token. The audience defaults to the
+ identifier of the apiserver.
type: string
expirationSeconds:
- description: expirationSeconds is the requested
- duration of validity of the service account token.
- As the token approaches expiration, the kubelet
- volume plugin will proactively rotate the service
- account token. The kubelet will start trying to
- rotate the token if the token is older than 80
- percent of its time to live or if the token is
- older than 24 hours.Defaults to 1 hour and must
- be at least 10 minutes.
+ description: |-
+ expirationSeconds is the requested duration of validity of the service
+ account token. As the token approaches expiration, the kubelet volume
+ plugin will proactively rotate the service account token. The kubelet will
+ start trying to rotate the token if the token is older than 80 percent of
+ its time to live or if the token is older than 24 hours.Defaults to 1 hour
+ and must be at least 10 minutes.
format: int64
type: integer
path:
- description: path is the path relative to the mount
- point of the file to project the token into.
+ description: |-
+ path is the path relative to the mount point of the file to project the
+ token into.
type: string
required:
- path
@@ -281,48 +376,46 @@ spec:
global:
additionalProperties:
type: string
- description: 'Global pgBackRest configuration settings. These
- settings are included in the "global" section of the pgBackRest
- configuration generated by the PostgreSQL Operator, and
- then mounted under "/etc/pgbackrest/conf.d": https://pgbackrest.org/configuration.html'
+ description: |-
+ Global pgBackRest configuration settings. These settings are included in the "global"
+ section of the pgBackRest configuration generated by the PostgreSQL Operator, and then
+ mounted under "/etc/pgbackrest/conf.d":
+ https://pgbackrest.org/configuration.html
type: object
image:
- description: The image name to use for pgBackRest containers. Utilized
- to run pgBackRest repository hosts and backups. The image
- may also be set using the RELATED_IMAGE_PGBACKREST environment
- variable
+ description: |-
+ The image name to use for pgBackRest containers. Utilized to run
+ pgBackRest repository hosts and backups. The image may also be set using
+ the RELATED_IMAGE_PGBACKREST environment variable
type: string
jobs:
description: Jobs field allows configuration for all backup
jobs
properties:
affinity:
- description: 'Scheduling constraints of pgBackRest backup
- Job pods. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node'
+ description: |-
+ Scheduling constraints of pgBackRest backup Job pods.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
properties:
nodeAffinity:
description: Describes node affinity scheduling rules
for the pod.
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a
- node that violates one or more of the expressions.
- The node that is most preferred is the one with
- the greatest sum of weights, i.e. for each node
- that meets all of the scheduling requirements
- (resource request, requiredDuringScheduling
- affinity expressions, etc.), compute a sum by
- iterating through the elements of this field
- and adding "weight" to the sum if the node matches
- the corresponding matchExpressions; the node(s)
- with the highest sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node matches the corresponding matchExpressions; the
+ node(s) with the highest sum are the most preferred.
items:
- description: An empty preferred scheduling term
- matches all objects with implicit weight 0
- (i.e. it's a no-op). A null preferred scheduling
- term matches no objects (i.e. is also a no-op).
+ description: |-
+ An empty preferred scheduling term matches all objects with implicit weight 0
+ (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
properties:
preference:
description: A node selector term, associated
@@ -332,85 +425,72 @@ spec:
description: A list of node selector
requirements by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
- description: Represents a key's
- relationship to a set of values.
- Valid operators are In, NotIn,
- Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string
- values. If the operator is In
- or NotIn, the values array must
- be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- If the operator is Gt or Lt,
- the values array must have a
- single element, which will be
- interpreted as an integer. This
- array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector
requirements by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
- description: Represents a key's
- relationship to a set of values.
- Valid operators are In, NotIn,
- Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string
- values. If the operator is In
- or NotIn, the values array must
- be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- If the operator is Gt or Lt,
- the values array must have a
- single element, which will be
- interpreted as an integer. This
- array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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:
description: Weight associated with matching
the corresponding nodeSelectorTerm, in
@@ -422,112 +502,100 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time,
- the pod will not be scheduled onto the node.
- If the affinity requirements specified by this
- field cease to be met at some point during pod
- execution (e.g. due to an update), the system
- may or may not try to eventually evict the pod
- from its node.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to an update), the system
+ may or may not try to eventually evict the pod from its node.
properties:
nodeSelectorTerms:
description: Required. A list of node selector
terms. The terms are ORed.
items:
- description: A null or empty node selector
- term matches no objects. The requirements
- of them are ANDed. The TopologySelectorTerm
- type implements a subset of the NodeSelectorTerm.
+ description: |-
+ A null or empty node selector term matches no objects. The requirements of
+ them are ANDed.
+ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
properties:
matchExpressions:
description: A list of node selector
requirements by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
- description: Represents a key's
- relationship to a set of values.
- Valid operators are In, NotIn,
- Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string
- values. If the operator is In
- or NotIn, the values array must
- be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- If the operator is Gt or Lt,
- the values array must have a
- single element, which will be
- interpreted as an integer. This
- array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector
requirements by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
- description: Represents a key's
- relationship to a set of values.
- Valid operators are In, NotIn,
- Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string
- values. If the operator is In
- or NotIn, the values array must
- be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- If the operator is Gt or Lt,
- the values array must have a
- single element, which will be
- interpreted as an integer. This
- array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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
+ x-kubernetes-map-type: atomic
type: object
podAffinity:
description: Describes pod affinity scheduling rules
@@ -535,20 +603,16 @@ spec:
etc. as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a
- node that violates one or more of the expressions.
- The node that is most preferred is the one with
- the greatest sum of weights, i.e. for each node
- that meets all of the scheduling requirements
- (resource request, requiredDuringScheduling
- affinity expressions, etc.), compute a sum by
- iterating through the elements of this field
- and adding "weight" to the sum if the node has
- pods which matches the corresponding podAffinityTerm;
- the node(s) with the highest sum are the most
- preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched
WeightedPodAffinityTerm fields are added per-node
@@ -559,19 +623,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set
- of resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is
a list of label selector requirements.
The requirements are ANDed.
items:
- description: A label selector
- requirement is a selector that
- contains values, a key, and
- an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -579,66 +642,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to
- a set of values. Valid operators
- are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an
- array of string values.
- If the operator is In or
- NotIn, the values array
- must be non-empty. If the
- operator is Exists or DoesNotExist,
- the values array must be
- empty. This array is replaced
- during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map
- of {key,value} pairs. A single
- {key,value} in the matchLabels
- map is equivalent to an element
- of matchExpressions, whose key
- field is "key", the operator is
- "In", and the values array contains
- only "value". The requirements
- are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the
- set of namespaces that the term applies
- to. The term is applied to the union
- of the namespaces selected by this
- field and the ones listed in the namespaces
- field. null selector and null or empty
- namespaces list means "this pod's
- namespace". An empty selector ({})
- matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is
a list of label selector requirements.
The requirements are ANDed.
items:
- description: A label selector
- requirement is a selector that
- contains values, a key, and
- an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -646,76 +725,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to
- a set of values. Valid operators
- are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an
- array of string values.
- If the operator is In or
- NotIn, the values array
- must be non-empty. If the
- operator is Exists or DoesNotExist,
- the values array must be
- empty. This array is replaced
- during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map
- of {key,value} pairs. A single
- {key,value} in the matchLabels
- map is equivalent to an element
- of matchExpressions, whose key
- field is "key", the operator is
- "In", and the values array contains
- only "value". The requirements
- are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a
- static list of namespace names that
- the term applies to. The term is applied
- to the union of the namespaces listed
- in this field and the ones selected
- by namespaceSelector. null or empty
- namespaces list and null namespaceSelector
- means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where
- co-located is defined as running on
- a node whose value of the label with
- key topologyKey matches that of any
- node on which any of the selected
- pods is running. Empty topologyKey
- is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in
- the range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -723,41 +787,38 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time,
- the pod will not be scheduled onto the node.
- If the affinity requirements specified by this
- field cease to be met at some point during pod
- execution (e.g. due to a pod label update),
- the system may or may not try to eventually
- evict the pod from its node. When there are
- multiple elements, the lists of nodes corresponding
- to each podAffinityTerm are intersected, i.e.
- all terms must be satisfied.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the
- given namespace(s)) that this pod should be
- co-located (affinity) or not co-located (anti-affinity)
- with, where co-located is defined as running
- on a node whose value of the label with key
- matches that of any node on
- which a pod of the set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -765,60 +826,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -826,67 +909,59 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
podAntiAffinity:
description: Describes pod anti-affinity scheduling
@@ -894,20 +969,16 @@ spec:
zone, etc. as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the anti-affinity
- expressions specified by this field, but it
- may choose a node that violates one or more
- of the expressions. The node that is most preferred
- is the one with the greatest sum of weights,
- i.e. for each node that meets all of the scheduling
- requirements (resource request, requiredDuringScheduling
- anti-affinity expressions, etc.), compute a
- sum by iterating through the elements of this
- field and adding "weight" to the sum if the
- node has pods which matches the corresponding
- podAffinityTerm; the node(s) with the highest
- sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the anti-affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling anti-affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched
WeightedPodAffinityTerm fields are added per-node
@@ -918,19 +989,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set
- of resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is
a list of label selector requirements.
The requirements are ANDed.
items:
- description: A label selector
- requirement is a selector that
- contains values, a key, and
- an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -938,66 +1008,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to
- a set of values. Valid operators
- are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an
- array of string values.
- If the operator is In or
- NotIn, the values array
- must be non-empty. If the
- operator is Exists or DoesNotExist,
- the values array must be
- empty. This array is replaced
- during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map
- of {key,value} pairs. A single
- {key,value} in the matchLabels
- map is equivalent to an element
- of matchExpressions, whose key
- field is "key", the operator is
- "In", and the values array contains
- only "value". The requirements
- are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the
- set of namespaces that the term applies
- to. The term is applied to the union
- of the namespaces selected by this
- field and the ones listed in the namespaces
- field. null selector and null or empty
- namespaces list means "this pod's
- namespace". An empty selector ({})
- matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is
a list of label selector requirements.
The requirements are ANDed.
items:
- description: A label selector
- requirement is a selector that
- contains values, a key, and
- an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -1005,76 +1091,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to
- a set of values. Valid operators
- are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an
- array of string values.
- If the operator is In or
- NotIn, the values array
- must be non-empty. If the
- operator is Exists or DoesNotExist,
- the values array must be
- empty. This array is replaced
- during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map
- of {key,value} pairs. A single
- {key,value} in the matchLabels
- map is equivalent to an element
- of matchExpressions, whose key
- field is "key", the operator is
- "In", and the values array contains
- only "value". The requirements
- are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a
- static list of namespace names that
- the term applies to. The term is applied
- to the union of the namespaces listed
- in this field and the ones selected
- by namespaceSelector. null or empty
- namespaces list and null namespaceSelector
- means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where
- co-located is defined as running on
- a node whose value of the label with
- key topologyKey matches that of any
- node on which any of the selected
- pods is running. Empty topologyKey
- is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in
- the range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -1082,41 +1153,38 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the anti-affinity requirements
- specified by this field are not met at scheduling
- time, the pod will not be scheduled onto the
- node. If the anti-affinity requirements specified
- by this field cease to be met at some point
- during pod execution (e.g. due to a pod label
- update), the system may or may not try to eventually
- evict the pod from its node. When there are
- multiple elements, the lists of nodes corresponding
- to each podAffinityTerm are intersected, i.e.
- all terms must be satisfied.
+ description: |-
+ If the anti-affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the anti-affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the
- given namespace(s)) that this pod should be
- co-located (affinity) or not co-located (anti-affinity)
- with, where co-located is defined as running
- on a node whose value of the label with key
- matches that of any node on
- which a pod of the set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -1124,60 +1192,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -1185,77 +1275,97 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
type: object
priorityClassName:
- description: 'Priority class name for the pgBackRest backup
- Job pods. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/'
+ description: |-
+ Priority class name for the pgBackRest backup Job pods.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
type: string
resources:
- description: Resource limits for backup jobs. Includes
- manual, scheduled and replica create backups
+ description: |-
+ Resource limits for backup jobs. Includes manual, scheduled and replica
+ create backups
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry
+ in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -1263,8 +1373,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount
- of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -1273,61 +1384,58 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is omitted
- for a container, it defaults to Limits if that is
- explicitly specified, otherwise to an implementation-defined
- value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
tolerations:
- description: 'Tolerations of pgBackRest backup Job pods.
- More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration'
+ description: |-
+ Tolerations of pgBackRest backup Job pods.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
items:
- description: The pod this Toleration is attached to
- tolerates any taint that matches the triple
- using the matching operator .
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
properties:
effect:
- description: Effect indicates the taint effect to
- match. Empty means match all taint effects. When
- specified, allowed values are NoSchedule, PreferNoSchedule
- and NoExecute.
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
type: string
key:
- description: Key is the taint key that the toleration
- applies to. Empty means match all taint keys.
- If the key is empty, operator must be Exists;
- this combination means to match all values and
- all keys.
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
type: string
operator:
- description: Operator represents a key's relationship
- to the value. Valid operators are Exists and Equal.
- Defaults to Equal. Exists is equivalent to wildcard
- for value, so that a pod can tolerate all taints
- of a particular category.
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
type: string
tolerationSeconds:
- description: TolerationSeconds represents the period
- of time the toleration (which must be of effect
- NoExecute, otherwise this field is ignored) tolerates
- the taint. By default, it is not set, which means
- tolerate the taint forever (do not evict). Zero
- and negative values will be treated as 0 (evict
- immediately) by the system.
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
format: int64
type: integer
value:
- description: Value is the taint value the toleration
- matches to. If the operator is Exists, the value
- should be empty, otherwise just a regular string.
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
type: object
type: array
ttlSecondsAfterFinished:
- description: 'Limit the lifetime of a Job that has finished.
- More info: https://kubernetes.io/docs/concepts/workloads/controllers/job'
+ description: |-
+ Limit the lifetime of a Job that has finished.
+ More info: https://kubernetes.io/docs/concepts/workloads/controllers/job
format: int32
minimum: 60
type: integer
@@ -1337,8 +1445,9 @@ spec:
Jobs
properties:
options:
- description: Command line options to include when running
- the pgBackRest backup command. https://pgbackrest.org/command.html#command-backup
+ description: |-
+ Command line options to include when running the pgBackRest backup command.
+ https://pgbackrest.org/command.html#command-backup
items:
type: string
type: array
@@ -1363,40 +1472,36 @@ spec:
type: object
type: object
repoHost:
- description: Defines configuration for a pgBackRest dedicated
- repository host. This section is only applicable if at
- least one "volume" (i.e. PVC-based) repository is defined
- in the "repos" section, therefore enabling a dedicated repository
- host Deployment.
+ description: |-
+ Defines configuration for a pgBackRest dedicated repository host. This section is only
+ applicable if at least one "volume" (i.e. PVC-based) repository is defined in the "repos"
+ section, therefore enabling a dedicated repository host Deployment.
properties:
affinity:
- description: 'Scheduling constraints of the Dedicated
- repo host pod. Changing this value causes repo host
- to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node'
+ description: |-
+ Scheduling constraints of the Dedicated repo host pod.
+ Changing this value causes repo host to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
properties:
nodeAffinity:
description: Describes node affinity scheduling rules
for the pod.
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a
- node that violates one or more of the expressions.
- The node that is most preferred is the one with
- the greatest sum of weights, i.e. for each node
- that meets all of the scheduling requirements
- (resource request, requiredDuringScheduling
- affinity expressions, etc.), compute a sum by
- iterating through the elements of this field
- and adding "weight" to the sum if the node matches
- the corresponding matchExpressions; the node(s)
- with the highest sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node matches the corresponding matchExpressions; the
+ node(s) with the highest sum are the most preferred.
items:
- description: An empty preferred scheduling term
- matches all objects with implicit weight 0
- (i.e. it's a no-op). A null preferred scheduling
- term matches no objects (i.e. is also a no-op).
+ description: |-
+ An empty preferred scheduling term matches all objects with implicit weight 0
+ (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
properties:
preference:
description: A node selector term, associated
@@ -1406,85 +1511,72 @@ spec:
description: A list of node selector
requirements by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
- description: Represents a key's
- relationship to a set of values.
- Valid operators are In, NotIn,
- Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string
- values. If the operator is In
- or NotIn, the values array must
- be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- If the operator is Gt or Lt,
- the values array must have a
- single element, which will be
- interpreted as an integer. This
- array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector
requirements by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
- description: Represents a key's
- relationship to a set of values.
- Valid operators are In, NotIn,
- Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string
- values. If the operator is In
- or NotIn, the values array must
- be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- If the operator is Gt or Lt,
- the values array must have a
- single element, which will be
- interpreted as an integer. This
- array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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:
description: Weight associated with matching
the corresponding nodeSelectorTerm, in
@@ -1496,112 +1588,100 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time,
- the pod will not be scheduled onto the node.
- If the affinity requirements specified by this
- field cease to be met at some point during pod
- execution (e.g. due to an update), the system
- may or may not try to eventually evict the pod
- from its node.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to an update), the system
+ may or may not try to eventually evict the pod from its node.
properties:
nodeSelectorTerms:
description: Required. A list of node selector
terms. The terms are ORed.
items:
- description: A null or empty node selector
- term matches no objects. The requirements
- of them are ANDed. The TopologySelectorTerm
- type implements a subset of the NodeSelectorTerm.
+ description: |-
+ A null or empty node selector term matches no objects. The requirements of
+ them are ANDed.
+ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
properties:
matchExpressions:
description: A list of node selector
requirements by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
- description: Represents a key's
- relationship to a set of values.
- Valid operators are In, NotIn,
- Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string
- values. If the operator is In
- or NotIn, the values array must
- be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- If the operator is Gt or Lt,
- the values array must have a
- single element, which will be
- interpreted as an integer. This
- array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector
requirements by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
- description: Represents a key's
- relationship to a set of values.
- Valid operators are In, NotIn,
- Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string
- values. If the operator is In
- or NotIn, the values array must
- be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- If the operator is Gt or Lt,
- the values array must have a
- single element, which will be
- interpreted as an integer. This
- array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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
+ x-kubernetes-map-type: atomic
type: object
podAffinity:
description: Describes pod affinity scheduling rules
@@ -1609,20 +1689,16 @@ spec:
etc. as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a
- node that violates one or more of the expressions.
- The node that is most preferred is the one with
- the greatest sum of weights, i.e. for each node
- that meets all of the scheduling requirements
- (resource request, requiredDuringScheduling
- affinity expressions, etc.), compute a sum by
- iterating through the elements of this field
- and adding "weight" to the sum if the node has
- pods which matches the corresponding podAffinityTerm;
- the node(s) with the highest sum are the most
- preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched
WeightedPodAffinityTerm fields are added per-node
@@ -1633,19 +1709,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set
- of resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is
a list of label selector requirements.
The requirements are ANDed.
items:
- description: A label selector
- requirement is a selector that
- contains values, a key, and
- an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -1653,66 +1728,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to
- a set of values. Valid operators
- are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an
- array of string values.
- If the operator is In or
- NotIn, the values array
- must be non-empty. If the
- operator is Exists or DoesNotExist,
- the values array must be
- empty. This array is replaced
- during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map
- of {key,value} pairs. A single
- {key,value} in the matchLabels
- map is equivalent to an element
- of matchExpressions, whose key
- field is "key", the operator is
- "In", and the values array contains
- only "value". The requirements
- are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the
- set of namespaces that the term applies
- to. The term is applied to the union
- of the namespaces selected by this
- field and the ones listed in the namespaces
- field. null selector and null or empty
- namespaces list means "this pod's
- namespace". An empty selector ({})
- matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is
a list of label selector requirements.
The requirements are ANDed.
items:
- description: A label selector
- requirement is a selector that
- contains values, a key, and
- an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -1720,76 +1811,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to
- a set of values. Valid operators
- are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an
- array of string values.
- If the operator is In or
- NotIn, the values array
- must be non-empty. If the
- operator is Exists or DoesNotExist,
- the values array must be
- empty. This array is replaced
- during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map
- of {key,value} pairs. A single
- {key,value} in the matchLabels
- map is equivalent to an element
- of matchExpressions, whose key
- field is "key", the operator is
- "In", and the values array contains
- only "value". The requirements
- are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a
- static list of namespace names that
- the term applies to. The term is applied
- to the union of the namespaces listed
- in this field and the ones selected
- by namespaceSelector. null or empty
- namespaces list and null namespaceSelector
- means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where
- co-located is defined as running on
- a node whose value of the label with
- key topologyKey matches that of any
- node on which any of the selected
- pods is running. Empty topologyKey
- is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in
- the range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -1797,41 +1873,38 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time,
- the pod will not be scheduled onto the node.
- If the affinity requirements specified by this
- field cease to be met at some point during pod
- execution (e.g. due to a pod label update),
- the system may or may not try to eventually
- evict the pod from its node. When there are
- multiple elements, the lists of nodes corresponding
- to each podAffinityTerm are intersected, i.e.
- all terms must be satisfied.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the
- given namespace(s)) that this pod should be
- co-located (affinity) or not co-located (anti-affinity)
- with, where co-located is defined as running
- on a node whose value of the label with key
- matches that of any node on
- which a pod of the set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -1839,60 +1912,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -1900,67 +1995,59 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
podAntiAffinity:
description: Describes pod anti-affinity scheduling
@@ -1968,20 +2055,16 @@ spec:
zone, etc. as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the anti-affinity
- expressions specified by this field, but it
- may choose a node that violates one or more
- of the expressions. The node that is most preferred
- is the one with the greatest sum of weights,
- i.e. for each node that meets all of the scheduling
- requirements (resource request, requiredDuringScheduling
- anti-affinity expressions, etc.), compute a
- sum by iterating through the elements of this
- field and adding "weight" to the sum if the
- node has pods which matches the corresponding
- podAffinityTerm; the node(s) with the highest
- sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the anti-affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling anti-affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched
WeightedPodAffinityTerm fields are added per-node
@@ -1992,19 +2075,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set
- of resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is
a list of label selector requirements.
The requirements are ANDed.
items:
- description: A label selector
- requirement is a selector that
- contains values, a key, and
- an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -2012,66 +2094,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to
- a set of values. Valid operators
- are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an
- array of string values.
- If the operator is In or
- NotIn, the values array
- must be non-empty. If the
- operator is Exists or DoesNotExist,
- the values array must be
- empty. This array is replaced
- during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map
- of {key,value} pairs. A single
- {key,value} in the matchLabels
- map is equivalent to an element
- of matchExpressions, whose key
- field is "key", the operator is
- "In", and the values array contains
- only "value". The requirements
- are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the
- set of namespaces that the term applies
- to. The term is applied to the union
- of the namespaces selected by this
- field and the ones listed in the namespaces
- field. null selector and null or empty
- namespaces list means "this pod's
- namespace". An empty selector ({})
- matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is
a list of label selector requirements.
The requirements are ANDed.
items:
- description: A label selector
- requirement is a selector that
- contains values, a key, and
- an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -2079,76 +2177,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to
- a set of values. Valid operators
- are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an
- array of string values.
- If the operator is In or
- NotIn, the values array
- must be non-empty. If the
- operator is Exists or DoesNotExist,
- the values array must be
- empty. This array is replaced
- during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map
- of {key,value} pairs. A single
- {key,value} in the matchLabels
- map is equivalent to an element
- of matchExpressions, whose key
- field is "key", the operator is
- "In", and the values array contains
- only "value". The requirements
- are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a
- static list of namespace names that
- the term applies to. The term is applied
- to the union of the namespaces listed
- in this field and the ones selected
- by namespaceSelector. null or empty
- namespaces list and null namespaceSelector
- means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where
- co-located is defined as running on
- a node whose value of the label with
- key topologyKey matches that of any
- node on which any of the selected
- pods is running. Empty topologyKey
- is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in
- the range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -2156,41 +2239,38 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the anti-affinity requirements
- specified by this field are not met at scheduling
- time, the pod will not be scheduled onto the
- node. If the anti-affinity requirements specified
- by this field cease to be met at some point
- during pod execution (e.g. due to a pod label
- update), the system may or may not try to eventually
- evict the pod from its node. When there are
- multiple elements, the lists of nodes corresponding
- to each podAffinityTerm are intersected, i.e.
- all terms must be satisfied.
+ description: |-
+ If the anti-affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the anti-affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the
- given namespace(s)) that this pod should be
- co-located (affinity) or not co-located (anti-affinity)
- with, where co-located is defined as running
- on a node whose value of the label with key
- matches that of any node on
- which a pod of the set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -2198,60 +2278,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -2259,78 +2361,97 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
type: object
priorityClassName:
- description: 'Priority class name for the pgBackRest repo
- host pod. Changing this value causes PostgreSQL to restart.
- More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/'
+ description: |-
+ Priority class name for the pgBackRest repo host pod. Changing this value
+ causes PostgreSQL to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
type: string
resources:
description: Resource requirements for a pgBackRest repository
host
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry
+ in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -2338,8 +2459,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount
- of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -2348,29 +2470,27 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is omitted
- for a container, it defaults to Limits if that is
- explicitly specified, otherwise to an implementation-defined
- value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
sshConfigMap:
- description: 'ConfigMap containing custom SSH configuration.
- Deprecated: Repository hosts use mTLS for encryption,
- authentication, and authorization.'
+ description: |-
+ ConfigMap containing custom SSH configuration.
+ Deprecated: Repository hosts use mTLS for encryption, authentication, and authorization.
properties:
items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced ConfigMap
- will be projected into the volume as a file whose
- name is the key and content is the value. If specified,
- the listed keys will be projected into the specified
- paths, and unlisted keys will not be present. If
- a key is specified which is not present in the ConfigMap,
- the volume setup will error unless it is marked
- optional. Paths must be relative and may not contain
- the '..' path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ ConfigMap will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the ConfigMap,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within
a volume.
@@ -2379,22 +2499,20 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits used
- to set permissions on this file. Must be an
- octal value between 0000 and 0777 or a decimal
- value between 0 and 511. YAML accepts both
- octal and decimal values, JSON requires decimal
- values for mode bits. If not specified, the
- volume defaultMode will be used. This might
- be in conflict with other options that affect
- the file mode, like fsGroup, and the result
- can be other mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of the
- file to map the key to. May not be an absolute
- path. May not contain the path element '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
May not start with the string '..'.
type: string
required:
@@ -2402,30 +2520,36 @@ spec:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional specify whether the ConfigMap
or its keys must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
sshSecret:
- description: 'Secret containing custom SSH keys. Deprecated:
- Repository hosts use mTLS for encryption, authentication,
- and authorization.'
+ description: |-
+ Secret containing custom SSH keys.
+ Deprecated: Repository hosts use mTLS for encryption, authentication, and authorization.
properties:
items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced Secret
- will be projected into the volume as a file whose
- name is the key and content is the value. If specified,
- the listed keys will be projected into the specified
- paths, and unlisted keys will not be present. If
- a key is specified which is not present in the Secret,
- the volume setup will error unless it is marked
- optional. Paths must be relative and may not contain
- the '..' path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ Secret will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the Secret,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within
a volume.
@@ -2434,22 +2558,20 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits used
- to set permissions on this file. Must be an
- octal value between 0000 and 0777 or a decimal
- value between 0 and 511. YAML accepts both
- octal and decimal values, JSON requires decimal
- values for mode bits. If not specified, the
- volume defaultMode will be used. This might
- be in conflict with other options that affect
- the file mode, like fsGroup, and the result
- can be other mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of the
- file to map the key to. May not be an absolute
- path. May not contain the path element '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
May not start with the string '..'.
type: string
required:
@@ -2457,208 +2579,236 @@ spec:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional field specify whether the Secret
or its key must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
tolerations:
- description: 'Tolerations of a PgBackRest repo host pod.
- Changing this value causes a restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration'
+ description: |-
+ Tolerations of a PgBackRest repo host pod. Changing this value causes a restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
items:
- description: The pod this Toleration is attached to
- tolerates any taint that matches the triple
- using the matching operator .
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
properties:
effect:
- description: Effect indicates the taint effect to
- match. Empty means match all taint effects. When
- specified, allowed values are NoSchedule, PreferNoSchedule
- and NoExecute.
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
type: string
key:
- description: Key is the taint key that the toleration
- applies to. Empty means match all taint keys.
- If the key is empty, operator must be Exists;
- this combination means to match all values and
- all keys.
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
type: string
operator:
- description: Operator represents a key's relationship
- to the value. Valid operators are Exists and Equal.
- Defaults to Equal. Exists is equivalent to wildcard
- for value, so that a pod can tolerate all taints
- of a particular category.
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
type: string
tolerationSeconds:
- description: TolerationSeconds represents the period
- of time the toleration (which must be of effect
- NoExecute, otherwise this field is ignored) tolerates
- the taint. By default, it is not set, which means
- tolerate the taint forever (do not evict). Zero
- and negative values will be treated as 0 (evict
- immediately) by the system.
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
format: int64
type: integer
value:
- description: Value is the taint value the toleration
- matches to. If the operator is Exists, the value
- should be empty, otherwise just a regular string.
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
type: object
type: array
topologySpreadConstraints:
- description: 'Topology spread constraints of a Dedicated
- repo host pod. Changing this value causes the repo host
- to restart. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/'
+ description: |-
+ Topology spread constraints of a Dedicated repo host pod. Changing this
+ value causes the repo host to restart.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
items:
description: TopologySpreadConstraint specifies how
to spread matching pods among the given topology.
properties:
labelSelector:
- description: LabelSelector is used to find matching
- pods. Pods that match this label selector are
- counted to determine the number of pods in their
- corresponding topology domain.
+ description: |-
+ LabelSelector is used to find matching pods.
+ Pods that match this label selector are counted to determine the number of pods
+ in their corresponding topology domain.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a key,
- and an operator that relates the key and
- values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only "value".
- The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select the pods over which
+ spreading will be calculated. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are ANDed with labelSelector
+ to select the group of existing pods over which spreading will be calculated
+ for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
+ MatchLabelKeys cannot be set when LabelSelector isn't set.
+ Keys that don't exist in the incoming pod labels will
+ be ignored. A null or empty list means only match against labelSelector.
+
+ This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
maxSkew:
- description: 'MaxSkew describes the degree to which
- pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,
- it is the maximum permitted difference between
- the number of matching pods in the target topology
- and the global minimum. The global minimum is
- the minimum number of matching pods in an eligible
- domain or zero if the number of eligible domains
- is less than MinDomains. For example, in a 3-zone
- cluster, MaxSkew is set to 1, and pods with the
- same labelSelector spread as 2/2/1: In this case,
- the global minimum is 1. | zone1 | zone2 | zone3
- | | P P | P P | P | - if MaxSkew is 1,
- incoming pod can only be scheduled to zone3 to
- become 2/2/2; scheduling it onto zone1(zone2)
- would make the ActualSkew(3-1) on zone1(zone2)
- violate MaxSkew(1). - if MaxSkew is 2, incoming
- pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`,
- it is used to give higher precedence to topologies
- that satisfy it. It''s a required field. Default
- value is 1 and 0 is not allowed.'
+ description: |-
+ MaxSkew describes the degree to which pods may be unevenly distributed.
+ When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
+ between the number of matching pods in the target topology and the global minimum.
+ The global minimum is the minimum number of matching pods in an eligible domain
+ or zero if the number of eligible domains is less than MinDomains.
+ For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
+ labelSelector spread as 2/2/1:
+ In this case, the global minimum is 1.
+ | zone1 | zone2 | zone3 |
+ | P P | P P | P |
+ - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
+ scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
+ violate MaxSkew(1).
+ - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
+ When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
+ to topologies that satisfy it.
+ It's a required field. Default value is 1 and 0 is not allowed.
format: int32
type: integer
minDomains:
- description: "MinDomains indicates a minimum number
- of eligible domains. When the number of eligible
- domains with matching topology keys is less than
- minDomains, Pod Topology Spread treats \"global
- minimum\" as 0, and then the calculation of Skew
- is performed. And when the number of eligible
- domains with matching topology keys equals or
- greater than minDomains, this value has no effect
- on scheduling. As a result, when the number of
- eligible domains is less than minDomains, scheduler
- won't schedule more than maxSkew Pods to those
- domains. If value is nil, the constraint behaves
- as if MinDomains is equal to 1. Valid values are
- integers greater than 0. When value is not nil,
- WhenUnsatisfiable must be DoNotSchedule. \n For
- example, in a 3-zone cluster, MaxSkew is set to
- 2, MinDomains is set to 5 and pods with the same
- labelSelector spread as 2/2/2: | zone1 | zone2
- | zone3 | | P P | P P | P P | The number
- of domains is less than 5(MinDomains), so \"global
- minimum\" is treated as 0. In this situation,
- new pod with the same labelSelector cannot be
- scheduled, because computed skew will be 3(3 -
- 0) if new Pod is scheduled to any of the three
- zones, it will violate MaxSkew. \n This is an
- alpha field and requires enabling MinDomainsInPodTopologySpread
- feature gate."
+ description: |-
+ MinDomains indicates a minimum number of eligible domains.
+ When the number of eligible domains with matching topology keys is less than minDomains,
+ Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
+ And when the number of eligible domains with matching topology keys equals or greater than minDomains,
+ this value has no effect on scheduling.
+ As a result, when the number of eligible domains is less than minDomains,
+ scheduler won't schedule more than maxSkew Pods to those domains.
+ If value is nil, the constraint behaves as if MinDomains is equal to 1.
+ Valid values are integers greater than 0.
+ When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
+
+ For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
+ labelSelector spread as 2/2/2:
+ | zone1 | zone2 | zone3 |
+ | P P | P P | P P |
+ The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
+ In this situation, new pod with the same labelSelector cannot be scheduled,
+ because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
+ it will violate MaxSkew.
format: int32
type: integer
+ nodeAffinityPolicy:
+ description: |-
+ NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
+ when calculating pod topology spread skew. Options are:
+ - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
+ - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
+
+ If this value is nil, the behavior is equivalent to the Honor policy.
+ This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
+ type: string
+ nodeTaintsPolicy:
+ description: |-
+ NodeTaintsPolicy indicates how we will treat node taints when calculating
+ pod topology spread skew. Options are:
+ - Honor: nodes without taints, along with tainted nodes for which the incoming pod
+ has a toleration, are included.
+ - Ignore: node taints are ignored. All nodes are included.
+
+ If this value is nil, the behavior is equivalent to the Ignore policy.
+ This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
+ type: string
topologyKey:
- description: TopologyKey is the key of node labels.
- Nodes that have a label with this key and identical
- values are considered to be in the same topology.
- We consider each as a "bucket", and
- try to put balanced number of pods into each bucket.
- We define a domain as a particular instance of
- a topology. Also, we define an eligible domain
- as a domain whose nodes match the node selector.
- e.g. If TopologyKey is "kubernetes.io/hostname",
- each Node is a domain of that topology. And, if
- TopologyKey is "topology.kubernetes.io/zone",
- each zone is a domain of that topology. It's a
- required field.
+ description: |-
+ TopologyKey is the key of node labels. Nodes that have a label with this key
+ and identical values are considered to be in the same topology.
+ We consider each as a "bucket", and try to put balanced number
+ of pods into each bucket.
+ We define a domain as a particular instance of a topology.
+ Also, we define an eligible domain as a domain whose nodes meet the requirements of
+ nodeAffinityPolicy and nodeTaintsPolicy.
+ e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
+ And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
+ It's a required field.
type: string
whenUnsatisfiable:
- description: 'WhenUnsatisfiable indicates how to
- deal with a pod if it doesn''t satisfy the spread
- constraint. - DoNotSchedule (default) tells the
- scheduler not to schedule it. - ScheduleAnyway
- tells the scheduler to schedule the pod in any
- location, but giving higher precedence to topologies
- that would help reduce the skew. A constraint
- is considered "Unsatisfiable" for an incoming
- pod if and only if every possible node assignment
- for that pod would violate "MaxSkew" on some topology.
- For example, in a 3-zone cluster, MaxSkew is set
- to 1, and pods with the same labelSelector spread
- as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P |
- If WhenUnsatisfiable is set to DoNotSchedule,
- incoming pod can only be scheduled to zone2(zone3)
- to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3)
- satisfies MaxSkew(1). In other words, the cluster
- can still be imbalanced, but scheduler won''t
- make it *more* imbalanced. It''s a required field.'
+ description: |-
+ WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
+ the spread constraint.
+ - DoNotSchedule (default) tells the scheduler not to schedule it.
+ - ScheduleAnyway tells the scheduler to schedule the pod in any location,
+ but giving higher precedence to topologies that would help reduce the
+ skew.
+ A constraint is considered "Unsatisfiable" for an incoming pod
+ if and only if every possible node assignment for that pod would violate
+ "MaxSkew" on some topology.
+ For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
+ labelSelector spread as 3/1/1:
+ | zone1 | zone2 | zone3 |
+ | P P P | P | P |
+ If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
+ to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
+ MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
+ won't make it *more* imbalanced.
+ It's a required field.
type: string
required:
- maxSkew
@@ -2695,12 +2845,13 @@ spec:
- bucket
type: object
name:
- description: The name of the the repository
+ description: The name of the repository
pattern: ^repo[1-4]
type: string
s3:
- description: RepoS3 represents a pgBackRest repository
- that is created using AWS S3 (or S3-compatible) storage
+ description: |-
+ RepoS3 represents a pgBackRest repository that is created using AWS S3 (or S3-compatible)
+ storage
properties:
bucket:
description: The S3 bucket utilized for the repository
@@ -2719,26 +2870,30 @@ spec:
- region
type: object
schedules:
- description: 'Defines the schedules for the pgBackRest
- backups Full, Differential and Incremental backup
- types are supported: https://pgbackrest.org/user-guide.html#concept/backup'
+ description: |-
+ Defines the schedules for the pgBackRest backups
+ Full, Differential and Incremental backup types are supported:
+ https://pgbackrest.org/user-guide.html#concept/backup
properties:
differential:
- description: 'Defines the Cron schedule for a differential
- pgBackRest backup. Follows the standard Cron schedule
- syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax'
+ description: |-
+ Defines the Cron schedule for a differential pgBackRest backup.
+ Follows the standard Cron schedule syntax:
+ https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax
minLength: 6
type: string
full:
- description: 'Defines the Cron schedule for a full
- pgBackRest backup. Follows the standard Cron schedule
- syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax'
+ description: |-
+ Defines the Cron schedule for a full pgBackRest backup.
+ Follows the standard Cron schedule syntax:
+ https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax
minLength: 6
type: string
incremental:
- description: 'Defines the Cron schedule for an incremental
- pgBackRest backup. Follows the standard Cron schedule
- syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax'
+ description: |-
+ Defines the Cron schedule for an incremental pgBackRest backup.
+ Follows the standard Cron schedule syntax:
+ https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax
minLength: 6
type: string
type: object
@@ -2751,32 +2906,29 @@ spec:
used to create and/or bind a volume
properties:
accessModes:
- description: 'accessModes contains the desired
- access modes the volume should have. More
- info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
+ description: |-
+ accessModes contains the desired access modes the volume should have.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
items:
type: string
- minItems: 1
type: array
+ x-kubernetes-list-type: atomic
dataSource:
- description: 'dataSource field can be used to
- specify either: * An existing VolumeSnapshot
- object (snapshot.storage.k8s.io/VolumeSnapshot)
+ description: |-
+ dataSource field can be used to specify either:
+ * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
* An existing PVC (PersistentVolumeClaim)
- If the provisioner or an external controller
- can support the specified data source, it
- will create a new volume based on the contents
- of the specified data source. If the AnyVolumeDataSource
- feature gate is enabled, this field will always
- have the same contents as the DataSourceRef
- field.'
+ If the provisioner or an external controller can support the specified data source,
+ it will create a new volume based on the contents of the specified data source.
+ When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
+ and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
+ If the namespace is specified, then dataSourceRef will not be copied to dataSource.
properties:
apiGroup:
- description: APIGroup is the group for the
- resource being referenced. If APIGroup
- is not specified, the specified Kind must
- be in the core API group. For any other
- third-party types, APIGroup is required.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
+ For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource
@@ -2790,40 +2942,38 @@ spec:
- kind
- name
type: object
+ x-kubernetes-map-type: atomic
dataSourceRef:
- description: 'dataSourceRef specifies the object
- from which to populate the volume with data,
- if a non-empty volume is desired. This may
- be any local object from a non-empty API group
- (non core object) or a PersistentVolumeClaim
- object. When this field is specified, volume
- binding will only succeed if the type of the
- specified object matches some installed volume
- populator or dynamic provisioner. This field
- will replace the functionality of the DataSource
- field and as such if both fields are non-empty,
- they must have the same value. For backwards
- compatibility, both fields (DataSource and
- DataSourceRef) will be set to the same value
- automatically if one of them is empty and
- the other is non-empty. There are two important
- differences between DataSource and DataSourceRef:
- * While DataSource only allows two specific
- types of objects, DataSourceRef allows any
- non-core object, as well as PersistentVolumeClaim
- objects. * While DataSource ignores disallowed
- values (dropping them), DataSourceRef preserves
- all values, and generates an error if a disallowed
- value is specified. (Beta) Using this field
- requires the AnyVolumeDataSource feature gate
- to be enabled.'
+ description: |-
+ dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
+ volume is desired. This may be any object from a non-empty API group (non
+ core object) or a PersistentVolumeClaim object.
+ When this field is specified, volume binding will only succeed if the type of
+ the specified object matches some installed volume populator or dynamic
+ provisioner.
+ This field will replace the functionality of the dataSource field and as such
+ if both fields are non-empty, they must have the same value. For backwards
+ compatibility, when namespace isn't specified in dataSourceRef,
+ both fields (dataSource and dataSourceRef) will be set to the same
+ value automatically if one of them is empty and the other is non-empty.
+ When namespace is specified in dataSourceRef,
+ dataSource isn't set to the same value and must be empty.
+ There are three important differences between dataSource and dataSourceRef:
+ * While dataSource only allows two specific types of objects, dataSourceRef
+ allows any non-core object, as well as PersistentVolumeClaim objects.
+ * While dataSource ignores disallowed values (dropping them), dataSourceRef
+ preserves all values, and generates an error if a disallowed value is
+ specified.
+ * While dataSource only allows local objects, dataSourceRef allows objects
+ in any namespaces.
+ (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
+ (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
properties:
apiGroup:
- description: APIGroup is the group for the
- resource being referenced. If APIGroup
- is not specified, the specified Kind must
- be in the core API group. For any other
- third-party types, APIGroup is required.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
+ For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource
@@ -2833,18 +2983,23 @@ spec:
description: Name is the name of resource
being referenced
type: string
+ namespace:
+ description: |-
+ Namespace is the namespace of resource being referenced
+ Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
+ (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
+ type: string
required:
- kind
- name
type: object
resources:
- description: 'resources represents the minimum
- resources the volume should have. If RecoverVolumeExpansionFailure
- feature is enabled users are allowed to specify
- resource requirements that are lower than
- previous value but must still be higher than
- capacity recorded in the status field of the
- claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
+ description: |-
+ resources represents the minimum resources the volume should have.
+ If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
+ that are lower than previous value but must still be higher than capacity recorded in the
+ status field of the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
properties:
limits:
additionalProperties:
@@ -2853,9 +3008,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum
- amount of compute resources allowed. More
- info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -2864,17 +3019,12 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum
- amount of compute resources required.
- If Requests is omitted for a container,
- it defaults to Limits if that is explicitly
- specified, otherwise to an implementation-defined
- value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
- required:
- - storage
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
- required:
- - requests
type: object
selector:
description: selector is a label query over
@@ -2885,68 +3035,82 @@ spec:
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
storageClassName:
- description: 'storageClassName is the name of
- the StorageClass required by the claim. More
- info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
+ description: |-
+ storageClassName is the name of the StorageClass required by the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
+ type: string
+ volumeAttributesClassName:
+ description: |-
+ volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
+ If specified, the CSI driver will create or update the volume with the attributes defined
+ in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
+ it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
+ will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
+ If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
+ will be set by the persistentvolume controller if it exists.
+ If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
+ set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
+ exists.
+ More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
+ (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
type: string
volumeMode:
- description: volumeMode defines what type of
- volume is required by the claim. Value of
- Filesystem is implied when not included in
- claim spec.
+ description: |-
+ volumeMode defines what type of volume is required by the claim.
+ Value of Filesystem is implied when not included in claim spec.
type: string
volumeName:
description: volumeName is the binding reference
to the PersistentVolume backing this claim.
type: string
- required:
- - accessModes
- - resources
type: object
+ x-kubernetes-validations:
+ - message: missing accessModes
+ rule: has(self.accessModes) && size(self.accessModes)
+ > 0
+ - message: missing storage request
+ rule: has(self.resources) && has(self.resources.requests)
+ && has(self.resources.requests.storage)
required:
- volumeClaimSpec
type: object
@@ -2963,32 +3127,29 @@ spec:
using pgBackRest
properties:
affinity:
- description: 'Scheduling constraints of the pgBackRest
- restore Job. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node'
+ description: |-
+ Scheduling constraints of the pgBackRest restore Job.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
properties:
nodeAffinity:
description: Describes node affinity scheduling rules
for the pod.
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a
- node that violates one or more of the expressions.
- The node that is most preferred is the one with
- the greatest sum of weights, i.e. for each node
- that meets all of the scheduling requirements
- (resource request, requiredDuringScheduling
- affinity expressions, etc.), compute a sum by
- iterating through the elements of this field
- and adding "weight" to the sum if the node matches
- the corresponding matchExpressions; the node(s)
- with the highest sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node matches the corresponding matchExpressions; the
+ node(s) with the highest sum are the most preferred.
items:
- description: An empty preferred scheduling term
- matches all objects with implicit weight 0
- (i.e. it's a no-op). A null preferred scheduling
- term matches no objects (i.e. is also a no-op).
+ description: |-
+ An empty preferred scheduling term matches all objects with implicit weight 0
+ (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
properties:
preference:
description: A node selector term, associated
@@ -2998,85 +3159,72 @@ spec:
description: A list of node selector
requirements by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
- description: Represents a key's
- relationship to a set of values.
- Valid operators are In, NotIn,
- Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string
- values. If the operator is In
- or NotIn, the values array must
- be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- If the operator is Gt or Lt,
- the values array must have a
- single element, which will be
- interpreted as an integer. This
- array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector
requirements by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
- description: Represents a key's
- relationship to a set of values.
- Valid operators are In, NotIn,
- Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string
- values. If the operator is In
- or NotIn, the values array must
- be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- If the operator is Gt or Lt,
- the values array must have a
- single element, which will be
- interpreted as an integer. This
- array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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:
description: Weight associated with matching
the corresponding nodeSelectorTerm, in
@@ -3088,112 +3236,100 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time,
- the pod will not be scheduled onto the node.
- If the affinity requirements specified by this
- field cease to be met at some point during pod
- execution (e.g. due to an update), the system
- may or may not try to eventually evict the pod
- from its node.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to an update), the system
+ may or may not try to eventually evict the pod from its node.
properties:
nodeSelectorTerms:
description: Required. A list of node selector
terms. The terms are ORed.
items:
- description: A null or empty node selector
- term matches no objects. The requirements
- of them are ANDed. The TopologySelectorTerm
- type implements a subset of the NodeSelectorTerm.
+ description: |-
+ A null or empty node selector term matches no objects. The requirements of
+ them are ANDed.
+ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
properties:
matchExpressions:
description: A list of node selector
requirements by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
- description: Represents a key's
- relationship to a set of values.
- Valid operators are In, NotIn,
- Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string
- values. If the operator is In
- or NotIn, the values array must
- be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- If the operator is Gt or Lt,
- the values array must have a
- single element, which will be
- interpreted as an integer. This
- array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector
requirements by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that
the selector applies to.
type: string
operator:
- description: Represents a key's
- relationship to a set of values.
- Valid operators are In, NotIn,
- Exists, DoesNotExist. Gt, and
- Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string
- values. If the operator is In
- or NotIn, the values array must
- be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- If the operator is Gt or Lt,
- the values array must have a
- single element, which will be
- interpreted as an integer. This
- array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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
+ x-kubernetes-map-type: atomic
type: object
podAffinity:
description: Describes pod affinity scheduling rules
@@ -3201,20 +3337,16 @@ spec:
etc. as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a
- node that violates one or more of the expressions.
- The node that is most preferred is the one with
- the greatest sum of weights, i.e. for each node
- that meets all of the scheduling requirements
- (resource request, requiredDuringScheduling
- affinity expressions, etc.), compute a sum by
- iterating through the elements of this field
- and adding "weight" to the sum if the node has
- pods which matches the corresponding podAffinityTerm;
- the node(s) with the highest sum are the most
- preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched
WeightedPodAffinityTerm fields are added per-node
@@ -3225,19 +3357,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set
- of resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is
a list of label selector requirements.
The requirements are ANDed.
items:
- description: A label selector
- requirement is a selector that
- contains values, a key, and
- an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -3245,66 +3376,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to
- a set of values. Valid operators
- are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an
- array of string values.
- If the operator is In or
- NotIn, the values array
- must be non-empty. If the
- operator is Exists or DoesNotExist,
- the values array must be
- empty. This array is replaced
- during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map
- of {key,value} pairs. A single
- {key,value} in the matchLabels
- map is equivalent to an element
- of matchExpressions, whose key
- field is "key", the operator is
- "In", and the values array contains
- only "value". The requirements
- are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the
- set of namespaces that the term applies
- to. The term is applied to the union
- of the namespaces selected by this
- field and the ones listed in the namespaces
- field. null selector and null or empty
- namespaces list means "this pod's
- namespace". An empty selector ({})
- matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is
a list of label selector requirements.
The requirements are ANDed.
items:
- description: A label selector
- requirement is a selector that
- contains values, a key, and
- an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -3312,76 +3459,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to
- a set of values. Valid operators
- are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an
- array of string values.
- If the operator is In or
- NotIn, the values array
- must be non-empty. If the
- operator is Exists or DoesNotExist,
- the values array must be
- empty. This array is replaced
- during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map
- of {key,value} pairs. A single
- {key,value} in the matchLabels
- map is equivalent to an element
- of matchExpressions, whose key
- field is "key", the operator is
- "In", and the values array contains
- only "value". The requirements
- are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a
- static list of namespace names that
- the term applies to. The term is applied
- to the union of the namespaces listed
- in this field and the ones selected
- by namespaceSelector. null or empty
- namespaces list and null namespaceSelector
- means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where
- co-located is defined as running on
- a node whose value of the label with
- key topologyKey matches that of any
- node on which any of the selected
- pods is running. Empty topologyKey
- is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in
- the range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -3389,41 +3521,38 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time,
- the pod will not be scheduled onto the node.
- If the affinity requirements specified by this
- field cease to be met at some point during pod
- execution (e.g. due to a pod label update),
- the system may or may not try to eventually
- evict the pod from its node. When there are
- multiple elements, the lists of nodes corresponding
- to each podAffinityTerm are intersected, i.e.
- all terms must be satisfied.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the
- given namespace(s)) that this pod should be
- co-located (affinity) or not co-located (anti-affinity)
- with, where co-located is defined as running
- on a node whose value of the label with key
- matches that of any node on
- which a pod of the set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -3431,60 +3560,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -3492,67 +3643,59 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
podAntiAffinity:
description: Describes pod anti-affinity scheduling
@@ -3560,20 +3703,16 @@ spec:
zone, etc. as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the anti-affinity
- expressions specified by this field, but it
- may choose a node that violates one or more
- of the expressions. The node that is most preferred
- is the one with the greatest sum of weights,
- i.e. for each node that meets all of the scheduling
- requirements (resource request, requiredDuringScheduling
- anti-affinity expressions, etc.), compute a
- sum by iterating through the elements of this
- field and adding "weight" to the sum if the
- node has pods which matches the corresponding
- podAffinityTerm; the node(s) with the highest
- sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the anti-affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling anti-affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched
WeightedPodAffinityTerm fields are added per-node
@@ -3584,19 +3723,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set
- of resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is
a list of label selector requirements.
The requirements are ANDed.
items:
- description: A label selector
- requirement is a selector that
- contains values, a key, and
- an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -3604,66 +3742,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to
- a set of values. Valid operators
- are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an
- array of string values.
- If the operator is In or
- NotIn, the values array
- must be non-empty. If the
- operator is Exists or DoesNotExist,
- the values array must be
- empty. This array is replaced
- during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map
- of {key,value} pairs. A single
- {key,value} in the matchLabels
- map is equivalent to an element
- of matchExpressions, whose key
- field is "key", the operator is
- "In", and the values array contains
- only "value". The requirements
- are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the
- set of namespaces that the term applies
- to. The term is applied to the union
- of the namespaces selected by this
- field and the ones listed in the namespaces
- field. null selector and null or empty
- namespaces list means "this pod's
- namespace". An empty selector ({})
- matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is
a list of label selector requirements.
The requirements are ANDed.
items:
- description: A label selector
- requirement is a selector that
- contains values, a key, and
- an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -3671,76 +3825,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to
- a set of values. Valid operators
- are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an
- array of string values.
- If the operator is In or
- NotIn, the values array
- must be non-empty. If the
- operator is Exists or DoesNotExist,
- the values array must be
- empty. This array is replaced
- during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map
- of {key,value} pairs. A single
- {key,value} in the matchLabels
- map is equivalent to an element
- of matchExpressions, whose key
- field is "key", the operator is
- "In", and the values array contains
- only "value". The requirements
- are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a
- static list of namespace names that
- the term applies to. The term is applied
- to the union of the namespaces listed
- in this field and the ones selected
- by namespaceSelector. null or empty
- namespaces list and null namespaceSelector
- means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where
- co-located is defined as running on
- a node whose value of the label with
- key topologyKey matches that of any
- node on which any of the selected
- pods is running. Empty topologyKey
- is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in
- the range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -3748,41 +3887,38 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the anti-affinity requirements
- specified by this field are not met at scheduling
- time, the pod will not be scheduled onto the
- node. If the anti-affinity requirements specified
- by this field cease to be met at some point
- during pod execution (e.g. due to a pod label
- update), the system may or may not try to eventually
- evict the pod from its node. When there are
- multiple elements, the lists of nodes corresponding
- to each podAffinityTerm are intersected, i.e.
- all terms must be satisfied.
+ description: |-
+ If the anti-affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the anti-affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the
- given namespace(s)) that this pod should be
- co-located (affinity) or not co-located (anti-affinity)
- with, where co-located is defined as running
- on a node whose value of the label with key
- matches that of any node on
- which a pod of the set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -3790,60 +3926,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -3851,80 +4009,70 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
type: object
clusterName:
- description: The name of an existing PostgresCluster to
- use as the data source for the new PostgresCluster.
- Defaults to the name of the PostgresCluster being created
- if not provided.
+ description: |-
+ The name of an existing PostgresCluster to use as the data source for the new PostgresCluster.
+ Defaults to the name of the PostgresCluster being created if not provided.
type: string
clusterNamespace:
- description: The namespace of the cluster specified as
- the data source using the clusterName field. Defaults
- to the namespace of the PostgresCluster being created
- if not provided.
+ description: |-
+ The namespace of the cluster specified as the data source using the clusterName field.
+ Defaults to the namespace of the PostgresCluster being created if not provided.
type: string
enabled:
default: false
@@ -3932,27 +4080,55 @@ spec:
are enabled for this PostgresCluster.
type: boolean
options:
- description: Command line options to include when running
- the pgBackRest restore command. https://pgbackrest.org/command.html#command-restore
+ description: |-
+ Command line options to include when running the pgBackRest restore command.
+ https://pgbackrest.org/command.html#command-restore
items:
type: string
type: array
priorityClassName:
- description: 'Priority class name for the pgBackRest restore
- Job pod. Changing this value causes PostgreSQL to restart.
- More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/'
+ description: |-
+ Priority class name for the pgBackRest restore Job pod. Changing this
+ value causes PostgreSQL to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
type: string
repoName:
- description: The name of the pgBackRest repo within the
- source PostgresCluster that contains the backups that
- should be utilized to perform a pgBackRest restore when
- initializing the data source for the new PostgresCluster.
+ description: |-
+ The name of the pgBackRest repo within the source PostgresCluster that contains the backups
+ that should be utilized to perform a pgBackRest restore when initializing the data source
+ for the new PostgresCluster.
pattern: ^repo[1-4]
type: string
resources:
description: Resource requirements for the pgBackRest
restore Job.
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry
+ in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -3960,8 +4136,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount
- of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -3970,55 +4147,51 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is omitted
- for a container, it defaults to Limits if that is
- explicitly specified, otherwise to an implementation-defined
- value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
tolerations:
- description: 'Tolerations of the pgBackRest restore Job.
- More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration'
+ description: |-
+ Tolerations of the pgBackRest restore Job.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
items:
- description: The pod this Toleration is attached to
- tolerates any taint that matches the triple
- using the matching operator .
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
properties:
effect:
- description: Effect indicates the taint effect to
- match. Empty means match all taint effects. When
- specified, allowed values are NoSchedule, PreferNoSchedule
- and NoExecute.
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
type: string
key:
- description: Key is the taint key that the toleration
- applies to. Empty means match all taint keys.
- If the key is empty, operator must be Exists;
- this combination means to match all values and
- all keys.
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
type: string
operator:
- description: Operator represents a key's relationship
- to the value. Valid operators are Exists and Equal.
- Defaults to Equal. Exists is equivalent to wildcard
- for value, so that a pod can tolerate all taints
- of a particular category.
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
type: string
tolerationSeconds:
- description: TolerationSeconds represents the period
- of time the toleration (which must be of effect
- NoExecute, otherwise this field is ignored) tolerates
- the taint. By default, it is not set, which means
- tolerate the taint forever (do not evict). Zero
- and negative values will be treated as 0 (evict
- immediately) by the system.
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
format: int64
type: integer
value:
- description: Value is the taint value the toleration
- matches to. If the operator is Exists, the value
- should be empty, otherwise just a regular string.
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
type: object
type: array
@@ -4036,6 +4209,32 @@ spec:
resources:
description: Resource requirements for a sidecar container
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry
+ in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -4043,8 +4242,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount
- of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -4053,12 +4253,11 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is
- omitted for a container, it defaults to Limits
- if that is explicitly specified, otherwise to
- an implementation-defined value. More info:
- https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
type: object
@@ -4069,6 +4268,32 @@ spec:
resources:
description: Resource requirements for a sidecar container
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry
+ in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -4076,8 +4301,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount
- of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -4086,12 +4312,11 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is
- omitted for a container, it defaults to Limits
- if that is explicitly specified, otherwise to
- an implementation-defined value. More info:
- https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
type: object
@@ -4099,8 +4324,17 @@ spec:
required:
- repos
type: object
- required:
- - pgbackrest
+ snapshots:
+ description: VolumeSnapshot configuration
+ properties:
+ volumeSnapshotClassName:
+ description: Name of the VolumeSnapshotClass that should be
+ used by VolumeSnapshots
+ minLength: 1
+ type: string
+ required:
+ - volumeSnapshotClassName
+ type: object
type: object
config:
properties:
@@ -4109,21 +4343,111 @@ spec:
description: Projection that may be projected along with other
supported volume types
properties:
+ clusterTrustBundle:
+ description: |-
+ ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
+ of ClusterTrustBundle objects in an auto-updating file.
+
+ Alpha, gated by the ClusterTrustBundleProjection feature gate.
+
+ ClusterTrustBundle objects can either be selected by name, or by the
+ combination of signer name and a label selector.
+
+ Kubelet performs aggressive normalization of the PEM contents written
+ into the pod filesystem. Esoteric PEM features such as inter-block
+ comments and block headers are stripped. Certificates are deduplicated.
+ The ordering of certificates within the file is arbitrary, and Kubelet
+ may change the order over time.
+ properties:
+ labelSelector:
+ description: |-
+ Select all ClusterTrustBundles that match this label selector. Only has
+ effect if signerName is set. Mutually-exclusive with name. If unset,
+ interpreted as "match nothing". If set but empty, interpreted as "match
+ everything".
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that the
+ selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ 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
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ name:
+ description: |-
+ Select a single ClusterTrustBundle by object name. Mutually-exclusive
+ with signerName and labelSelector.
+ type: string
+ optional:
+ description: |-
+ If true, don't block pod startup if the referenced ClusterTrustBundle(s)
+ aren't available. If using name, then the named ClusterTrustBundle is
+ allowed not to exist. If using signerName, then the combination of
+ signerName and labelSelector is allowed to match zero
+ ClusterTrustBundles.
+ type: boolean
+ path:
+ description: Relative path from the volume root to write
+ the bundle.
+ type: string
+ signerName:
+ description: |-
+ Select all ClusterTrustBundles that match this signer name.
+ Mutually-exclusive with name. The contents of all selected
+ ClusterTrustBundles will be unified and deduplicated.
+ type: string
+ required:
+ - path
+ type: object
configMap:
description: configMap information about the configMap data
to project
properties:
items:
- description: items if unspecified, each key-value pair
- in the Data field of the referenced ConfigMap will
- be projected into the volume as a file whose name
- is the key and content is the value. If specified,
- the listed keys will be projected into the specified
- paths, and unlisted keys will not be present. If a
- key is specified which is not present in the ConfigMap,
- the volume setup will error unless it is marked optional.
- Paths must be relative and may not contain the '..'
- path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ ConfigMap will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the ConfigMap,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within a
volume.
@@ -4132,22 +4456,20 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits used
- to set permissions on this file. Must be an
- octal value between 0000 and 0777 or a decimal
- value between 0 and 511. YAML accepts both octal
- and decimal values, JSON requires decimal values
- for mode bits. If not specified, the volume
- defaultMode will be used. This might be in conflict
- with other options that affect the file mode,
- like fsGroup, and the result can be other mode
- bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of the
- file to map the key to. May not be an absolute
- path. May not contain the path element '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
May not start with the string '..'.
type: string
required:
@@ -4155,14 +4477,22 @@ spec:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional specify whether the ConfigMap
or its keys must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
downwardAPI:
description: downwardAPI information about the downwardAPI
data to project
@@ -4175,8 +4505,8 @@ spec:
properties:
fieldRef:
description: 'Required: Selects a field of the
- pod: only annotations, labels, name and namespace
- are supported.'
+ pod: only annotations, labels, name, namespace
+ and uid are supported.'
properties:
apiVersion:
description: Version of the schema the FieldPath
@@ -4189,17 +4519,15 @@ spec:
required:
- fieldPath
type: object
+ x-kubernetes-map-type: atomic
mode:
- description: 'Optional: mode bits used to set
- permissions on this file, must be an octal value
- between 0000 and 0777 or a decimal value between
- 0 and 511. YAML accepts both octal and decimal
- values, JSON requires decimal values for mode
- bits. If not specified, the volume defaultMode
- will be used. This might be in conflict with
- other options that affect the file mode, like
- fsGroup, and the result can be other mode bits
- set.'
+ description: |-
+ Optional: mode bits used to set permissions on this file, must be an octal value
+ between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
@@ -4210,10 +4538,9 @@ spec:
path must not start with ''..'''
type: string
resourceFieldRef:
- description: 'Selects a resource of the container:
- only resources limits and requests (limits.cpu,
- limits.memory, requests.cpu and requests.memory)
- are currently supported.'
+ description: |-
+ Selects a resource of the container: only resources limits and requests
+ (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
properties:
containerName:
description: 'Container name: required for
@@ -4233,26 +4560,26 @@ spec:
required:
- resource
type: object
+ x-kubernetes-map-type: atomic
required:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
secret:
description: secret information about the secret data to
project
properties:
items:
- description: items if unspecified, each key-value pair
- in the Data field of the referenced Secret will be
- projected into the volume as a file whose name is
- the key and content is the value. If specified, the
- listed keys will be projected into the specified paths,
- and unlisted keys will not be present. If a key is
- specified which is not present in the Secret, the
- volume setup will error unless it is marked optional.
- Paths must be relative and may not contain the '..'
- path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ Secret will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the Secret,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within a
volume.
@@ -4261,22 +4588,20 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits used
- to set permissions on this file. Must be an
- octal value between 0000 and 0777 or a decimal
- value between 0 and 511. YAML accepts both octal
- and decimal values, JSON requires decimal values
- for mode bits. If not specified, the volume
- defaultMode will be used. This might be in conflict
- with other options that affect the file mode,
- like fsGroup, and the result can be other mode
- bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of the
- file to map the key to. May not be an absolute
- path. May not contain the path element '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
May not start with the string '..'.
type: string
required:
@@ -4284,39 +4609,47 @@ spec:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional field specify whether the Secret
or its key must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
serviceAccountToken:
description: serviceAccountToken is information about the
serviceAccountToken data to project
properties:
audience:
- description: audience is the intended audience of the
- token. A recipient of a token must identify itself
- with an identifier specified in the audience of the
- token, and otherwise should reject the token. The
- audience defaults to the identifier of the apiserver.
+ description: |-
+ audience is the intended audience of the token. A recipient of a token
+ must identify itself with an identifier specified in the audience of the
+ token, and otherwise should reject the token. The audience defaults to the
+ identifier of the apiserver.
type: string
expirationSeconds:
- description: expirationSeconds is the requested duration
- of validity of the service account token. As the token
- approaches expiration, the kubelet volume plugin will
- proactively rotate the service account token. The
- kubelet will start trying to rotate the token if the
- token is older than 80 percent of its time to live
- or if the token is older than 24 hours.Defaults to
- 1 hour and must be at least 10 minutes.
+ description: |-
+ expirationSeconds is the requested duration of validity of the service
+ account token. As the token approaches expiration, the kubelet volume
+ plugin will proactively rotate the service account token. The kubelet will
+ start trying to rotate the token if the token is older than 80 percent of
+ its time to live or if the token is older than 24 hours.Defaults to 1 hour
+ and must be at least 10 minutes.
format: int64
type: integer
path:
- description: path is the path relative to the mount
- point of the file to project the token into.
+ description: |-
+ path is the path relative to the mount point of the file to project the
+ token into.
type: string
required:
- path
@@ -4325,23 +4658,23 @@ spec:
type: array
type: object
customReplicationTLSSecret:
- description: 'The secret containing the replication client certificates
- and keys for secure connections to the PostgreSQL server. It will
- need to contain the client TLS certificate, TLS key and the Certificate
- Authority certificate with the data keys set to tls.crt, tls.key
- and ca.crt, respectively. NOTE: If CustomReplicationClientTLSSecret
- is provided, CustomTLSSecret MUST be provided and the ca.crt provided
- must be the same.'
+ description: |-
+ The secret containing the replication client certificates and keys for
+ secure connections to the PostgreSQL server. It will need to contain the
+ client TLS certificate, TLS key and the Certificate Authority certificate
+ with the data keys set to tls.crt, tls.key and ca.crt, respectively.
+ NOTE: If CustomReplicationClientTLSSecret is provided, CustomTLSSecret
+ MUST be provided and the ca.crt provided must be the same.
properties:
items:
- description: items if unspecified, each key-value pair in the
- Data field of the referenced Secret will be projected into the
- volume as a file whose name is the key and content is the value.
- If specified, the listed keys will be projected into the specified
- paths, and unlisted keys will not be present. If a key is specified
- which is not present in the Secret, the volume setup will error
- unless it is marked optional. Paths must be relative and may
- not contain the '..' path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ Secret will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the Secret,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within a volume.
properties:
@@ -4349,54 +4682,64 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits used to set permissions
- on this file. Must be an octal value between 0000 and
- 0777 or a decimal value between 0 and 511. YAML accepts
- both octal and decimal values, JSON requires decimal values
- for mode bits. If not specified, the volume defaultMode
- will be used. This might be in conflict with other options
- that affect the file mode, like fsGroup, and the result
- can be other mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of the file to map
- the key to. May not be an absolute path. May not contain
- the path element '..'. May not start with the string '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional field specify whether the Secret or its
key must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
customTLSSecret:
- description: 'The secret containing the Certificates and Keys to encrypt
- PostgreSQL traffic will need to contain the server TLS certificate,
- TLS key and the Certificate Authority certificate with the data
- keys set to tls.crt, tls.key and ca.crt, respectively. It will then
- be mounted as a volume projection to the ''/pgconf/tls'' directory.
- For more information on Kubernetes secret projections, please see
+ description: |-
+ The secret containing the Certificates and Keys to encrypt PostgreSQL
+ traffic will need to contain the server TLS certificate, TLS key and the
+ Certificate Authority certificate with the data keys set to tls.crt,
+ tls.key and ca.crt, respectively. It will then be mounted as a volume
+ projection to the '/pgconf/tls' directory. For more information on
+ Kubernetes secret projections, please see
https://k8s.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths
NOTE: If CustomTLSSecret is provided, CustomReplicationClientTLSSecret
- MUST be provided and the ca.crt provided must be the same.'
+ MUST be provided and the ca.crt provided must be the same.
properties:
items:
- description: items if unspecified, each key-value pair in the
- Data field of the referenced Secret will be projected into the
- volume as a file whose name is the key and content is the value.
- If specified, the listed keys will be projected into the specified
- paths, and unlisted keys will not be present. If a key is specified
- which is not present in the Secret, the volume setup will error
- unless it is marked optional. Paths must be relative and may
- not contain the '..' path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ Secret will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the Secret,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within a volume.
properties:
@@ -4404,72 +4747,78 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits used to set permissions
- on this file. Must be an octal value between 0000 and
- 0777 or a decimal value between 0 and 511. YAML accepts
- both octal and decimal values, JSON requires decimal values
- for mode bits. If not specified, the volume defaultMode
- will be used. This might be in conflict with other options
- that affect the file mode, like fsGroup, and the result
- can be other mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of the file to map
- the key to. May not be an absolute path. May not contain
- the path element '..'. May not start with the string '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional field specify whether the Secret or its
key must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
dataSource:
description: Specifies a data source for bootstrapping the PostgreSQL
cluster.
properties:
pgbackrest:
- description: 'Defines a pgBackRest cloud-based data source that
- can be used to pre-populate the the PostgreSQL data directory
- for a new PostgreSQL cluster using a pgBackRest restore. The
- PGBackRest field is incompatible with the PostgresCluster field:
- only one data source can be used for pre-populating a new PostgreSQL
- cluster'
+ description: |-
+ Defines a pgBackRest cloud-based data source that can be used to pre-populate the
+ PostgreSQL data directory for a new PostgreSQL cluster using a pgBackRest restore.
+ The PGBackRest field is incompatible with the PostgresCluster field: only one
+ data source can be used for pre-populating a new PostgreSQL cluster
properties:
affinity:
- description: 'Scheduling constraints of the pgBackRest restore
- Job. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node'
+ description: |-
+ Scheduling constraints of the pgBackRest restore Job.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
properties:
nodeAffinity:
description: Describes node affinity scheduling rules
for the pod.
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the
- greatest sum of weights, i.e. for each node that
- meets all of the scheduling requirements (resource
- request, requiredDuringScheduling affinity expressions,
- etc.), compute a sum by iterating through the elements
- of this field and adding "weight" to the sum if
- the node matches the corresponding matchExpressions;
- the node(s) with the highest sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node matches the corresponding matchExpressions; the
+ node(s) with the highest sum are the most preferred.
items:
- description: An empty preferred scheduling term
- matches all objects with implicit weight 0 (i.e.
- it's a no-op). A null preferred scheduling term
- matches no objects (i.e. is also a no-op).
+ description: |-
+ An empty preferred scheduling term matches all objects with implicit weight 0
+ (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
properties:
preference:
description: A node selector term, associated
@@ -4479,79 +4828,72 @@ spec:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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:
description: Weight associated with matching
the corresponding nodeSelectorTerm, in the
@@ -4563,105 +4905,100 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the
- affinity requirements specified by this field cease
- to be met at some point during pod execution (e.g.
- due to an update), the system may or may not try
- to eventually evict the pod from its node.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to an update), the system
+ may or may not try to eventually evict the pod from its node.
properties:
nodeSelectorTerms:
description: Required. A list of node selector
terms. The terms are ORed.
items:
- description: A null or empty node selector term
- matches no objects. The requirements of them
- are ANDed. The TopologySelectorTerm type implements
- a subset of the NodeSelectorTerm.
+ description: |-
+ A null or empty node selector term matches no objects. The requirements of
+ them are ANDed.
+ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
properties:
matchExpressions:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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
+ x-kubernetes-map-type: atomic
type: object
podAffinity:
description: Describes pod affinity scheduling rules (e.g.
@@ -4669,19 +5006,16 @@ spec:
other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the
- greatest sum of weights, i.e. for each node that
- meets all of the scheduling requirements (resource
- request, requiredDuringScheduling affinity expressions,
- etc.), compute a sum by iterating through the elements
- of this field and adding "weight" to the sum if
- the node has pods which matches the corresponding
- podAffinityTerm; the node(s) with the highest sum
- are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
fields are added per-node to find the most preferred
@@ -4692,18 +5026,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -4711,60 +5045,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -4772,70 +5128,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in the
- range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -4843,161 +5190,179 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the
- affinity requirements specified by this field cease
- to be met at some point during pod execution (e.g.
- due to a pod label update), the system may or may
- not try to eventually evict the pod from its node.
- When there are multiple elements, the lists of nodes
- corresponding to each podAffinityTerm are intersected,
- i.e. all terms must be satisfied.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the given
- namespace(s)) that this pod should be co-located
- (affinity) or not co-located (anti-affinity) with,
- where co-located is defined as running on a node
- whose value of the label with key
- matches that of any node on which a pod of the
- set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by
- this field and the ones listed in the namespaces
- field. null selector and null or empty namespaces
- list means "this pod's namespace". An empty
- selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to.
- The term is applied to the union of the namespaces
- listed in this field and the ones selected
- by namespaceSelector. null or empty namespaces
- list and null namespaceSelector means "this
- pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the
- pods matching the labelSelector in the specified
- namespaces, where co-located is defined as
- running on a node whose value of the label
- with key topologyKey matches that of any node
- on which any of the selected pods is running.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
podAntiAffinity:
description: Describes pod anti-affinity scheduling rules
@@ -5005,19 +5370,16 @@ spec:
etc. as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the anti-affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the
- greatest sum of weights, i.e. for each node that
- meets all of the scheduling requirements (resource
- request, requiredDuringScheduling anti-affinity
- expressions, etc.), compute a sum by iterating through
- the elements of this field and adding "weight" to
- the sum if the node has pods which matches the corresponding
- podAffinityTerm; the node(s) with the highest sum
- are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the anti-affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling anti-affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
fields are added per-node to find the most preferred
@@ -5028,18 +5390,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -5047,60 +5409,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
- namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
- properties:
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ namespaceSelector:
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
+ properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -5108,70 +5492,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in the
- range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -5179,188 +5554,297 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the anti-affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the
- anti-affinity requirements specified by this field
- cease to be met at some point during pod execution
- (e.g. due to a pod label update), the system may
- or may not try to eventually evict the pod from
- its node. When there are multiple elements, the
- lists of nodes corresponding to each podAffinityTerm
- are intersected, i.e. all terms must be satisfied.
+ description: |-
+ If the anti-affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the anti-affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the given
- namespace(s)) that this pod should be co-located
- (affinity) or not co-located (anti-affinity) with,
- where co-located is defined as running on a node
- whose value of the label with key
- matches that of any node on which a pod of the
- set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by
- this field and the ones listed in the namespaces
- field. null selector and null or empty namespaces
- list means "this pod's namespace". An empty
- selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to.
- The term is applied to the union of the namespaces
- listed in this field and the ones selected
- by namespaceSelector. null or empty namespaces
- list and null namespaceSelector means "this
- pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the
- pods matching the labelSelector in the specified
- namespaces, where co-located is defined as
- running on a node whose value of the label
- with key topologyKey matches that of any node
- on which any of the selected pods is running.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
type: object
configuration:
- description: 'Projected volumes containing custom pgBackRest
- configuration. These files are mounted under "/etc/pgbackrest/conf.d"
- alongside any pgBackRest configuration generated by the
- PostgreSQL Operator: https://pgbackrest.org/configuration.html'
+ description: |-
+ Projected volumes containing custom pgBackRest configuration. These files are mounted
+ under "/etc/pgbackrest/conf.d" alongside any pgBackRest configuration generated by the
+ PostgreSQL Operator:
+ https://pgbackrest.org/configuration.html
items:
description: Projection that may be projected along with
other supported volume types
properties:
+ clusterTrustBundle:
+ description: |-
+ ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
+ of ClusterTrustBundle objects in an auto-updating file.
+
+ Alpha, gated by the ClusterTrustBundleProjection feature gate.
+
+ ClusterTrustBundle objects can either be selected by name, or by the
+ combination of signer name and a label selector.
+
+ Kubelet performs aggressive normalization of the PEM contents written
+ into the pod filesystem. Esoteric PEM features such as inter-block
+ comments and block headers are stripped. Certificates are deduplicated.
+ The ordering of certificates within the file is arbitrary, and Kubelet
+ may change the order over time.
+ properties:
+ labelSelector:
+ description: |-
+ Select all ClusterTrustBundles that match this label selector. Only has
+ effect if signerName is set. Mutually-exclusive with name. If unset,
+ interpreted as "match nothing". If set but empty, interpreted as "match
+ everything".
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list of label
+ selector requirements. The requirements are
+ ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key that
+ the selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ 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
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ name:
+ description: |-
+ Select a single ClusterTrustBundle by object name. Mutually-exclusive
+ with signerName and labelSelector.
+ type: string
+ optional:
+ description: |-
+ If true, don't block pod startup if the referenced ClusterTrustBundle(s)
+ aren't available. If using name, then the named ClusterTrustBundle is
+ allowed not to exist. If using signerName, then the combination of
+ signerName and labelSelector is allowed to match zero
+ ClusterTrustBundles.
+ type: boolean
+ path:
+ description: Relative path from the volume root
+ to write the bundle.
+ type: string
+ signerName:
+ description: |-
+ Select all ClusterTrustBundles that match this signer name.
+ Mutually-exclusive with name. The contents of all selected
+ ClusterTrustBundles will be unified and deduplicated.
+ type: string
+ required:
+ - path
+ type: object
configMap:
description: configMap information about the configMap
data to project
properties:
items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced ConfigMap
- will be projected into the volume as a file whose
- name is the key and content is the value. If specified,
- the listed keys will be projected into the specified
- paths, and unlisted keys will not be present.
- If a key is specified which is not present in
- the ConfigMap, the volume setup will error unless
- it is marked optional. Paths must be relative
- and may not contain the '..' path or start with
- '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ ConfigMap will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the ConfigMap,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within
a volume.
@@ -5369,39 +5853,43 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits
- used to set permissions on this file. Must
- be an octal value between 0000 and 0777
- or a decimal value between 0 and 511. YAML
- accepts both octal and decimal values, JSON
- requires decimal values for mode bits. If
- not specified, the volume defaultMode will
- be used. This might be in conflict with
- other options that affect the file mode,
- like fsGroup, and the result can be other
- mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of
- the file to map the key to. May not be an
- absolute path. May not contain the path
- element '..'. May not start with the string
- '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional specify whether the ConfigMap
or its keys must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
downwardAPI:
description: downwardAPI information about the downwardAPI
data to project
@@ -5416,8 +5904,8 @@ spec:
properties:
fieldRef:
description: 'Required: Selects a field of
- the pod: only annotations, labels, name
- and namespace are supported.'
+ the pod: only annotations, labels, name,
+ namespace and uid are supported.'
properties:
apiVersion:
description: Version of the schema the
@@ -5431,17 +5919,15 @@ spec:
required:
- fieldPath
type: object
+ x-kubernetes-map-type: atomic
mode:
- description: 'Optional: mode bits used to
- set permissions on this file, must be an
- octal value between 0000 and 0777 or a decimal
- value between 0 and 511. YAML accepts both
- octal and decimal values, JSON requires
- decimal values for mode bits. If not specified,
- the volume defaultMode will be used. This
- might be in conflict with other options
- that affect the file mode, like fsGroup,
- and the result can be other mode bits set.'
+ description: |-
+ Optional: mode bits used to set permissions on this file, must be an octal value
+ between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
@@ -5452,10 +5938,9 @@ spec:
the relative path must not start with ''..'''
type: string
resourceFieldRef:
- description: 'Selects a resource of the container:
- only resources limits and requests (limits.cpu,
- limits.memory, requests.cpu and requests.memory)
- are currently supported.'
+ description: |-
+ Selects a resource of the container: only resources limits and requests
+ (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
properties:
containerName:
description: 'Container name: required
@@ -5476,27 +5961,26 @@ spec:
required:
- resource
type: object
+ x-kubernetes-map-type: atomic
required:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
secret:
description: secret information about the secret data
to project
properties:
items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced Secret
- will be projected into the volume as a file whose
- name is the key and content is the value. If specified,
- the listed keys will be projected into the specified
- paths, and unlisted keys will not be present.
- If a key is specified which is not present in
- the Secret, the volume setup will error unless
- it is marked optional. Paths must be relative
- and may not contain the '..' path or start with
- '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ Secret will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the Secret,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within
a volume.
@@ -5505,66 +5989,68 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits
- used to set permissions on this file. Must
- be an octal value between 0000 and 0777
- or a decimal value between 0 and 511. YAML
- accepts both octal and decimal values, JSON
- requires decimal values for mode bits. If
- not specified, the volume defaultMode will
- be used. This might be in conflict with
- other options that affect the file mode,
- like fsGroup, and the result can be other
- mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of
- the file to map the key to. May not be an
- absolute path. May not contain the path
- element '..'. May not start with the string
- '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional field specify whether the
Secret or its key must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
serviceAccountToken:
description: serviceAccountToken is information about
the serviceAccountToken data to project
properties:
audience:
- description: audience is the intended audience of
- the token. A recipient of a token must identify
- itself with an identifier specified in the audience
- of the token, and otherwise should reject the
- token. The audience defaults to the identifier
- of the apiserver.
+ description: |-
+ audience is the intended audience of the token. A recipient of a token
+ must identify itself with an identifier specified in the audience of the
+ token, and otherwise should reject the token. The audience defaults to the
+ identifier of the apiserver.
type: string
expirationSeconds:
- description: expirationSeconds is the requested
- duration of validity of the service account token.
- As the token approaches expiration, the kubelet
- volume plugin will proactively rotate the service
- account token. The kubelet will start trying to
- rotate the token if the token is older than 80
- percent of its time to live or if the token is
- older than 24 hours.Defaults to 1 hour and must
- be at least 10 minutes.
+ description: |-
+ expirationSeconds is the requested duration of validity of the service
+ account token. As the token approaches expiration, the kubelet volume
+ plugin will proactively rotate the service account token. The kubelet will
+ start trying to rotate the token if the token is older than 80 percent of
+ its time to live or if the token is older than 24 hours.Defaults to 1 hour
+ and must be at least 10 minutes.
format: int64
type: integer
path:
- description: path is the path relative to the mount
- point of the file to project the token into.
+ description: |-
+ path is the path relative to the mount point of the file to project the
+ token into.
type: string
required:
- path
@@ -5574,21 +6060,24 @@ spec:
global:
additionalProperties:
type: string
- description: 'Global pgBackRest configuration settings. These
- settings are included in the "global" section of the pgBackRest
- configuration generated by the PostgreSQL Operator, and
- then mounted under "/etc/pgbackrest/conf.d": https://pgbackrest.org/configuration.html'
+ description: |-
+ Global pgBackRest configuration settings. These settings are included in the "global"
+ section of the pgBackRest configuration generated by the PostgreSQL Operator, and then
+ mounted under "/etc/pgbackrest/conf.d":
+ https://pgbackrest.org/configuration.html
type: object
options:
- description: Command line options to include when running
- the pgBackRest restore command. https://pgbackrest.org/command.html#command-restore
+ description: |-
+ Command line options to include when running the pgBackRest restore command.
+ https://pgbackrest.org/command.html#command-restore
items:
type: string
type: array
priorityClassName:
- description: 'Priority class name for the pgBackRest restore
- Job pod. Changing this value causes PostgreSQL to restart.
- More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/'
+ description: |-
+ Priority class name for the pgBackRest restore Job pod. Changing this
+ value causes PostgreSQL to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
type: string
repo:
description: Defines a pgBackRest repository
@@ -5615,12 +6104,13 @@ spec:
- bucket
type: object
name:
- description: The name of the the repository
+ description: The name of the repository
pattern: ^repo[1-4]
type: string
s3:
- description: RepoS3 represents a pgBackRest repository
- that is created using AWS S3 (or S3-compatible) storage
+ description: |-
+ RepoS3 represents a pgBackRest repository that is created using AWS S3 (or S3-compatible)
+ storage
properties:
bucket:
description: The S3 bucket utilized for the repository
@@ -5638,26 +6128,30 @@ spec:
- region
type: object
schedules:
- description: 'Defines the schedules for the pgBackRest
- backups Full, Differential and Incremental backup types
- are supported: https://pgbackrest.org/user-guide.html#concept/backup'
+ description: |-
+ Defines the schedules for the pgBackRest backups
+ Full, Differential and Incremental backup types are supported:
+ https://pgbackrest.org/user-guide.html#concept/backup
properties:
differential:
- description: 'Defines the Cron schedule for a differential
- pgBackRest backup. Follows the standard Cron schedule
- syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax'
+ description: |-
+ Defines the Cron schedule for a differential pgBackRest backup.
+ Follows the standard Cron schedule syntax:
+ https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax
minLength: 6
type: string
full:
- description: 'Defines the Cron schedule for a full
- pgBackRest backup. Follows the standard Cron schedule
- syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax'
+ description: |-
+ Defines the Cron schedule for a full pgBackRest backup.
+ Follows the standard Cron schedule syntax:
+ https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax
minLength: 6
type: string
incremental:
- description: 'Defines the Cron schedule for an incremental
- pgBackRest backup. Follows the standard Cron schedule
- syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax'
+ description: |-
+ Defines the Cron schedule for an incremental pgBackRest backup.
+ Follows the standard Cron schedule syntax:
+ https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax
minLength: 6
type: string
type: object
@@ -5670,30 +6164,29 @@ spec:
used to create and/or bind a volume
properties:
accessModes:
- description: 'accessModes contains the desired
- access modes the volume should have. More info:
- https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
+ description: |-
+ accessModes contains the desired access modes the volume should have.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
dataSource:
- description: 'dataSource field can be used to
- specify either: * An existing VolumeSnapshot
- object (snapshot.storage.k8s.io/VolumeSnapshot)
- * An existing PVC (PersistentVolumeClaim) If
- the provisioner or an external controller can
- support the specified data source, it will create
- a new volume based on the contents of the specified
- data source. If the AnyVolumeDataSource feature
- gate is enabled, this field will always have
- the same contents as the DataSourceRef field.'
+ description: |-
+ dataSource field can be used to specify either:
+ * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
+ * An existing PVC (PersistentVolumeClaim)
+ If the provisioner or an external controller can support the specified data source,
+ it will create a new volume based on the contents of the specified data source.
+ When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
+ and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
+ If the namespace is specified, then dataSourceRef will not be copied to dataSource.
properties:
apiGroup:
- description: APIGroup is the group for the
- resource being referenced. If APIGroup is
- not specified, the specified Kind must be
- in the core API group. For any other third-party
- types, APIGroup is required.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
+ For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource
@@ -5707,39 +6200,38 @@ spec:
- kind
- name
type: object
+ x-kubernetes-map-type: atomic
dataSourceRef:
- description: 'dataSourceRef specifies the object
- from which to populate the volume with data,
- if a non-empty volume is desired. This may be
- any local object from a non-empty API group
- (non core object) or a PersistentVolumeClaim
- object. When this field is specified, volume
- binding will only succeed if the type of the
- specified object matches some installed volume
- populator or dynamic provisioner. This field
- will replace the functionality of the DataSource
- field and as such if both fields are non-empty,
- they must have the same value. For backwards
- compatibility, both fields (DataSource and DataSourceRef)
- will be set to the same value automatically
- if one of them is empty and the other is non-empty.
- There are two important differences between
- DataSource and DataSourceRef: * While DataSource
- only allows two specific types of objects, DataSourceRef
- allows any non-core object, as well as PersistentVolumeClaim
- objects. * While DataSource ignores disallowed
- values (dropping them), DataSourceRef preserves
- all values, and generates an error if a disallowed
- value is specified. (Beta) Using this field
- requires the AnyVolumeDataSource feature gate
- to be enabled.'
+ description: |-
+ dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
+ volume is desired. This may be any object from a non-empty API group (non
+ core object) or a PersistentVolumeClaim object.
+ When this field is specified, volume binding will only succeed if the type of
+ the specified object matches some installed volume populator or dynamic
+ provisioner.
+ This field will replace the functionality of the dataSource field and as such
+ if both fields are non-empty, they must have the same value. For backwards
+ compatibility, when namespace isn't specified in dataSourceRef,
+ both fields (dataSource and dataSourceRef) will be set to the same
+ value automatically if one of them is empty and the other is non-empty.
+ When namespace is specified in dataSourceRef,
+ dataSource isn't set to the same value and must be empty.
+ There are three important differences between dataSource and dataSourceRef:
+ * While dataSource only allows two specific types of objects, dataSourceRef
+ allows any non-core object, as well as PersistentVolumeClaim objects.
+ * While dataSource ignores disallowed values (dropping them), dataSourceRef
+ preserves all values, and generates an error if a disallowed value is
+ specified.
+ * While dataSource only allows local objects, dataSourceRef allows objects
+ in any namespaces.
+ (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
+ (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
properties:
apiGroup:
- description: APIGroup is the group for the
- resource being referenced. If APIGroup is
- not specified, the specified Kind must be
- in the core API group. For any other third-party
- types, APIGroup is required.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
+ For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource
@@ -5749,18 +6241,23 @@ spec:
description: Name is the name of resource
being referenced
type: string
+ namespace:
+ description: |-
+ Namespace is the namespace of resource being referenced
+ Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
+ (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
+ type: string
required:
- kind
- name
type: object
resources:
- description: 'resources represents the minimum
- resources the volume should have. If RecoverVolumeExpansionFailure
- feature is enabled users are allowed to specify
- resource requirements that are lower than previous
- value but must still be higher than capacity
- recorded in the status field of the claim. More
- info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
+ description: |-
+ resources represents the minimum resources the volume should have.
+ If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
+ that are lower than previous value but must still be higher than capacity recorded in the
+ status field of the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
properties:
limits:
additionalProperties:
@@ -5769,9 +6266,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum
- amount of compute resources allowed. More
- info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -5780,12 +6277,11 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum
- amount of compute resources required. If
- Requests is omitted for a container, it
- defaults to Limits if that is explicitly
- specified, otherwise to an implementation-defined
- value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
selector:
@@ -5797,63 +6293,82 @@ spec:
label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a
- key, and an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only
- "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
storageClassName:
- description: 'storageClassName is the name of
- the StorageClass required by the claim. More
- info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
+ description: |-
+ storageClassName is the name of the StorageClass required by the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
+ type: string
+ volumeAttributesClassName:
+ description: |-
+ volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
+ If specified, the CSI driver will create or update the volume with the attributes defined
+ in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
+ it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
+ will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
+ If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
+ will be set by the persistentvolume controller if it exists.
+ If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
+ set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
+ exists.
+ More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
+ (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
type: string
volumeMode:
- description: volumeMode defines what type of volume
- is required by the claim. Value of Filesystem
- is implied when not included in claim spec.
+ description: |-
+ volumeMode defines what type of volume is required by the claim.
+ Value of Filesystem is implied when not included in claim spec.
type: string
volumeName:
description: volumeName is the binding reference
to the PersistentVolume backing this claim.
type: string
type: object
+ x-kubernetes-validations:
+ - message: missing accessModes
+ rule: has(self.accessModes) && size(self.accessModes)
+ > 0
+ - message: missing storage request
+ rule: has(self.resources) && has(self.resources.requests)
+ && has(self.resources.requests.storage)
required:
- volumeClaimSpec
type: object
@@ -5864,6 +6379,31 @@ spec:
description: Resource requirements for the pgBackRest restore
Job.
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -5871,8 +6411,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount of compute
- resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -5881,59 +6422,57 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount of
- compute resources required. If Requests is omitted for
- a container, it defaults to Limits if that is explicitly
- specified, otherwise to an implementation-defined value.
- More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
stanza:
default: db
- description: The name of an existing pgBackRest stanza to
- use as the data source for the new PostgresCluster. Defaults
- to `db` if not provided.
+ description: |-
+ The name of an existing pgBackRest stanza to use as the data source for the new PostgresCluster.
+ Defaults to `db` if not provided.
type: string
tolerations:
- description: 'Tolerations of the pgBackRest restore Job. More
- info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration'
+ description: |-
+ Tolerations of the pgBackRest restore Job.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
items:
- description: The pod this Toleration is attached to tolerates
- any taint that matches the triple using
- the matching operator .
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
properties:
effect:
- description: Effect indicates the taint effect to match.
- Empty means match all taint effects. When specified,
- allowed values are NoSchedule, PreferNoSchedule and
- NoExecute.
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
type: string
key:
- description: Key is the taint key that the toleration
- applies to. Empty means match all taint keys. If the
- key is empty, operator must be Exists; this combination
- means to match all values and all keys.
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
type: string
operator:
- description: Operator represents a key's relationship
- to the value. Valid operators are Exists and Equal.
- Defaults to Equal. Exists is equivalent to wildcard
- for value, so that a pod can tolerate all taints of
- a particular category.
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
type: string
tolerationSeconds:
- description: TolerationSeconds represents the period
- of time the toleration (which must be of effect NoExecute,
- otherwise this field is ignored) tolerates the taint.
- By default, it is not set, which means tolerate the
- taint forever (do not evict). Zero and negative values
- will be treated as 0 (evict immediately) by the system.
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
format: int64
type: integer
value:
- description: Value is the taint value the toleration
- matches to. If the operator is Exists, the value should
- be empty, otherwise just a regular string.
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
type: object
type: array
@@ -5942,38 +6481,36 @@ spec:
- stanza
type: object
postgresCluster:
- description: 'Defines a pgBackRest data source that can be used
- to pre-populate the PostgreSQL data directory for a new PostgreSQL
- cluster using a pgBackRest restore. The PGBackRest field is
- incompatible with the PostgresCluster field: only one data source
- can be used for pre-populating a new PostgreSQL cluster'
+ description: |-
+ Defines a pgBackRest data source that can be used to pre-populate the PostgreSQL data
+ directory for a new PostgreSQL cluster using a pgBackRest restore.
+ The PGBackRest field is incompatible with the PostgresCluster field: only one
+ data source can be used for pre-populating a new PostgreSQL cluster
properties:
affinity:
- description: 'Scheduling constraints of the pgBackRest restore
- Job. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node'
+ description: |-
+ Scheduling constraints of the pgBackRest restore Job.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
properties:
nodeAffinity:
description: Describes node affinity scheduling rules
for the pod.
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the
- greatest sum of weights, i.e. for each node that
- meets all of the scheduling requirements (resource
- request, requiredDuringScheduling affinity expressions,
- etc.), compute a sum by iterating through the elements
- of this field and adding "weight" to the sum if
- the node matches the corresponding matchExpressions;
- the node(s) with the highest sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node matches the corresponding matchExpressions; the
+ node(s) with the highest sum are the most preferred.
items:
- description: An empty preferred scheduling term
- matches all objects with implicit weight 0 (i.e.
- it's a no-op). A null preferred scheduling term
- matches no objects (i.e. is also a no-op).
+ description: |-
+ An empty preferred scheduling term matches all objects with implicit weight 0
+ (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
properties:
preference:
description: A node selector term, associated
@@ -5983,79 +6520,72 @@ spec:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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:
description: Weight associated with matching
the corresponding nodeSelectorTerm, in the
@@ -6067,105 +6597,100 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the
- affinity requirements specified by this field cease
- to be met at some point during pod execution (e.g.
- due to an update), the system may or may not try
- to eventually evict the pod from its node.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to an update), the system
+ may or may not try to eventually evict the pod from its node.
properties:
nodeSelectorTerms:
description: Required. A list of node selector
terms. The terms are ORed.
items:
- description: A null or empty node selector term
- matches no objects. The requirements of them
- are ANDed. The TopologySelectorTerm type implements
- a subset of the NodeSelectorTerm.
+ description: |-
+ A null or empty node selector term matches no objects. The requirements of
+ them are ANDed.
+ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
properties:
matchExpressions:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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
+ x-kubernetes-map-type: atomic
type: object
podAffinity:
description: Describes pod affinity scheduling rules (e.g.
@@ -6173,19 +6698,16 @@ spec:
other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the
- greatest sum of weights, i.e. for each node that
- meets all of the scheduling requirements (resource
- request, requiredDuringScheduling affinity expressions,
- etc.), compute a sum by iterating through the elements
- of this field and adding "weight" to the sum if
- the node has pods which matches the corresponding
- podAffinityTerm; the node(s) with the highest sum
- are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
fields are added per-node to find the most preferred
@@ -6196,18 +6718,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -6215,60 +6737,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -6276,70 +6820,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in the
- range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -6347,161 +6882,179 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the
- affinity requirements specified by this field cease
- to be met at some point during pod execution (e.g.
- due to a pod label update), the system may or may
- not try to eventually evict the pod from its node.
- When there are multiple elements, the lists of nodes
- corresponding to each podAffinityTerm are intersected,
- i.e. all terms must be satisfied.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the given
- namespace(s)) that this pod should be co-located
- (affinity) or not co-located (anti-affinity) with,
- where co-located is defined as running on a node
- whose value of the label with key
- matches that of any node on which a pod of the
- set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by
- this field and the ones listed in the namespaces
- field. null selector and null or empty namespaces
- list means "this pod's namespace". An empty
- selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to.
- The term is applied to the union of the namespaces
- listed in this field and the ones selected
- by namespaceSelector. null or empty namespaces
- list and null namespaceSelector means "this
- pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the
- pods matching the labelSelector in the specified
- namespaces, where co-located is defined as
- running on a node whose value of the label
- with key topologyKey matches that of any node
- on which any of the selected pods is running.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
podAntiAffinity:
description: Describes pod anti-affinity scheduling rules
@@ -6509,19 +7062,16 @@ spec:
etc. as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the anti-affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the
- greatest sum of weights, i.e. for each node that
- meets all of the scheduling requirements (resource
- request, requiredDuringScheduling anti-affinity
- expressions, etc.), compute a sum by iterating through
- the elements of this field and adding "weight" to
- the sum if the node has pods which matches the corresponding
- podAffinityTerm; the node(s) with the highest sum
- are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the anti-affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling anti-affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
fields are added per-node to find the most preferred
@@ -6532,18 +7082,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -6551,60 +7101,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -6612,70 +7184,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in the
- range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -6683,196 +7246,240 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the anti-affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the
- anti-affinity requirements specified by this field
- cease to be met at some point during pod execution
- (e.g. due to a pod label update), the system may
- or may not try to eventually evict the pod from
- its node. When there are multiple elements, the
- lists of nodes corresponding to each podAffinityTerm
- are intersected, i.e. all terms must be satisfied.
+ description: |-
+ If the anti-affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the anti-affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the given
- namespace(s)) that this pod should be co-located
- (affinity) or not co-located (anti-affinity) with,
- where co-located is defined as running on a node
- whose value of the label with key
- matches that of any node on which a pod of the
- set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by
- this field and the ones listed in the namespaces
- field. null selector and null or empty namespaces
- list means "this pod's namespace". An empty
- selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to.
- The term is applied to the union of the namespaces
- listed in this field and the ones selected
- by namespaceSelector. null or empty namespaces
- list and null namespaceSelector means "this
- pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the
- pods matching the labelSelector in the specified
- namespaces, where co-located is defined as
- running on a node whose value of the label
- with key topologyKey matches that of any node
- on which any of the selected pods is running.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
type: object
clusterName:
- description: The name of an existing PostgresCluster to use
- as the data source for the new PostgresCluster. Defaults
- to the name of the PostgresCluster being created if not
- provided.
+ description: |-
+ The name of an existing PostgresCluster to use as the data source for the new PostgresCluster.
+ Defaults to the name of the PostgresCluster being created if not provided.
type: string
clusterNamespace:
- description: The namespace of the cluster specified as the
- data source using the clusterName field. Defaults to the
- namespace of the PostgresCluster being created if not provided.
+ description: |-
+ The namespace of the cluster specified as the data source using the clusterName field.
+ Defaults to the namespace of the PostgresCluster being created if not provided.
type: string
options:
- description: Command line options to include when running
- the pgBackRest restore command. https://pgbackrest.org/command.html#command-restore
+ description: |-
+ Command line options to include when running the pgBackRest restore command.
+ https://pgbackrest.org/command.html#command-restore
items:
type: string
type: array
priorityClassName:
- description: 'Priority class name for the pgBackRest restore
- Job pod. Changing this value causes PostgreSQL to restart.
- More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/'
+ description: |-
+ Priority class name for the pgBackRest restore Job pod. Changing this
+ value causes PostgreSQL to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
type: string
repoName:
- description: The name of the pgBackRest repo within the source
- PostgresCluster that contains the backups that should be
- utilized to perform a pgBackRest restore when initializing
- the data source for the new PostgresCluster.
+ description: |-
+ The name of the pgBackRest repo within the source PostgresCluster that contains the backups
+ that should be utilized to perform a pgBackRest restore when initializing the data source
+ for the new PostgresCluster.
pattern: ^repo[1-4]
type: string
resources:
description: Resource requirements for the pgBackRest restore
Job.
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -6880,8 +7487,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount of compute
- resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -6890,53 +7498,51 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount of
- compute resources required. If Requests is omitted for
- a container, it defaults to Limits if that is explicitly
- specified, otherwise to an implementation-defined value.
- More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
tolerations:
- description: 'Tolerations of the pgBackRest restore Job. More
- info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration'
+ description: |-
+ Tolerations of the pgBackRest restore Job.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
items:
- description: The pod this Toleration is attached to tolerates
- any taint that matches the triple using
- the matching operator .
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
properties:
effect:
- description: Effect indicates the taint effect to match.
- Empty means match all taint effects. When specified,
- allowed values are NoSchedule, PreferNoSchedule and
- NoExecute.
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
type: string
key:
- description: Key is the taint key that the toleration
- applies to. Empty means match all taint keys. If the
- key is empty, operator must be Exists; this combination
- means to match all values and all keys.
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
type: string
operator:
- description: Operator represents a key's relationship
- to the value. Valid operators are Exists and Equal.
- Defaults to Equal. Exists is equivalent to wildcard
- for value, so that a pod can tolerate all taints of
- a particular category.
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
type: string
tolerationSeconds:
- description: TolerationSeconds represents the period
- of time the toleration (which must be of effect NoExecute,
- otherwise this field is ignored) tolerates the taint.
- By default, it is not set, which means tolerate the
- taint forever (do not evict). Zero and negative values
- will be treated as 0 (evict immediately) by the system.
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
format: int64
type: integer
value:
- description: Value is the taint value the toleration
- matches to. If the operator is Exists, the value should
- be empty, otherwise just a regular string.
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
type: object
type: array
@@ -6947,12 +7553,14 @@ spec:
description: Defines any existing volumes to reuse for this PostgresCluster.
properties:
pgBackRestVolume:
- description: Defines the existing pgBackRest repo volume and
- directory to use in the current PostgresCluster.
+ description: |-
+ Defines the existing pgBackRest repo volume and directory to use in the
+ current PostgresCluster.
properties:
directory:
- description: The existing directory. When not set, a move
- Job is not created for the associated volume.
+ description: |-
+ The existing directory. When not set, a move Job is not created for the
+ associated volume.
type: string
pvcName:
description: The existing PVC name.
@@ -6961,12 +7569,14 @@ spec:
- pvcName
type: object
pgDataVolume:
- description: Defines the existing pgData volume and directory
- to use in the current PostgresCluster.
+ description: |-
+ Defines the existing pgData volume and directory to use in the current
+ PostgresCluster.
properties:
directory:
- description: The existing directory. When not set, a move
- Job is not created for the associated volume.
+ description: |-
+ The existing directory. When not set, a move Job is not created for the
+ associated volume.
type: string
pvcName:
description: The existing PVC name.
@@ -6975,13 +7585,15 @@ spec:
- pvcName
type: object
pgWALVolume:
- description: Defines the existing pg_wal volume and directory
- to use in the current PostgresCluster. Note that a defined
- pg_wal volume MUST be accompanied by a pgData volume.
+ description: |-
+ Defines the existing pg_wal volume and directory to use in the current
+ PostgresCluster. Note that a defined pg_wal volume MUST be accompanied by
+ a pgData volume.
properties:
directory:
- description: The existing directory. When not set, a move
- Job is not created for the associated volume.
+ description: |-
+ The existing directory. When not set, a move Job is not created for the
+ associated volume.
type: string
pvcName:
description: The existing PVC name.
@@ -6992,9 +7604,10 @@ spec:
type: object
type: object
databaseInitSQL:
- description: DatabaseInitSQL defines a ConfigMap containing custom
- SQL that will be run after the cluster is initialized. This ConfigMap
- must be in the same namespace as the cluster.
+ description: |-
+ DatabaseInitSQL defines a ConfigMap containing custom SQL that will
+ be run after the cluster is initialized. This ConfigMap must be in the same
+ namespace as the cluster.
properties:
key:
description: Key is the ConfigMap data key that points to a SQL
@@ -7008,69 +7621,84 @@ spec:
- name
type: object
disableDefaultPodScheduling:
- description: Whether or not the PostgreSQL cluster should use the
- defined default scheduling constraints. If the field is unset or
- false, the default scheduling constraints will be used in addition
- to any custom constraints provided.
+ description: |-
+ Whether or not the PostgreSQL cluster should use the defined default
+ scheduling constraints. If the field is unset or false, the default
+ scheduling constraints will be used in addition to any custom constraints
+ provided.
type: boolean
image:
- description: The image name to use for PostgreSQL containers. When
- omitted, the value comes from an operator environment variable.
- For standard PostgreSQL images, the format is RELATED_IMAGE_POSTGRES_{postgresVersion},
+ description: |-
+ The image name to use for PostgreSQL containers. When omitted, the value
+ comes from an operator environment variable. For standard PostgreSQL images,
+ the format is RELATED_IMAGE_POSTGRES_{postgresVersion},
e.g. RELATED_IMAGE_POSTGRES_13. For PostGIS enabled PostgreSQL images,
the format is RELATED_IMAGE_POSTGRES_{postgresVersion}_GIS_{postGISVersion},
e.g. RELATED_IMAGE_POSTGRES_13_GIS_3.1.
type: string
imagePullPolicy:
- description: 'ImagePullPolicy is used to determine when Kubernetes
- will attempt to pull (download) container images. More info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy'
+ description: |-
+ ImagePullPolicy is used to determine when Kubernetes will attempt to
+ pull (download) container images.
+ More info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
enum:
- Always
- Never
- IfNotPresent
type: string
imagePullSecrets:
- description: The image pull secrets used to pull from a private registry
- Changing this value causes all running pods to restart. https://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/
+ description: |-
+ The image pull secrets used to pull from a private registry
+ Changing this value causes all running pods to restart.
+ https://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/
items:
- description: LocalObjectReference contains enough information to
- let you locate the referenced object inside the same namespace.
+ description: |-
+ LocalObjectReference contains enough information to let you locate the
+ referenced object inside the same namespace.
properties:
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
+ x-kubernetes-map-type: atomic
type: array
instances:
- description: Specifies one or more sets of PostgreSQL pods that replicate
- data for this cluster.
+ description: |-
+ Specifies one or more sets of PostgreSQL pods that replicate data for
+ this cluster.
items:
properties:
affinity:
- description: 'Scheduling constraints of a PostgreSQL pod. Changing
- this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node'
+ description: |-
+ Scheduling constraints of a PostgreSQL pod. Changing this value causes
+ PostgreSQL to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
properties:
nodeAffinity:
description: Describes node affinity scheduling rules for
the pod.
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule pods
- to nodes that satisfy the affinity expressions specified
- by this field, but it may choose a node that violates
- one or more of the expressions. The node that is most
- preferred is the one with the greatest sum of weights,
- i.e. for each node that meets all of the scheduling
- requirements (resource request, requiredDuringScheduling
- affinity expressions, etc.), compute a sum by iterating
- through the elements of this field and adding "weight"
- to the sum if the node matches the corresponding matchExpressions;
- the node(s) with the highest sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node matches the corresponding matchExpressions; the
+ node(s) with the highest sum are the most preferred.
items:
- description: An empty preferred scheduling term matches
- all objects with implicit weight 0 (i.e. it's a
- no-op). A null preferred scheduling term matches
- no objects (i.e. is also a no-op).
+ description: |-
+ An empty preferred scheduling term matches all objects with implicit weight 0
+ (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
properties:
preference:
description: A node selector term, associated
@@ -7080,79 +7708,72 @@ spec:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values, a
- key, and an operator that relates the
- key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn, the
- values array must be non-empty. If
- the operator is Exists or DoesNotExist,
- the values array must be empty. If
- the operator is Gt or Lt, the values
- array must have a single element,
- which will be interpreted as an integer.
- This array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values, a
- key, and an operator that relates the
- key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn, the
- values array must be non-empty. If
- the operator is Exists or DoesNotExist,
- the values array must be empty. If
- the operator is Gt or Lt, the values
- array must have a single element,
- which will be interpreted as an integer.
- This array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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:
description: Weight associated with matching the
corresponding nodeSelectorTerm, in the range
@@ -7164,105 +7785,100 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the affinity
- requirements specified by this field cease to be met
- at some point during pod execution (e.g. due to an
- update), the system may or may not try to eventually
- evict the pod from its node.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to an update), the system
+ may or may not try to eventually evict the pod from its node.
properties:
nodeSelectorTerms:
description: Required. A list of node selector terms.
The terms are ORed.
items:
- description: A null or empty node selector term
- matches no objects. The requirements of them
- are ANDed. The TopologySelectorTerm type implements
- a subset of the NodeSelectorTerm.
+ description: |-
+ A null or empty node selector term matches no objects. The requirements of
+ them are ANDed.
+ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
properties:
matchExpressions:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values, a
- key, and an operator that relates the
- key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn, the
- values array must be non-empty. If
- the operator is Exists or DoesNotExist,
- the values array must be empty. If
- the operator is Gt or Lt, the values
- array must have a single element,
- which will be interpreted as an integer.
- This array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values, a
- key, and an operator that relates the
- key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn, the
- values array must be non-empty. If
- the operator is Exists or DoesNotExist,
- the values array must be empty. If
- the operator is Gt or Lt, the values
- array must have a single element,
- which will be interpreted as an integer.
- This array is replaced during a strategic
- merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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
+ x-kubernetes-map-type: atomic
type: object
podAffinity:
description: Describes pod affinity scheduling rules (e.g.
@@ -7270,18 +7886,16 @@ spec:
other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule pods
- to nodes that satisfy the affinity expressions specified
- by this field, but it may choose a node that violates
- one or more of the expressions. The node that is most
- preferred is the one with the greatest sum of weights,
- i.e. for each node that meets all of the scheduling
- requirements (resource request, requiredDuringScheduling
- affinity expressions, etc.), compute a sum by iterating
- through the elements of this field and adding "weight"
- to the sum if the node has pods which matches the
- corresponding podAffinityTerm; the node(s) with the
- highest sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
fields are added per-node to find the most preferred
@@ -7292,144 +7906,161 @@ spec:
with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of
- namespaces that the term applies to. The
- term is applied to the union of the namespaces
- selected by this field and the ones listed
- in the namespaces field. null selector and
- null or empty namespaces list means "this
- pod's namespace". An empty selector ({})
- matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term applies
- to. The term is applied to the union of
- the namespaces listed in this field and
- the ones selected by namespaceSelector.
- null or empty namespaces list and null namespaceSelector
- means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose value
- of the label with key topologyKey matches
- that of any node on which any of the selected
- pods is running. Empty topologyKey is not
- allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching the
- corresponding podAffinityTerm, in the range
- 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -7437,158 +8068,179 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the affinity
- requirements specified by this field cease to be met
- at some point during pod execution (e.g. due to a
- pod label update), the system may or may not try to
- eventually evict the pod from its node. When there
- are multiple elements, the lists of nodes corresponding
- to each podAffinityTerm are intersected, i.e. all
- terms must be satisfied.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those matching
- the labelSelector relative to the given namespace(s))
- that this pod should be co-located (affinity) or
- not co-located (anti-affinity) with, where co-located
- is defined as running on a node whose value of the
- label with key matches that of any
- node on which a pod of the set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list of
label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a
- key, and an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only
- "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by this
- field and the ones listed in the namespaces
- field. null selector and null or empty namespaces
- list means "this pod's namespace". An empty
- selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of
label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a
- key, and an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only
- "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to.
- The term is applied to the union of the namespaces
- listed in this field and the ones selected by
- namespaceSelector. null or empty namespaces
- list and null namespaceSelector means "this
- pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the pods
- matching the labelSelector in the specified
- namespaces, where co-located is defined as running
- on a node whose value of the label with key
- topologyKey matches that of any node on which
- any of the selected pods is running. Empty topologyKey
- is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
podAntiAffinity:
description: Describes pod anti-affinity scheduling rules
@@ -7596,18 +8248,16 @@ spec:
as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule pods
- to nodes that satisfy the anti-affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the greatest
- sum of weights, i.e. for each node that meets all
- of the scheduling requirements (resource request,
- requiredDuringScheduling anti-affinity expressions,
- etc.), compute a sum by iterating through the elements
- of this field and adding "weight" to the sum if the
- node has pods which matches the corresponding podAffinityTerm;
- the node(s) with the highest sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the anti-affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling anti-affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
fields are added per-node to find the most preferred
@@ -7618,144 +8268,161 @@ spec:
with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of
- namespaces that the term applies to. The
- term is applied to the union of the namespaces
- selected by this field and the ones listed
- in the namespaces field. null selector and
- null or empty namespaces list means "this
- pod's namespace". An empty selector ({})
- matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term applies
- to. The term is applied to the union of
- the namespaces listed in this field and
- the ones selected by namespaceSelector.
- null or empty namespaces list and null namespaceSelector
- means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose value
- of the label with key topologyKey matches
- that of any node on which any of the selected
- pods is running. Empty topologyKey is not
- allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching the
- corresponding podAffinityTerm, in the range
- 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -7763,199 +8430,221 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the anti-affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the anti-affinity
- requirements specified by this field cease to be met
- at some point during pod execution (e.g. due to a
- pod label update), the system may or may not try to
- eventually evict the pod from its node. When there
- are multiple elements, the lists of nodes corresponding
- to each podAffinityTerm are intersected, i.e. all
- terms must be satisfied.
+ description: |-
+ If the anti-affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the anti-affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those matching
- the labelSelector relative to the given namespace(s))
- that this pod should be co-located (affinity) or
- not co-located (anti-affinity) with, where co-located
- is defined as running on a node whose value of the
- label with key matches that of any
- node on which a pod of the set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list of
label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a
- key, and an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only
- "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by this
- field and the ones listed in the namespaces
- field. null selector and null or empty namespaces
- list means "this pod's namespace". An empty
- selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of
label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values, a
- key, and an operator that relates the
- key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that
the selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and
- DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty. This
- array is replaced during a strategic
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is
- "In", and the values array contains only
- "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to.
- The term is applied to the union of the namespaces
- listed in this field and the ones selected by
- namespaceSelector. null or empty namespaces
- list and null namespaceSelector means "this
- pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the pods
- matching the labelSelector in the specified
- namespaces, where co-located is defined as running
- on a node whose value of the label with key
- topologyKey matches that of any node on which
- any of the selected pods is running. Empty topologyKey
- is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
type: object
containers:
- description: Custom sidecars for PostgreSQL instance pods. Changing
- this value causes PostgreSQL to restart.
+ description: |-
+ Custom sidecars for PostgreSQL instance pods. Changing this value causes
+ PostgreSQL to restart.
items:
description: A single application container that you want
to run within a pod.
properties:
args:
- description: 'Arguments to the entrypoint. The container
- image''s CMD is used if this is not provided. Variable
- references $(VAR_NAME) are expanded using the container''s
- environment. If a variable cannot be resolved, the reference
- in the input string will be unchanged. Double $$ are
- reduced to a single $, which allows for escaping the
- $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce
- the string literal "$(VAR_NAME)". Escaped references
- will never be expanded, regardless of whether the variable
- exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
+ description: |-
+ Arguments to the entrypoint.
+ The container image's CMD is used if this is not provided.
+ Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
+ cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
+ to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
+ produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Cannot be updated.
+ More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
command:
- description: 'Entrypoint array. Not executed within a
- shell. The container image''s ENTRYPOINT is used if
- this is not provided. Variable references $(VAR_NAME)
- are expanded using the container''s environment. If
- a variable cannot be resolved, the reference in the
- input string will be unchanged. Double $$ are reduced
- to a single $, which allows for escaping the $(VAR_NAME)
- syntax: i.e. "$$(VAR_NAME)" will produce the string
- literal "$(VAR_NAME)". Escaped references will never
- be expanded, regardless of whether the variable exists
- or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
+ description: |-
+ Entrypoint array. Not executed within a shell.
+ The container image's ENTRYPOINT is used if this is not provided.
+ Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
+ cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
+ to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
+ produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Cannot be updated.
+ More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
env:
- description: List of environment variables to set in the
- container. Cannot be updated.
+ description: |-
+ List of environment variables to set in the container.
+ Cannot be updated.
items:
description: EnvVar represents an environment variable
present in a Container.
@@ -7965,17 +8654,16 @@ spec:
be a C_IDENTIFIER.
type: string
value:
- description: 'Variable references $(VAR_NAME) are
- expanded using the previously defined environment
- variables in the container and any service environment
- variables. If a variable cannot be resolved, the
- reference in the input string will be unchanged.
- Double $$ are reduced to a single $, which allows
- for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)"
- will produce the string literal "$(VAR_NAME)".
- Escaped references will never be expanded, regardless
- of whether the variable exists or not. Defaults
- to "".'
+ description: |-
+ Variable references $(VAR_NAME) are expanded
+ using the previously defined environment variables in the container and
+ any service environment variables. If a variable cannot be resolved,
+ the reference in the input string will be unchanged. Double $$ are reduced
+ to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
+ Escaped references will never be expanded, regardless of whether the variable
+ exists or not.
+ Defaults to "".
type: string
valueFrom:
description: Source for the environment variable's
@@ -7988,8 +8676,13 @@ spec:
description: The key to select.
type: string
name:
- description: 'Name of the referent. More
- info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the ConfigMap
@@ -7998,12 +8691,11 @@ spec:
required:
- key
type: object
+ x-kubernetes-map-type: atomic
fieldRef:
- description: 'Selects a field of the pod: supports
- metadata.name, metadata.namespace, `metadata.labels['''']`,
- `metadata.annotations['''']`, spec.nodeName,
- spec.serviceAccountName, status.hostIP, status.podIP,
- status.podIPs.'
+ description: |-
+ Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`,
+ spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
properties:
apiVersion:
description: Version of the schema the FieldPath
@@ -8016,12 +8708,11 @@ spec:
required:
- fieldPath
type: object
+ x-kubernetes-map-type: atomic
resourceFieldRef:
- description: 'Selects a resource of the container:
- only resources limits and requests (limits.cpu,
- limits.memory, limits.ephemeral-storage, requests.cpu,
- requests.memory and requests.ephemeral-storage)
- are currently supported.'
+ description: |-
+ Selects a resource of the container: only resources limits and requests
+ (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
properties:
containerName:
description: 'Container name: required for
@@ -8042,6 +8733,7 @@ spec:
required:
- resource
type: object
+ x-kubernetes-map-type: atomic
secretKeyRef:
description: Selects a key of a secret in the
pod's namespace
@@ -8051,8 +8743,13 @@ spec:
from. Must be a valid secret key.
type: string
name:
- description: 'Name of the referent. More
- info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret
@@ -8061,19 +8758,22 @@ spec:
required:
- key
type: object
+ x-kubernetes-map-type: atomic
type: object
required:
- name
type: object
type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
envFrom:
- description: List of sources to populate environment variables
- in the container. The keys defined within a source must
- be a C_IDENTIFIER. All invalid keys will be reported
- as an event when the container is starting. When a key
- exists in multiple sources, the value associated with
- the last source will take precedence. Values defined
- by an Env with a duplicate key will take precedence.
+ description: |-
+ List of sources to populate environment variables in the container.
+ The keys defined within a source must be a C_IDENTIFIER. All invalid keys
+ will be reported as an event when the container is starting. When a key exists in multiple
+ sources, the value associated with the last source will take precedence.
+ Values defined by an Env with a duplicate key will take precedence.
Cannot be updated.
items:
description: EnvFromSource represents the source of
@@ -8083,14 +8783,20 @@ spec:
description: The ConfigMap to select from
properties:
name:
- description: 'Name of the referent. More info:
- https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the ConfigMap must
be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
prefix:
description: An optional identifier to prepend to
each key in the ConfigMap. Must be a C_IDENTIFIER.
@@ -8099,65 +8805,72 @@ spec:
description: The Secret to select from
properties:
name:
- description: 'Name of the referent. More info:
- https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret must
be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
type: object
type: array
+ x-kubernetes-list-type: atomic
image:
- description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images
- This field is optional to allow higher level config
- management to default or override container images in
- workload controllers like Deployments and StatefulSets.'
+ description: |-
+ Container image name.
+ More info: https://kubernetes.io/docs/concepts/containers/images
+ This field is optional to allow higher level config management to default or override
+ container images in workload controllers like Deployments and StatefulSets.
type: string
imagePullPolicy:
- description: 'Image pull policy. One of Always, Never,
- IfNotPresent. Defaults to Always if :latest tag is specified,
- or IfNotPresent otherwise. Cannot be updated. More info:
- https://kubernetes.io/docs/concepts/containers/images#updating-images'
+ description: |-
+ Image pull policy.
+ One of Always, Never, IfNotPresent.
+ Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
+ Cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
type: string
lifecycle:
- description: Actions that the management system should
- take in response to container lifecycle events. Cannot
- be updated.
+ description: |-
+ Actions that the management system should take in response to container lifecycle events.
+ Cannot be updated.
properties:
postStart:
- description: 'PostStart is called immediately after
- a container is created. If the handler fails, the
- container is terminated and restarted according
- to its restart policy. Other management of the container
- blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
+ description: |-
+ PostStart is called immediately after a container is created. If the handler fails,
+ the container is terminated and restarted according to its restart policy.
+ Other management of the container blocks until the hook completes.
+ More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
properties:
exec:
description: Exec specifies the action to take.
properties:
command:
- description: Command is the command line to
- execute inside the container, the working
- directory for the command is root ('/')
- in the container's filesystem. The command
- is simply exec'd, it is not run inside a
- shell, so traditional shell instructions
- ('|', etc) won't work. To use a shell, you
- need to explicitly call out to that shell.
- Exit status of 0 is treated as live/healthy
- and non-zero is unhealthy.
+ description: |-
+ Command is the command line to execute inside the container, the working directory for the
+ command is root ('/') in the container's filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
+ a shell, you need to explicitly call out to that shell.
+ Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
type: object
httpGet:
description: HTTPGet specifies the http request
to perform.
properties:
host:
- description: Host name to connect to, defaults
- to the pod IP. You probably want to set
+ description: |-
+ Host name to connect to, defaults to the pod IP. You probably want to set
"Host" in httpHeaders instead.
type: string
httpHeaders:
@@ -8168,7 +8881,9 @@ spec:
header to be used in HTTP probes
properties:
name:
- description: The header field name
+ description: |-
+ The header field name.
+ This will be canonicalized upon output, so case-variant names will be understood as the same header.
type: string
value:
description: The header field value
@@ -8178,6 +8893,7 @@ spec:
- value
type: object
type: array
+ x-kubernetes-list-type: atomic
path:
description: Path to access on the HTTP server.
type: string
@@ -8185,24 +8901,36 @@ spec:
anyOf:
- type: integer
- type: string
- description: Name or number of the port to
- access on the container. Number must be
- in the range 1 to 65535. Name must be an
- IANA_SVC_NAME.
+ description: |-
+ Name or number of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
scheme:
- description: Scheme to use for connecting
- to the host. Defaults to HTTP.
+ description: |-
+ Scheme to use for connecting to the host.
+ Defaults to HTTP.
type: string
required:
- port
type: object
+ sleep:
+ description: Sleep represents the duration that
+ the container should sleep before being terminated.
+ properties:
+ seconds:
+ description: Seconds is the number of seconds
+ to sleep.
+ format: int64
+ type: integer
+ required:
+ - seconds
+ type: object
tcpSocket:
- description: Deprecated. TCPSocket is NOT supported
- as a LifecycleHandler and kept for the backward
- compatibility. There are no validation of this
- field and lifecycle hooks will fail in runtime
- when tcp handler is specified.
+ description: |-
+ Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
+ for the backward compatibility. There are no validation of this field and
+ lifecycle hooks will fail in runtime when tcp handler is specified.
properties:
host:
description: 'Optional: Host name to connect
@@ -8212,55 +8940,49 @@ spec:
anyOf:
- type: integer
- type: string
- description: Number or name of the port to
- access on the container. Number must be
- in the range 1 to 65535. Name must be an
- IANA_SVC_NAME.
+ description: |-
+ Number or name of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
required:
- port
type: object
type: object
preStop:
- description: 'PreStop is called immediately before
- a container is terminated due to an API request
- or management event such as liveness/startup probe
- failure, preemption, resource contention, etc. The
- handler is not called if the container crashes or
- exits. The Pod''s termination grace period countdown
- begins before the PreStop hook is executed. Regardless
- of the outcome of the handler, the container will
- eventually terminate within the Pod''s termination
- grace period (unless delayed by finalizers). Other
- management of the container blocks until the hook
- completes or until the termination grace period
- is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
+ description: |-
+ PreStop is called immediately before a container is terminated due to an
+ API request or management event such as liveness/startup probe failure,
+ preemption, resource contention, etc. The handler is not called if the
+ container crashes or exits. The Pod's termination grace period countdown begins before the
+ PreStop hook is executed. Regardless of the outcome of the handler, the
+ container will eventually terminate within the Pod's termination grace
+ period (unless delayed by finalizers). Other management of the container blocks until the hook completes
+ or until the termination grace period is reached.
+ More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
properties:
exec:
description: Exec specifies the action to take.
properties:
command:
- description: Command is the command line to
- execute inside the container, the working
- directory for the command is root ('/')
- in the container's filesystem. The command
- is simply exec'd, it is not run inside a
- shell, so traditional shell instructions
- ('|', etc) won't work. To use a shell, you
- need to explicitly call out to that shell.
- Exit status of 0 is treated as live/healthy
- and non-zero is unhealthy.
+ description: |-
+ Command is the command line to execute inside the container, the working directory for the
+ command is root ('/') in the container's filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
+ a shell, you need to explicitly call out to that shell.
+ Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
type: object
httpGet:
description: HTTPGet specifies the http request
to perform.
properties:
host:
- description: Host name to connect to, defaults
- to the pod IP. You probably want to set
+ description: |-
+ Host name to connect to, defaults to the pod IP. You probably want to set
"Host" in httpHeaders instead.
type: string
httpHeaders:
@@ -8271,7 +8993,9 @@ spec:
header to be used in HTTP probes
properties:
name:
- description: The header field name
+ description: |-
+ The header field name.
+ This will be canonicalized upon output, so case-variant names will be understood as the same header.
type: string
value:
description: The header field value
@@ -8281,6 +9005,7 @@ spec:
- value
type: object
type: array
+ x-kubernetes-list-type: atomic
path:
description: Path to access on the HTTP server.
type: string
@@ -8288,24 +9013,36 @@ spec:
anyOf:
- type: integer
- type: string
- description: Name or number of the port to
- access on the container. Number must be
- in the range 1 to 65535. Name must be an
- IANA_SVC_NAME.
+ description: |-
+ Name or number of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
scheme:
- description: Scheme to use for connecting
- to the host. Defaults to HTTP.
+ description: |-
+ Scheme to use for connecting to the host.
+ Defaults to HTTP.
type: string
required:
- port
type: object
+ sleep:
+ description: Sleep represents the duration that
+ the container should sleep before being terminated.
+ properties:
+ seconds:
+ description: Seconds is the number of seconds
+ to sleep.
+ format: int64
+ type: integer
+ required:
+ - seconds
+ type: object
tcpSocket:
- description: Deprecated. TCPSocket is NOT supported
- as a LifecycleHandler and kept for the backward
- compatibility. There are no validation of this
- field and lifecycle hooks will fail in runtime
- when tcp handler is specified.
+ description: |-
+ Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
+ for the backward compatibility. There are no validation of this field and
+ lifecycle hooks will fail in runtime when tcp handler is specified.
properties:
host:
description: 'Optional: Host name to connect
@@ -8315,10 +9052,10 @@ spec:
anyOf:
- type: integer
- type: string
- description: Number or name of the port to
- access on the container. Number must be
- in the range 1 to 65535. Name must be an
- IANA_SVC_NAME.
+ description: |-
+ Number or name of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
required:
- port
@@ -8326,37 +9063,36 @@ spec:
type: object
type: object
livenessProbe:
- description: 'Periodic probe of container liveness. Container
- will be restarted if the probe fails. Cannot be updated.
- More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Periodic probe of container liveness.
+ Container will be restarted if the probe fails.
+ Cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
properties:
exec:
description: Exec specifies the action to take.
properties:
command:
- description: Command is the command line to execute
- inside the container, the working directory
- for the command is root ('/') in the container's
- filesystem. The command is simply exec'd, it
- is not run inside a shell, so traditional shell
- instructions ('|', etc) won't work. To use a
- shell, you need to explicitly call out to that
- shell. Exit status of 0 is treated as live/healthy
- and non-zero is unhealthy.
+ description: |-
+ Command is the command line to execute inside the container, the working directory for the
+ command is root ('/') in the container's filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
+ a shell, you need to explicitly call out to that shell.
+ Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
type: object
failureThreshold:
- description: Minimum consecutive failures for the
- probe to be considered failed after having succeeded.
+ description: |-
+ Minimum consecutive failures for the probe to be considered failed after having succeeded.
Defaults to 3. Minimum value is 1.
format: int32
type: integer
grpc:
description: GRPC specifies an action involving a
- GRPC port. This is a beta field and requires enabling
- GRPCContainerProbe feature gate.
+ GRPC port.
properties:
port:
description: Port number of the gRPC service.
@@ -8364,11 +9100,12 @@ spec:
format: int32
type: integer
service:
- description: "Service is the name of the service
- to place in the gRPC HealthCheckRequest (see
- https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
- \n If this is not specified, the default behavior
- is defined by gRPC."
+ default: ""
+ description: |-
+ Service is the name of the service to place in the gRPC HealthCheckRequest
+ (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+
+ If this is not specified, the default behavior is defined by gRPC.
type: string
required:
- port
@@ -8378,9 +9115,9 @@ spec:
perform.
properties:
host:
- description: Host name to connect to, defaults
- to the pod IP. You probably want to set "Host"
- in httpHeaders instead.
+ description: |-
+ Host name to connect to, defaults to the pod IP. You probably want to set
+ "Host" in httpHeaders instead.
type: string
httpHeaders:
description: Custom headers to set in the request.
@@ -8390,7 +9127,9 @@ spec:
to be used in HTTP probes
properties:
name:
- description: The header field name
+ description: |-
+ The header field name.
+ This will be canonicalized upon output, so case-variant names will be understood as the same header.
type: string
value:
description: The header field value
@@ -8400,6 +9139,7 @@ spec:
- value
type: object
type: array
+ x-kubernetes-list-type: atomic
path:
description: Path to access on the HTTP server.
type: string
@@ -8407,33 +9147,35 @@ spec:
anyOf:
- type: integer
- type: string
- description: Name or number of the port to access
- on the container. Number must be in the range
- 1 to 65535. Name must be an IANA_SVC_NAME.
+ description: |-
+ Name or number of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
scheme:
- description: Scheme to use for connecting to the
- host. Defaults to HTTP.
+ description: |-
+ Scheme to use for connecting to the host.
+ Defaults to HTTP.
type: string
required:
- port
type: object
initialDelaySeconds:
- description: 'Number of seconds after the container
- has started before liveness probes are initiated.
- More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Number of seconds after the container has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
format: int32
type: integer
periodSeconds:
- description: How often (in seconds) to perform the
- probe. Default to 10 seconds. Minimum value is 1.
+ description: |-
+ How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
format: int32
type: integer
successThreshold:
- description: Minimum consecutive successes for the
- probe to be considered successful after having failed.
- Defaults to 1. Must be 1 for liveness and startup.
- Minimum value is 1.
+ description: |-
+ Minimum consecutive successes for the probe to be considered successful after having failed.
+ Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
format: int32
type: integer
tcpSocket:
@@ -8448,60 +9190,59 @@ spec:
anyOf:
- type: integer
- type: string
- description: Number or name of the port to access
- on the container. Number must be in the range
- 1 to 65535. Name must be an IANA_SVC_NAME.
+ description: |-
+ Number or name of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
required:
- port
type: object
terminationGracePeriodSeconds:
- description: Optional duration in seconds the pod
- needs to terminate gracefully upon probe failure.
- The grace period is the duration in seconds after
- the processes running in the pod are sent a termination
- signal and the time when the processes are forcibly
- halted with a kill signal. Set this value longer
- than the expected cleanup time for your process.
- If this value is nil, the pod's terminationGracePeriodSeconds
- will be used. Otherwise, this value overrides the
- value provided by the pod spec. Value must be non-negative
- integer. The value zero indicates stop immediately
- via the kill signal (no opportunity to shut down).
- This is a beta field and requires enabling ProbeTerminationGracePeriod
- feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
- is used if unset.
+ description: |-
+ Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
+ The grace period is the duration in seconds after the processes running in the pod are sent
+ a termination signal and the time when the processes are forcibly halted with a kill signal.
+ Set this value longer than the expected cleanup time for your process.
+ If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
+ value overrides the value provided by the pod spec.
+ Value must be non-negative integer. The value zero indicates stop immediately via
+ the kill signal (no opportunity to shut down).
+ This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
+ Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
format: int64
type: integer
timeoutSeconds:
- description: 'Number of seconds after which the probe
- times out. Defaults to 1 second. Minimum value is
- 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Number of seconds after which the probe times out.
+ Defaults to 1 second. Minimum value is 1.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
format: int32
type: integer
type: object
name:
- description: Name of the container specified as a DNS_LABEL.
+ description: |-
+ Name of the container specified as a DNS_LABEL.
Each container in a pod must have a unique name (DNS_LABEL).
Cannot be updated.
type: string
ports:
- description: List of ports to expose from the container.
- Exposing a port here gives the system additional information
- about the network connections a container uses, but
- is primarily informational. Not specifying a port here
- DOES NOT prevent that port from being exposed. Any port
- which is listening on the default "0.0.0.0" address
- inside a container will be accessible from the network.
+ description: |-
+ List of ports to expose from the container. Not specifying a port here
+ DOES NOT prevent that port from being exposed. Any port which is
+ listening on the default "0.0.0.0" address inside a container will be
+ accessible from the network.
+ Modifying this array with strategic merge patch may corrupt the data.
+ For more information See https://github.com/kubernetes/kubernetes/issues/108255.
Cannot be updated.
items:
description: ContainerPort represents a network port
in a single container.
properties:
containerPort:
- description: Number of port to expose on the pod's
- IP address. This must be a valid port number,
- 0 < x < 65536.
+ description: |-
+ Number of port to expose on the pod's IP address.
+ This must be a valid port number, 0 < x < 65536.
format: int32
type: integer
hostIP:
@@ -8509,23 +9250,24 @@ spec:
to.
type: string
hostPort:
- description: Number of port to expose on the host.
- If specified, this must be a valid port number,
- 0 < x < 65536. If HostNetwork is specified, this
- must match ContainerPort. Most containers do not
- need this.
+ description: |-
+ Number of port to expose on the host.
+ If specified, this must be a valid port number, 0 < x < 65536.
+ If HostNetwork is specified, this must match ContainerPort.
+ Most containers do not need this.
format: int32
type: integer
name:
- description: If specified, this must be an IANA_SVC_NAME
- and unique within the pod. Each named port in
- a pod must have a unique name. Name for the port
- that can be referred to by services.
+ description: |-
+ If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
+ named port in a pod must have a unique name. Name for the port that can be
+ referred to by services.
type: string
protocol:
default: TCP
- description: Protocol for port. Must be UDP, TCP,
- or SCTP. Defaults to "TCP".
+ description: |-
+ Protocol for port. Must be UDP, TCP, or SCTP.
+ Defaults to "TCP".
type: string
required:
- containerPort
@@ -8536,37 +9278,36 @@ spec:
- protocol
x-kubernetes-list-type: map
readinessProbe:
- description: 'Periodic probe of container service readiness.
- Container will be removed from service endpoints if
- the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Periodic probe of container service readiness.
+ Container will be removed from service endpoints if the probe fails.
+ Cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
properties:
exec:
description: Exec specifies the action to take.
properties:
command:
- description: Command is the command line to execute
- inside the container, the working directory
- for the command is root ('/') in the container's
- filesystem. The command is simply exec'd, it
- is not run inside a shell, so traditional shell
- instructions ('|', etc) won't work. To use a
- shell, you need to explicitly call out to that
- shell. Exit status of 0 is treated as live/healthy
- and non-zero is unhealthy.
+ description: |-
+ Command is the command line to execute inside the container, the working directory for the
+ command is root ('/') in the container's filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
+ a shell, you need to explicitly call out to that shell.
+ Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
type: object
failureThreshold:
- description: Minimum consecutive failures for the
- probe to be considered failed after having succeeded.
+ description: |-
+ Minimum consecutive failures for the probe to be considered failed after having succeeded.
Defaults to 3. Minimum value is 1.
format: int32
type: integer
grpc:
description: GRPC specifies an action involving a
- GRPC port. This is a beta field and requires enabling
- GRPCContainerProbe feature gate.
+ GRPC port.
properties:
port:
description: Port number of the gRPC service.
@@ -8574,11 +9315,12 @@ spec:
format: int32
type: integer
service:
- description: "Service is the name of the service
- to place in the gRPC HealthCheckRequest (see
- https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
- \n If this is not specified, the default behavior
- is defined by gRPC."
+ default: ""
+ description: |-
+ Service is the name of the service to place in the gRPC HealthCheckRequest
+ (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+
+ If this is not specified, the default behavior is defined by gRPC.
type: string
required:
- port
@@ -8588,9 +9330,9 @@ spec:
perform.
properties:
host:
- description: Host name to connect to, defaults
- to the pod IP. You probably want to set "Host"
- in httpHeaders instead.
+ description: |-
+ Host name to connect to, defaults to the pod IP. You probably want to set
+ "Host" in httpHeaders instead.
type: string
httpHeaders:
description: Custom headers to set in the request.
@@ -8600,7 +9342,9 @@ spec:
to be used in HTTP probes
properties:
name:
- description: The header field name
+ description: |-
+ The header field name.
+ This will be canonicalized upon output, so case-variant names will be understood as the same header.
type: string
value:
description: The header field value
@@ -8610,6 +9354,7 @@ spec:
- value
type: object
type: array
+ x-kubernetes-list-type: atomic
path:
description: Path to access on the HTTP server.
type: string
@@ -8617,33 +9362,35 @@ spec:
anyOf:
- type: integer
- type: string
- description: Name or number of the port to access
- on the container. Number must be in the range
- 1 to 65535. Name must be an IANA_SVC_NAME.
+ description: |-
+ Name or number of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
scheme:
- description: Scheme to use for connecting to the
- host. Defaults to HTTP.
+ description: |-
+ Scheme to use for connecting to the host.
+ Defaults to HTTP.
type: string
required:
- port
type: object
initialDelaySeconds:
- description: 'Number of seconds after the container
- has started before liveness probes are initiated.
- More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Number of seconds after the container has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
format: int32
type: integer
periodSeconds:
- description: How often (in seconds) to perform the
- probe. Default to 10 seconds. Minimum value is 1.
+ description: |-
+ How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
format: int32
type: integer
successThreshold:
- description: Minimum consecutive successes for the
- probe to be considered successful after having failed.
- Defaults to 1. Must be 1 for liveness and startup.
- Minimum value is 1.
+ description: |-
+ Minimum consecutive successes for the probe to be considered successful after having failed.
+ Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
format: int32
type: integer
tcpSocket:
@@ -8658,42 +9405,90 @@ spec:
anyOf:
- type: integer
- type: string
- description: Number or name of the port to access
- on the container. Number must be in the range
- 1 to 65535. Name must be an IANA_SVC_NAME.
+ description: |-
+ Number or name of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
required:
- port
type: object
terminationGracePeriodSeconds:
- description: Optional duration in seconds the pod
- needs to terminate gracefully upon probe failure.
- The grace period is the duration in seconds after
- the processes running in the pod are sent a termination
- signal and the time when the processes are forcibly
- halted with a kill signal. Set this value longer
- than the expected cleanup time for your process.
- If this value is nil, the pod's terminationGracePeriodSeconds
- will be used. Otherwise, this value overrides the
- value provided by the pod spec. Value must be non-negative
- integer. The value zero indicates stop immediately
- via the kill signal (no opportunity to shut down).
- This is a beta field and requires enabling ProbeTerminationGracePeriod
- feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
- is used if unset.
+ description: |-
+ Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
+ The grace period is the duration in seconds after the processes running in the pod are sent
+ a termination signal and the time when the processes are forcibly halted with a kill signal.
+ Set this value longer than the expected cleanup time for your process.
+ If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
+ value overrides the value provided by the pod spec.
+ Value must be non-negative integer. The value zero indicates stop immediately via
+ the kill signal (no opportunity to shut down).
+ This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
+ Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
format: int64
type: integer
timeoutSeconds:
- description: 'Number of seconds after which the probe
- times out. Defaults to 1 second. Minimum value is
- 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Number of seconds after which the probe times out.
+ Defaults to 1 second. Minimum value is 1.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
format: int32
type: integer
type: object
+ resizePolicy:
+ description: Resources resize policy for the container.
+ items:
+ description: ContainerResizePolicy represents resource
+ resize policy for the container.
+ properties:
+ resourceName:
+ description: |-
+ Name of the resource to which this resource resize policy applies.
+ Supported values: cpu, memory.
+ type: string
+ restartPolicy:
+ description: |-
+ Restart policy to apply when specified resource is resized.
+ If not specified, it defaults to NotRequired.
+ type: string
+ required:
+ - resourceName
+ - restartPolicy
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
resources:
- description: 'Compute Resources required by this container.
- Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Compute Resources required by this container.
+ Cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry
+ in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -8701,8 +9496,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount
- of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -8711,33 +9507,76 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is omitted
- for a container, it defaults to Limits if that is
- explicitly specified, otherwise to an implementation-defined
- value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
+ restartPolicy:
+ description: |-
+ RestartPolicy defines the restart behavior of individual containers in a pod.
+ This field may only be set for init containers, and the only allowed value is "Always".
+ For non-init containers or when this field is not specified,
+ the restart behavior is defined by the Pod's restart policy and the container type.
+ Setting the RestartPolicy as "Always" for the init container will have the following effect:
+ this init container will be continually restarted on
+ exit until all regular containers have terminated. Once all regular
+ containers have completed, all init containers with restartPolicy "Always"
+ will be shut down. This lifecycle differs from normal init containers and
+ is often referred to as a "sidecar" container. Although this init
+ container still starts in the init container sequence, it does not wait
+ for the container to complete before proceeding to the next init
+ container. Instead, the next init container starts immediately after this
+ init container is started, or after any startupProbe has successfully
+ completed.
+ type: string
securityContext:
- description: 'SecurityContext defines the security options
- the container should be run with. If set, the fields
- of SecurityContext override the equivalent fields of
- PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'
+ description: |-
+ SecurityContext defines the security options the container should be run with.
+ If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
+ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
properties:
allowPrivilegeEscalation:
- description: 'AllowPrivilegeEscalation controls whether
- a process can gain more privileges than its parent
- process. This bool directly controls if the no_new_privs
- flag will be set on the container process. AllowPrivilegeEscalation
- is true always when the container is: 1) run as
- Privileged 2) has CAP_SYS_ADMIN Note that this field
- cannot be set when spec.os.name is windows.'
+ description: |-
+ AllowPrivilegeEscalation controls whether a process can gain more
+ privileges than its parent process. This bool directly controls if
+ the no_new_privs flag will be set on the container process.
+ AllowPrivilegeEscalation is true always when the container is:
+ 1) run as Privileged
+ 2) has CAP_SYS_ADMIN
+ Note that this field cannot be set when spec.os.name is windows.
type: boolean
+ appArmorProfile:
+ description: |-
+ appArmorProfile is the AppArmor options to use by this container. If set, this profile
+ overrides the pod's appArmorProfile.
+ Note that this field cannot be set when spec.os.name is windows.
+ properties:
+ localhostProfile:
+ description: |-
+ localhostProfile indicates a profile loaded on the node that should be used.
+ The profile must be preconfigured on the node to work.
+ Must match the loaded name of the profile.
+ Must be set if and only if type is "Localhost".
+ type: string
+ type:
+ description: |-
+ type indicates which kind of AppArmor profile will be applied.
+ Valid options are:
+ Localhost - a profile pre-loaded on the node.
+ RuntimeDefault - the container runtime's default profile.
+ Unconfined - no AppArmor enforcement.
+ type: string
+ required:
+ - type
+ type: object
capabilities:
- description: The capabilities to add/drop when running
- containers. Defaults to the default set of capabilities
- granted by the container runtime. Note that this
- field cannot be set when spec.os.name is windows.
+ description: |-
+ The capabilities to add/drop when running containers.
+ Defaults to the default set of capabilities granted by the container runtime.
+ Note that this field cannot be set when spec.os.name is windows.
properties:
add:
description: Added capabilities
@@ -8746,6 +9585,7 @@ spec:
type
type: string
type: array
+ x-kubernetes-list-type: atomic
drop:
description: Removed capabilities
items:
@@ -8753,65 +9593,63 @@ spec:
type
type: string
type: array
+ x-kubernetes-list-type: atomic
type: object
privileged:
- description: Run container in privileged mode. Processes
- in privileged containers are essentially equivalent
- to root on the host. Defaults to false. Note that
- this field cannot be set when spec.os.name is windows.
+ description: |-
+ Run container in privileged mode.
+ Processes in privileged containers are essentially equivalent to root on the host.
+ Defaults to false.
+ Note that this field cannot be set when spec.os.name is windows.
type: boolean
procMount:
- description: procMount denotes the type of proc mount
- to use for the containers. The default is DefaultProcMount
- which uses the container runtime defaults for readonly
- paths and masked paths. This requires the ProcMountType
- feature flag to be enabled. Note that this field
- cannot be set when spec.os.name is windows.
+ description: |-
+ procMount denotes the type of proc mount to use for the containers.
+ The default is DefaultProcMount which uses the container runtime defaults for
+ readonly paths and masked paths.
+ This requires the ProcMountType feature flag to be enabled.
+ Note that this field cannot be set when spec.os.name is windows.
type: string
readOnlyRootFilesystem:
- description: Whether this container has a read-only
- root filesystem. Default is false. Note that this
- field cannot be set when spec.os.name is windows.
+ description: |-
+ Whether this container has a read-only root filesystem.
+ Default is false.
+ Note that this field cannot be set when spec.os.name is windows.
type: boolean
runAsGroup:
- description: The GID to run the entrypoint of the
- container process. Uses runtime default if unset.
- May also be set in PodSecurityContext. If set in
- both SecurityContext and PodSecurityContext, the
- value specified in SecurityContext takes precedence.
- Note that this field cannot be set when spec.os.name
- is windows.
+ description: |-
+ The GID to run the entrypoint of the container process.
+ Uses runtime default if unset.
+ May also be set in PodSecurityContext. If set in both SecurityContext and
+ PodSecurityContext, the value specified in SecurityContext takes precedence.
+ Note that this field cannot be set when spec.os.name is windows.
format: int64
type: integer
runAsNonRoot:
- description: Indicates that the container must run
- as a non-root user. If true, the Kubelet will validate
- the image at runtime to ensure that it does not
- run as UID 0 (root) and fail to start the container
- if it does. If unset or false, no such validation
- will be performed. May also be set in PodSecurityContext. If
- set in both SecurityContext and PodSecurityContext,
- the value specified in SecurityContext takes precedence.
+ description: |-
+ Indicates that the container must run as a non-root user.
+ If true, the Kubelet will validate the image at runtime to ensure that it
+ does not run as UID 0 (root) and fail to start the container if it does.
+ If unset or false, no such validation will be performed.
+ May also be set in PodSecurityContext. If set in both SecurityContext and
+ PodSecurityContext, the value specified in SecurityContext takes precedence.
type: boolean
runAsUser:
- description: The UID to run the entrypoint of the
- container process. Defaults to user specified in
- image metadata if unspecified. May also be set in
- PodSecurityContext. If set in both SecurityContext
- and PodSecurityContext, the value specified in SecurityContext
- takes precedence. Note that this field cannot be
- set when spec.os.name is windows.
+ description: |-
+ The UID to run the entrypoint of the container process.
+ Defaults to user specified in image metadata if unspecified.
+ May also be set in PodSecurityContext. If set in both SecurityContext and
+ PodSecurityContext, the value specified in SecurityContext takes precedence.
+ Note that this field cannot be set when spec.os.name is windows.
format: int64
type: integer
seLinuxOptions:
- description: The SELinux context to be applied to
- the container. If unspecified, the container runtime
- will allocate a random SELinux context for each
- container. May also be set in PodSecurityContext. If
- set in both SecurityContext and PodSecurityContext,
- the value specified in SecurityContext takes precedence.
- Note that this field cannot be set when spec.os.name
- is windows.
+ description: |-
+ The SELinux context to be applied to the container.
+ If unspecified, the container runtime will allocate a random SELinux context for each
+ container. May also be set in PodSecurityContext. If set in both SecurityContext and
+ PodSecurityContext, the value specified in SecurityContext takes precedence.
+ Note that this field cannot be set when spec.os.name is windows.
properties:
level:
description: Level is SELinux level label that
@@ -8831,113 +9669,98 @@ spec:
type: string
type: object
seccompProfile:
- description: The seccomp options to use by this container.
- If seccomp options are provided at both the pod
- & container level, the container options override
- the pod options. Note that this field cannot be
- set when spec.os.name is windows.
+ description: |-
+ The seccomp options to use by this container. If seccomp options are
+ provided at both the pod & container level, the container options
+ override the pod options.
+ Note that this field cannot be set when spec.os.name is windows.
properties:
localhostProfile:
- description: localhostProfile indicates a profile
- defined in a file on the node should be used.
- The profile must be preconfigured on the node
- to work. Must be a descending path, relative
- to the kubelet's configured seccomp profile
- location. Must only be set if type is "Localhost".
+ description: |-
+ localhostProfile indicates a profile defined in a file on the node should be used.
+ The profile must be preconfigured on the node to work.
+ Must be a descending path, relative to the kubelet's configured seccomp profile location.
+ Must be set if type is "Localhost". Must NOT be set for any other type.
type: string
type:
- description: 'type indicates which kind of seccomp
- profile will be applied. Valid options are:
- Localhost - a profile defined in a file on the
- node should be used. RuntimeDefault - the container
- runtime default profile should be used. Unconfined
- - no profile should be applied.'
+ description: |-
+ type indicates which kind of seccomp profile will be applied.
+ Valid options are:
+
+ Localhost - a profile defined in a file on the node should be used.
+ RuntimeDefault - the container runtime default profile should be used.
+ Unconfined - no profile should be applied.
type: string
required:
- type
type: object
windowsOptions:
- description: The Windows specific settings applied
- to all containers. If unspecified, the options from
- the PodSecurityContext will be used. If set in both
- SecurityContext and PodSecurityContext, the value
- specified in SecurityContext takes precedence. Note
- that this field cannot be set when spec.os.name
- is linux.
+ description: |-
+ The Windows specific settings applied to all containers.
+ If unspecified, the options from the PodSecurityContext will be used.
+ If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
+ Note that this field cannot be set when spec.os.name is linux.
properties:
gmsaCredentialSpec:
- description: GMSACredentialSpec is where the GMSA
- admission webhook (https://github.com/kubernetes-sigs/windows-gmsa)
- inlines the contents of the GMSA credential
- spec named by the GMSACredentialSpecName field.
+ description: |-
+ GMSACredentialSpec is where the GMSA admission webhook
+ (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
+ GMSA credential spec named by the GMSACredentialSpecName field.
type: string
gmsaCredentialSpecName:
description: GMSACredentialSpecName is the name
of the GMSA credential spec to use.
type: string
hostProcess:
- description: HostProcess determines if a container
- should be run as a 'Host Process' container.
- This field is alpha-level and will only be honored
- by components that enable the WindowsHostProcessContainers
- feature flag. Setting this field without the
- feature flag will result in errors when validating
- the Pod. All of a Pod's containers must have
- the same effective HostProcess value (it is
- not allowed to have a mix of HostProcess containers
- and non-HostProcess containers). In addition,
- if HostProcess is true then HostNetwork must
- also be set to true.
+ description: |-
+ HostProcess determines if a container should be run as a 'Host Process' container.
+ All of a Pod's containers must have the same effective HostProcess value
+ (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
+ In addition, if HostProcess is true then HostNetwork must also be set to true.
type: boolean
runAsUserName:
- description: The UserName in Windows to run the
- entrypoint of the container process. Defaults
- to the user specified in image metadata if unspecified.
- May also be set in PodSecurityContext. If set
- in both SecurityContext and PodSecurityContext,
- the value specified in SecurityContext takes
- precedence.
+ description: |-
+ The UserName in Windows to run the entrypoint of the container process.
+ Defaults to the user specified in image metadata if unspecified.
+ May also be set in PodSecurityContext. If set in both SecurityContext and
+ PodSecurityContext, the value specified in SecurityContext takes precedence.
type: string
type: object
type: object
startupProbe:
- description: 'StartupProbe indicates that the Pod has
- successfully initialized. If specified, no other probes
- are executed until this completes successfully. If this
- probe fails, the Pod will be restarted, just as if the
- livenessProbe failed. This can be used to provide different
- probe parameters at the beginning of a Pod''s lifecycle,
- when it might take a long time to load data or warm
- a cache, than during steady-state operation. This cannot
- be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ StartupProbe indicates that the Pod has successfully initialized.
+ If specified, no other probes are executed until this completes successfully.
+ If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
+ This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
+ when it might take a long time to load data or warm a cache, than during steady-state operation.
+ This cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
properties:
exec:
description: Exec specifies the action to take.
properties:
command:
- description: Command is the command line to execute
- inside the container, the working directory
- for the command is root ('/') in the container's
- filesystem. The command is simply exec'd, it
- is not run inside a shell, so traditional shell
- instructions ('|', etc) won't work. To use a
- shell, you need to explicitly call out to that
- shell. Exit status of 0 is treated as live/healthy
- and non-zero is unhealthy.
+ description: |-
+ Command is the command line to execute inside the container, the working directory for the
+ command is root ('/') in the container's filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
+ a shell, you need to explicitly call out to that shell.
+ Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
type: object
failureThreshold:
- description: Minimum consecutive failures for the
- probe to be considered failed after having succeeded.
+ description: |-
+ Minimum consecutive failures for the probe to be considered failed after having succeeded.
Defaults to 3. Minimum value is 1.
format: int32
type: integer
grpc:
description: GRPC specifies an action involving a
- GRPC port. This is a beta field and requires enabling
- GRPCContainerProbe feature gate.
+ GRPC port.
properties:
port:
description: Port number of the gRPC service.
@@ -8945,11 +9768,12 @@ spec:
format: int32
type: integer
service:
- description: "Service is the name of the service
- to place in the gRPC HealthCheckRequest (see
- https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
- \n If this is not specified, the default behavior
- is defined by gRPC."
+ default: ""
+ description: |-
+ Service is the name of the service to place in the gRPC HealthCheckRequest
+ (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+
+ If this is not specified, the default behavior is defined by gRPC.
type: string
required:
- port
@@ -8959,9 +9783,9 @@ spec:
perform.
properties:
host:
- description: Host name to connect to, defaults
- to the pod IP. You probably want to set "Host"
- in httpHeaders instead.
+ description: |-
+ Host name to connect to, defaults to the pod IP. You probably want to set
+ "Host" in httpHeaders instead.
type: string
httpHeaders:
description: Custom headers to set in the request.
@@ -8971,7 +9795,9 @@ spec:
to be used in HTTP probes
properties:
name:
- description: The header field name
+ description: |-
+ The header field name.
+ This will be canonicalized upon output, so case-variant names will be understood as the same header.
type: string
value:
description: The header field value
@@ -8981,6 +9807,7 @@ spec:
- value
type: object
type: array
+ x-kubernetes-list-type: atomic
path:
description: Path to access on the HTTP server.
type: string
@@ -8988,33 +9815,35 @@ spec:
anyOf:
- type: integer
- type: string
- description: Name or number of the port to access
- on the container. Number must be in the range
- 1 to 65535. Name must be an IANA_SVC_NAME.
+ description: |-
+ Name or number of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
scheme:
- description: Scheme to use for connecting to the
- host. Defaults to HTTP.
+ description: |-
+ Scheme to use for connecting to the host.
+ Defaults to HTTP.
type: string
required:
- port
type: object
initialDelaySeconds:
- description: 'Number of seconds after the container
- has started before liveness probes are initiated.
- More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Number of seconds after the container has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
format: int32
type: integer
periodSeconds:
- description: How often (in seconds) to perform the
- probe. Default to 10 seconds. Minimum value is 1.
+ description: |-
+ How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
format: int32
type: integer
successThreshold:
- description: Minimum consecutive successes for the
- probe to be considered successful after having failed.
- Defaults to 1. Must be 1 for liveness and startup.
- Minimum value is 1.
+ description: |-
+ Minimum consecutive successes for the probe to be considered successful after having failed.
+ Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
format: int32
type: integer
tcpSocket:
@@ -9029,81 +9858,76 @@ spec:
anyOf:
- type: integer
- type: string
- description: Number or name of the port to access
- on the container. Number must be in the range
- 1 to 65535. Name must be an IANA_SVC_NAME.
+ description: |-
+ Number or name of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
required:
- port
type: object
terminationGracePeriodSeconds:
- description: Optional duration in seconds the pod
- needs to terminate gracefully upon probe failure.
- The grace period is the duration in seconds after
- the processes running in the pod are sent a termination
- signal and the time when the processes are forcibly
- halted with a kill signal. Set this value longer
- than the expected cleanup time for your process.
- If this value is nil, the pod's terminationGracePeriodSeconds
- will be used. Otherwise, this value overrides the
- value provided by the pod spec. Value must be non-negative
- integer. The value zero indicates stop immediately
- via the kill signal (no opportunity to shut down).
- This is a beta field and requires enabling ProbeTerminationGracePeriod
- feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds
- is used if unset.
+ description: |-
+ Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
+ The grace period is the duration in seconds after the processes running in the pod are sent
+ a termination signal and the time when the processes are forcibly halted with a kill signal.
+ Set this value longer than the expected cleanup time for your process.
+ If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
+ value overrides the value provided by the pod spec.
+ Value must be non-negative integer. The value zero indicates stop immediately via
+ the kill signal (no opportunity to shut down).
+ This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
+ Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
format: int64
type: integer
timeoutSeconds:
- description: 'Number of seconds after which the probe
- times out. Defaults to 1 second. Minimum value is
- 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Number of seconds after which the probe times out.
+ Defaults to 1 second. Minimum value is 1.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
format: int32
type: integer
type: object
stdin:
- description: Whether this container should allocate a
- buffer for stdin in the container runtime. If this is
- not set, reads from stdin in the container will always
- result in EOF. Default is false.
+ description: |-
+ Whether this container should allocate a buffer for stdin in the container runtime. If this
+ is not set, reads from stdin in the container will always result in EOF.
+ Default is false.
type: boolean
stdinOnce:
- description: Whether the container runtime should close
- the stdin channel after it has been opened by a single
- attach. When stdin is true the stdin stream will remain
- open across multiple attach sessions. If stdinOnce is
- set to true, stdin is opened on container start, is
- empty until the first client attaches to stdin, and
- then remains open and accepts data until the client
- disconnects, at which time stdin is closed and remains
- closed until the container is restarted. If this flag
- is false, a container processes that reads from stdin
- will never receive an EOF. Default is false
+ description: |-
+ Whether the container runtime should close the stdin channel after it has been opened by
+ a single attach. When stdin is true the stdin stream will remain open across multiple attach
+ sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
+ first client attaches to stdin, and then remains open and accepts data until the client disconnects,
+ at which time stdin is closed and remains closed until the container is restarted. If this
+ flag is false, a container processes that reads from stdin will never receive an EOF.
+ Default is false
type: boolean
terminationMessagePath:
- description: 'Optional: Path at which the file to which
- the container''s termination message will be written
- is mounted into the container''s filesystem. Message
- written is intended to be brief final status, such as
- an assertion failure message. Will be truncated by the
- node if greater than 4096 bytes. The total message length
- across all containers will be limited to 12kb. Defaults
- to /dev/termination-log. Cannot be updated.'
+ description: |-
+ Optional: Path at which the file to which the container's termination message
+ will be written is mounted into the container's filesystem.
+ Message written is intended to be brief final status, such as an assertion failure message.
+ Will be truncated by the node if greater than 4096 bytes. The total message length across
+ all containers will be limited to 12kb.
+ Defaults to /dev/termination-log.
+ Cannot be updated.
type: string
terminationMessagePolicy:
- description: Indicate how the termination message should
- be populated. File will use the contents of terminationMessagePath
- to populate the container status message on both success
- and failure. FallbackToLogsOnError will use the last
- chunk of container log output if the termination message
- file is empty and the container exited with an error.
- The log output is limited to 2048 bytes or 80 lines,
- whichever is smaller. Defaults to File. Cannot be updated.
+ description: |-
+ Indicate how the termination message should be populated. File will use the contents of
+ terminationMessagePath to populate the container status message on both success and failure.
+ FallbackToLogsOnError will use the last chunk of container log output if the termination
+ message file is empty and the container exited with an error.
+ The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
+ Defaults to File.
+ Cannot be updated.
type: string
tty:
- description: Whether this container should allocate a
- TTY for itself, also requires 'stdin' to be true. Default
- is false.
+ description: |-
+ Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
+ Default is false.
type: boolean
volumeDevices:
description: volumeDevices is the list of block devices
@@ -9125,86 +9949,118 @@ spec:
- name
type: object
type: array
+ x-kubernetes-list-map-keys:
+ - devicePath
+ x-kubernetes-list-type: map
volumeMounts:
- description: Pod volumes to mount into the container's
- filesystem. Cannot be updated.
+ description: |-
+ Pod volumes to mount into the container's filesystem.
+ Cannot be updated.
items:
description: VolumeMount describes a mounting of a Volume
within a container.
properties:
mountPath:
- description: Path within the container at which
- the volume should be mounted. Must not contain
- ':'.
+ description: |-
+ Path within the container at which the volume should be mounted. Must
+ not contain ':'.
type: string
mountPropagation:
- description: mountPropagation determines how mounts
- are propagated from the host to container and
- the other way around. When not set, MountPropagationNone
- is used. This field is beta in 1.10.
+ description: |-
+ mountPropagation determines how mounts are propagated from the host
+ to container and the other way around.
+ When not set, MountPropagationNone is used.
+ This field is beta in 1.10.
+ When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
+ (which defaults to None).
type: string
name:
description: This must match the Name of a Volume.
type: string
readOnly:
- description: Mounted read-only if true, read-write
- otherwise (false or unspecified). Defaults to
- false.
+ description: |-
+ Mounted read-only if true, read-write otherwise (false or unspecified).
+ Defaults to false.
type: boolean
+ recursiveReadOnly:
+ description: |-
+ RecursiveReadOnly specifies whether read-only mounts should be handled
+ recursively.
+
+ If ReadOnly is false, this field has no meaning and must be unspecified.
+
+ If ReadOnly is true, and this field is set to Disabled, the mount is not made
+ recursively read-only. If this field is set to IfPossible, the mount is made
+ recursively read-only, if it is supported by the container runtime. If this
+ field is set to Enabled, the mount is made recursively read-only if it is
+ supported by the container runtime, otherwise the pod will not be started and
+ an error will be generated to indicate the reason.
+
+ If this field is set to IfPossible or Enabled, MountPropagation must be set to
+ None (or be unspecified, which defaults to None).
+
+ If this field is not specified, it is treated as an equivalent of Disabled.
+ type: string
subPath:
- description: Path within the volume from which the
- container's volume should be mounted. Defaults
- to "" (volume's root).
+ description: |-
+ Path within the volume from which the container's volume should be mounted.
+ Defaults to "" (volume's root).
type: string
subPathExpr:
- description: Expanded path within the volume from
- which the container's volume should be mounted.
- Behaves similarly to SubPath but environment variable
- references $(VAR_NAME) are expanded using the
- container's environment. Defaults to "" (volume's
- root). SubPathExpr and SubPath are mutually exclusive.
+ description: |-
+ Expanded path within the volume from which the container's volume should be mounted.
+ Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
+ Defaults to "" (volume's root).
+ SubPathExpr and SubPath are mutually exclusive.
type: string
required:
- mountPath
- name
type: object
type: array
+ x-kubernetes-list-map-keys:
+ - mountPath
+ x-kubernetes-list-type: map
workingDir:
- description: Container's working directory. If not specified,
- the container runtime's default will be used, which
- might be configured in the container image. Cannot be
- updated.
+ description: |-
+ Container's working directory.
+ If not specified, the container runtime's default will be used, which
+ might be configured in the container image.
+ Cannot be updated.
type: string
required:
- name
type: object
type: array
dataVolumeClaimSpec:
- description: 'Defines a PersistentVolumeClaim for PostgreSQL
- data. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes'
+ description: |-
+ Defines a PersistentVolumeClaim for PostgreSQL data.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
properties:
accessModes:
- description: 'accessModes contains the desired access modes
- the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
+ description: |-
+ accessModes contains the desired access modes the volume should have.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
items:
type: string
- minItems: 1
type: array
+ x-kubernetes-list-type: atomic
dataSource:
- description: 'dataSource field can be used to specify either:
+ description: |-
+ dataSource field can be used to specify either:
* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
- * An existing PVC (PersistentVolumeClaim) If the provisioner
- or an external controller can support the specified data
- source, it will create a new volume based on the contents
- of the specified data source. If the AnyVolumeDataSource
- feature gate is enabled, this field will always have the
- same contents as the DataSourceRef field.'
+ * An existing PVC (PersistentVolumeClaim)
+ If the provisioner or an external controller can support the specified data source,
+ it will create a new volume based on the contents of the specified data source.
+ When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
+ and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
+ If the namespace is specified, then dataSourceRef will not be copied to dataSource.
properties:
apiGroup:
- description: APIGroup is the group for the resource
- being referenced. If APIGroup is not specified, the
- specified Kind must be in the core API group. For
- any other third-party types, APIGroup is required.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
+ For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource being referenced
@@ -9216,34 +10072,38 @@ spec:
- kind
- name
type: object
+ x-kubernetes-map-type: atomic
dataSourceRef:
- description: 'dataSourceRef specifies the object from which
- to populate the volume with data, if a non-empty volume
- is desired. This may be any local object from a non-empty
- API group (non core object) or a PersistentVolumeClaim
- object. When this field is specified, volume binding will
- only succeed if the type of the specified object matches
- some installed volume populator or dynamic provisioner.
- This field will replace the functionality of the DataSource
- field and as such if both fields are non-empty, they must
- have the same value. For backwards compatibility, both
- fields (DataSource and DataSourceRef) will be set to the
- same value automatically if one of them is empty and the
- other is non-empty. There are two important differences
- between DataSource and DataSourceRef: * While DataSource
- only allows two specific types of objects, DataSourceRef
- allows any non-core object, as well as PersistentVolumeClaim
- objects. * While DataSource ignores disallowed values
- (dropping them), DataSourceRef preserves all values, and
- generates an error if a disallowed value is specified.
- (Beta) Using this field requires the AnyVolumeDataSource
- feature gate to be enabled.'
+ description: |-
+ dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
+ volume is desired. This may be any object from a non-empty API group (non
+ core object) or a PersistentVolumeClaim object.
+ When this field is specified, volume binding will only succeed if the type of
+ the specified object matches some installed volume populator or dynamic
+ provisioner.
+ This field will replace the functionality of the dataSource field and as such
+ if both fields are non-empty, they must have the same value. For backwards
+ compatibility, when namespace isn't specified in dataSourceRef,
+ both fields (dataSource and dataSourceRef) will be set to the same
+ value automatically if one of them is empty and the other is non-empty.
+ When namespace is specified in dataSourceRef,
+ dataSource isn't set to the same value and must be empty.
+ There are three important differences between dataSource and dataSourceRef:
+ * While dataSource only allows two specific types of objects, dataSourceRef
+ allows any non-core object, as well as PersistentVolumeClaim objects.
+ * While dataSource ignores disallowed values (dropping them), dataSourceRef
+ preserves all values, and generates an error if a disallowed value is
+ specified.
+ * While dataSource only allows local objects, dataSourceRef allows objects
+ in any namespaces.
+ (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
+ (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
properties:
apiGroup:
- description: APIGroup is the group for the resource
- being referenced. If APIGroup is not specified, the
- specified Kind must be in the core API group. For
- any other third-party types, APIGroup is required.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
+ For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource being referenced
@@ -9251,17 +10111,23 @@ spec:
name:
description: Name is the name of resource being referenced
type: string
+ namespace:
+ description: |-
+ Namespace is the namespace of resource being referenced
+ Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
+ (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
+ type: string
required:
- kind
- name
type: object
resources:
- description: 'resources represents the minimum resources
- the volume should have. If RecoverVolumeExpansionFailure
- feature is enabled users are allowed to specify resource
- requirements that are lower than previous value but must
- still be higher than capacity recorded in the status field
- of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
+ description: |-
+ resources represents the minimum resources the volume should have.
+ If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
+ that are lower than previous value but must still be higher than capacity recorded in the
+ status field of the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
properties:
limits:
additionalProperties:
@@ -9270,8 +10136,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount of
- compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -9280,16 +10147,12 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is omitted
- for a container, it defaults to Limits if that is
- explicitly specified, otherwise to an implementation-defined
- value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
- required:
- - storage
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
- required:
- - requests
type: object
selector:
description: selector is a label query over volumes to consider
@@ -9299,8 +10162,8 @@ spec:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a selector
- that contains values, a key, and an operator that
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
@@ -9308,52 +10171,72 @@ spec:
applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are In,
- NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string values.
- If the operator is In or NotIn, the values array
- must be non-empty. If the operator is Exists
- or DoesNotExist, the values array must be empty.
- This array is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field
- is "key", the operator is "In", and the values array
- contains only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
storageClassName:
- description: 'storageClassName is the name of the StorageClass
- required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
+ description: |-
+ storageClassName is the name of the StorageClass required by the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
+ type: string
+ volumeAttributesClassName:
+ description: |-
+ volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
+ If specified, the CSI driver will create or update the volume with the attributes defined
+ in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
+ it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
+ will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
+ If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
+ will be set by the persistentvolume controller if it exists.
+ If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
+ set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
+ exists.
+ More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
+ (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
type: string
volumeMode:
- description: volumeMode defines what type of volume is required
- by the claim. Value of Filesystem is implied when not
- included in claim spec.
+ description: |-
+ volumeMode defines what type of volume is required by the claim.
+ Value of Filesystem is implied when not included in claim spec.
type: string
volumeName:
description: volumeName is the binding reference to the
PersistentVolume backing this claim.
type: string
- required:
- - accessModes
- - resources
type: object
+ x-kubernetes-validations:
+ - message: missing accessModes
+ rule: has(self.accessModes) && size(self.accessModes) > 0
+ - message: missing storage request
+ rule: has(self.resources) && has(self.resources.requests)
+ && has(self.resources.requests.storage)
metadata:
description: Metadata contains metadata for custom resources
properties:
@@ -9370,22 +10253,24 @@ spec:
anyOf:
- type: integer
- type: string
- description: Minimum number of pods that should be available
- at a time. Defaults to one when the replicas field is greater
- than one.
+ description: |-
+ Minimum number of pods that should be available at a time.
+ Defaults to one when the replicas field is greater than one.
x-kubernetes-int-or-string: true
name:
default: ""
- description: Name that associates this set of PostgreSQL pods.
- This field is optional when only one instance set is defined.
- Each instance set in a cluster must have a unique name. The
- combined length of this and the cluster name must be 46 characters
- or less.
+ description: |-
+ Name that associates this set of PostgreSQL pods. This field is optional
+ when only one instance set is defined. Each instance set in a cluster
+ must have a unique name. The combined length of this and the cluster name
+ must be 46 characters or less.
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?)?$
type: string
priorityClassName:
- description: 'Priority class name for the PostgreSQL pod. Changing
- this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/'
+ description: |-
+ Priority class name for the PostgreSQL pod. Changing this value causes
+ PostgreSQL to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
type: string
replicas:
default: 1
@@ -9396,6 +10281,31 @@ spec:
resources:
description: Compute resources of a PostgreSQL container.
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -9403,8 +10313,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount of compute
- resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -9413,11 +10324,11 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount of compute
- resources required. If Requests is omitted for a container,
- it defaults to Limits if that is explicitly specified,
- otherwise to an implementation-defined value. More info:
- https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
sidecars:
@@ -9430,6 +10341,32 @@ spec:
resources:
description: Resource requirements for a sidecar container
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry
+ in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -9437,8 +10374,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount
- of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -9447,48 +10385,50 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is
- omitted for a container, it defaults to Limits
- if that is explicitly specified, otherwise to
- an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
type: object
type: object
tablespaceVolumes:
- description: The list of tablespaces volumes to mount for this
- postgrescluster This field requires enabling TablespaceVolumes
- feature gate
+ description: |-
+ The list of tablespaces volumes to mount for this postgrescluster
+ This field requires enabling TablespaceVolumes feature gate
items:
properties:
dataVolumeClaimSpec:
- description: 'Defines a PersistentVolumeClaim for a tablespace.
- More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes'
+ description: |-
+ Defines a PersistentVolumeClaim for a tablespace.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
properties:
accessModes:
- description: 'accessModes contains the desired access
- modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
+ description: |-
+ accessModes contains the desired access modes the volume should have.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
dataSource:
- description: 'dataSource field can be used to specify
- either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
- * An existing PVC (PersistentVolumeClaim) If the
- provisioner or an external controller can support
- the specified data source, it will create a new
- volume based on the contents of the specified data
- source. If the AnyVolumeDataSource feature gate
- is enabled, this field will always have the same
- contents as the DataSourceRef field.'
+ description: |-
+ dataSource field can be used to specify either:
+ * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
+ * An existing PVC (PersistentVolumeClaim)
+ If the provisioner or an external controller can support the specified data source,
+ it will create a new volume based on the contents of the specified data source.
+ When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
+ and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
+ If the namespace is specified, then dataSourceRef will not be copied to dataSource.
properties:
apiGroup:
- description: APIGroup is the group for the resource
- being referenced. If APIGroup is not specified,
- the specified Kind must be in the core API group.
- For any other third-party types, APIGroup is
- required.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
+ For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource being
@@ -9502,37 +10442,38 @@ spec:
- kind
- name
type: object
+ x-kubernetes-map-type: atomic
dataSourceRef:
- description: 'dataSourceRef specifies the object from
- which to populate the volume with data, if a non-empty
- volume is desired. This may be any local object
- from a non-empty API group (non core object) or
- a PersistentVolumeClaim object. When this field
- is specified, volume binding will only succeed if
- the type of the specified object matches some installed
- volume populator or dynamic provisioner. This field
- will replace the functionality of the DataSource
- field and as such if both fields are non-empty,
- they must have the same value. For backwards compatibility,
- both fields (DataSource and DataSourceRef) will
- be set to the same value automatically if one of
- them is empty and the other is non-empty. There
- are two important differences between DataSource
- and DataSourceRef: * While DataSource only allows
- two specific types of objects, DataSourceRef allows
- any non-core object, as well as PersistentVolumeClaim
- objects. * While DataSource ignores disallowed values
- (dropping them), DataSourceRef preserves all values,
- and generates an error if a disallowed value is
- specified. (Beta) Using this field requires the
- AnyVolumeDataSource feature gate to be enabled.'
+ description: |-
+ dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
+ volume is desired. This may be any object from a non-empty API group (non
+ core object) or a PersistentVolumeClaim object.
+ When this field is specified, volume binding will only succeed if the type of
+ the specified object matches some installed volume populator or dynamic
+ provisioner.
+ This field will replace the functionality of the dataSource field and as such
+ if both fields are non-empty, they must have the same value. For backwards
+ compatibility, when namespace isn't specified in dataSourceRef,
+ both fields (dataSource and dataSourceRef) will be set to the same
+ value automatically if one of them is empty and the other is non-empty.
+ When namespace is specified in dataSourceRef,
+ dataSource isn't set to the same value and must be empty.
+ There are three important differences between dataSource and dataSourceRef:
+ * While dataSource only allows two specific types of objects, dataSourceRef
+ allows any non-core object, as well as PersistentVolumeClaim objects.
+ * While dataSource ignores disallowed values (dropping them), dataSourceRef
+ preserves all values, and generates an error if a disallowed value is
+ specified.
+ * While dataSource only allows local objects, dataSourceRef allows objects
+ in any namespaces.
+ (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
+ (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
properties:
apiGroup:
- description: APIGroup is the group for the resource
- being referenced. If APIGroup is not specified,
- the specified Kind must be in the core API group.
- For any other third-party types, APIGroup is
- required.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
+ For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource being
@@ -9542,17 +10483,23 @@ spec:
description: Name is the name of resource being
referenced
type: string
+ namespace:
+ description: |-
+ Namespace is the namespace of resource being referenced
+ Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
+ (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
+ type: string
required:
- kind
- name
type: object
resources:
- description: 'resources represents the minimum resources
- the volume should have. If RecoverVolumeExpansionFailure
- feature is enabled users are allowed to specify
- resource requirements that are lower than previous
- value but must still be higher than capacity recorded
- in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
+ description: |-
+ resources represents the minimum resources the volume should have.
+ If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
+ that are lower than previous value but must still be higher than capacity recorded in the
+ status field of the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
properties:
limits:
additionalProperties:
@@ -9561,8 +10508,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount
- of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -9571,12 +10519,11 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is
- omitted for a container, it defaults to Limits
- if that is explicitly specified, otherwise to
- an implementation-defined value. More info:
- https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
selector:
@@ -9588,63 +10535,86 @@ spec:
selector requirements. The requirements are
ANDed.
items:
- description: A label selector requirement is
- a selector that contains values, a key, and
- an operator that relates the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
- description: operator represents a key's
- relationship to a set of values. Valid
- operators are In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty. If
- the operator is Exists or DoesNotExist,
- the values array must be empty. This array
- is replaced during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is "In",
- and the values array contains only "value".
- The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
storageClassName:
- description: 'storageClassName is the name of the
- StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
+ description: |-
+ storageClassName is the name of the StorageClass required by the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
+ type: string
+ volumeAttributesClassName:
+ description: |-
+ volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
+ If specified, the CSI driver will create or update the volume with the attributes defined
+ in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
+ it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
+ will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
+ If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
+ will be set by the persistentvolume controller if it exists.
+ If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
+ set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
+ exists.
+ More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
+ (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
type: string
volumeMode:
- description: volumeMode defines what type of volume
- is required by the claim. Value of Filesystem is
- implied when not included in claim spec.
+ description: |-
+ volumeMode defines what type of volume is required by the claim.
+ Value of Filesystem is implied when not included in claim spec.
type: string
volumeName:
description: volumeName is the binding reference to
the PersistentVolume backing this claim.
type: string
type: object
+ x-kubernetes-validations:
+ - message: missing accessModes
+ rule: has(self.accessModes) && size(self.accessModes)
+ > 0
+ - message: missing storage request
+ rule: has(self.resources) && has(self.resources.requests)
+ && has(self.resources.requests.storage)
name:
- description: The name for the tablespace, used as the
- path name for the volume. Must be unique in the instance
- set since they become the directory names.
+ description: |-
+ The name for the tablespace, used as the path name for the volume.
+ Must be unique in the instance set since they become the directory names.
minLength: 1
pattern: ^[a-z][a-z0-9]*$
type: string
@@ -9657,67 +10627,67 @@ spec:
- name
x-kubernetes-list-type: map
tolerations:
- description: 'Tolerations of a PostgreSQL pod. Changing this
- value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration'
+ description: |-
+ Tolerations of a PostgreSQL pod. Changing this value causes PostgreSQL to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
items:
- description: The pod this Toleration is attached to tolerates
- any taint that matches the triple using
- the matching operator .
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
properties:
effect:
- description: Effect indicates the taint effect to match.
- Empty means match all taint effects. When specified,
- allowed values are NoSchedule, PreferNoSchedule and
- NoExecute.
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
type: string
key:
- description: Key is the taint key that the toleration
- applies to. Empty means match all taint keys. If the
- key is empty, operator must be Exists; this combination
- means to match all values and all keys.
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
type: string
operator:
- description: Operator represents a key's relationship
- to the value. Valid operators are Exists and Equal.
- Defaults to Equal. Exists is equivalent to wildcard
- for value, so that a pod can tolerate all taints of
- a particular category.
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
type: string
tolerationSeconds:
- description: TolerationSeconds represents the period of
- time the toleration (which must be of effect NoExecute,
- otherwise this field is ignored) tolerates the taint.
- By default, it is not set, which means tolerate the
- taint forever (do not evict). Zero and negative values
- will be treated as 0 (evict immediately) by the system.
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
format: int64
type: integer
value:
- description: Value is the taint value the toleration matches
- to. If the operator is Exists, the value should be empty,
- otherwise just a regular string.
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
type: object
type: array
topologySpreadConstraints:
- description: 'Topology spread constraints of a PostgreSQL pod.
- Changing this value causes PostgreSQL to restart. More info:
- https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/'
+ description: |-
+ Topology spread constraints of a PostgreSQL pod. Changing this value causes
+ PostgreSQL to restart.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
items:
description: TopologySpreadConstraint specifies how to spread
matching pods among the given topology.
properties:
labelSelector:
- description: LabelSelector is used to find matching pods.
- Pods that match this label selector are counted to determine
- the number of pods in their corresponding topology domain.
+ description: |-
+ LabelSelector is used to find matching pods.
+ Pods that match this label selector are counted to determine the number of pods
+ in their corresponding topology domain.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a selector
- that contains values, a key, and an operator that
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
@@ -9725,115 +10695,150 @@ spec:
applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are In,
- NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string values.
- If the operator is In or NotIn, the values
- array must be non-empty. If the operator is
- Exists or DoesNotExist, the values array must
- be empty. This array is replaced during a
- strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field
- is "key", the operator is "In", and the values array
- contains only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select the pods over which
+ spreading will be calculated. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are ANDed with labelSelector
+ to select the group of existing pods over which spreading will be calculated
+ for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
+ MatchLabelKeys cannot be set when LabelSelector isn't set.
+ Keys that don't exist in the incoming pod labels will
+ be ignored. A null or empty list means only match against labelSelector.
+
+ This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
maxSkew:
- description: 'MaxSkew describes the degree to which pods
- may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,
- it is the maximum permitted difference between the number
- of matching pods in the target topology and the global
- minimum. The global minimum is the minimum number of
- matching pods in an eligible domain or zero if the number
- of eligible domains is less than MinDomains. For example,
- in a 3-zone cluster, MaxSkew is set to 1, and pods with
- the same labelSelector spread as 2/2/1: In this case,
- the global minimum is 1. | zone1 | zone2 | zone3 | | P
- P | P P | P | - if MaxSkew is 1, incoming pod
- can only be scheduled to zone3 to become 2/2/2; scheduling
- it onto zone1(zone2) would make the ActualSkew(3-1)
- on zone1(zone2) violate MaxSkew(1). - if MaxSkew is
- 2, incoming pod can be scheduled onto any zone. When
- `whenUnsatisfiable=ScheduleAnyway`, it is used to give
- higher precedence to topologies that satisfy it. It''s
- a required field. Default value is 1 and 0 is not allowed.'
+ description: |-
+ MaxSkew describes the degree to which pods may be unevenly distributed.
+ When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
+ between the number of matching pods in the target topology and the global minimum.
+ The global minimum is the minimum number of matching pods in an eligible domain
+ or zero if the number of eligible domains is less than MinDomains.
+ For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
+ labelSelector spread as 2/2/1:
+ In this case, the global minimum is 1.
+ | zone1 | zone2 | zone3 |
+ | P P | P P | P |
+ - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
+ scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
+ violate MaxSkew(1).
+ - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
+ When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
+ to topologies that satisfy it.
+ It's a required field. Default value is 1 and 0 is not allowed.
format: int32
type: integer
minDomains:
- description: "MinDomains indicates a minimum number of
- eligible domains. When the number of eligible domains
- with matching topology keys is less than minDomains,
- Pod Topology Spread treats \"global minimum\" as 0,
- and then the calculation of Skew is performed. And when
- the number of eligible domains with matching topology
- keys equals or greater than minDomains, this value has
- no effect on scheduling. As a result, when the number
- of eligible domains is less than minDomains, scheduler
- won't schedule more than maxSkew Pods to those domains.
- If value is nil, the constraint behaves as if MinDomains
- is equal to 1. Valid values are integers greater than
- 0. When value is not nil, WhenUnsatisfiable must be
- DoNotSchedule. \n For example, in a 3-zone cluster,
- MaxSkew is set to 2, MinDomains is set to 5 and pods
- with the same labelSelector spread as 2/2/2: | zone1
- | zone2 | zone3 | | P P | P P | P P | The number
- of domains is less than 5(MinDomains), so \"global minimum\"
- is treated as 0. In this situation, new pod with the
- same labelSelector cannot be scheduled, because computed
- skew will be 3(3 - 0) if new Pod is scheduled to any
- of the three zones, it will violate MaxSkew. \n This
- is an alpha field and requires enabling MinDomainsInPodTopologySpread
- feature gate."
+ description: |-
+ MinDomains indicates a minimum number of eligible domains.
+ When the number of eligible domains with matching topology keys is less than minDomains,
+ Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
+ And when the number of eligible domains with matching topology keys equals or greater than minDomains,
+ this value has no effect on scheduling.
+ As a result, when the number of eligible domains is less than minDomains,
+ scheduler won't schedule more than maxSkew Pods to those domains.
+ If value is nil, the constraint behaves as if MinDomains is equal to 1.
+ Valid values are integers greater than 0.
+ When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
+
+ For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
+ labelSelector spread as 2/2/2:
+ | zone1 | zone2 | zone3 |
+ | P P | P P | P P |
+ The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
+ In this situation, new pod with the same labelSelector cannot be scheduled,
+ because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
+ it will violate MaxSkew.
format: int32
type: integer
+ nodeAffinityPolicy:
+ description: |-
+ NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
+ when calculating pod topology spread skew. Options are:
+ - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
+ - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
+
+ If this value is nil, the behavior is equivalent to the Honor policy.
+ This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
+ type: string
+ nodeTaintsPolicy:
+ description: |-
+ NodeTaintsPolicy indicates how we will treat node taints when calculating
+ pod topology spread skew. Options are:
+ - Honor: nodes without taints, along with tainted nodes for which the incoming pod
+ has a toleration, are included.
+ - Ignore: node taints are ignored. All nodes are included.
+
+ If this value is nil, the behavior is equivalent to the Ignore policy.
+ This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
+ type: string
topologyKey:
- description: TopologyKey is the key of node labels. Nodes
- that have a label with this key and identical values
- are considered to be in the same topology. We consider
- each as a "bucket", and try to put balanced
- number of pods into each bucket. We define a domain
- as a particular instance of a topology. Also, we define
- an eligible domain as a domain whose nodes match the
- node selector. e.g. If TopologyKey is "kubernetes.io/hostname",
- each Node is a domain of that topology. And, if TopologyKey
- is "topology.kubernetes.io/zone", each zone is a domain
- of that topology. It's a required field.
+ description: |-
+ TopologyKey is the key of node labels. Nodes that have a label with this key
+ and identical values are considered to be in the same topology.
+ We consider each as a "bucket", and try to put balanced number
+ of pods into each bucket.
+ We define a domain as a particular instance of a topology.
+ Also, we define an eligible domain as a domain whose nodes meet the requirements of
+ nodeAffinityPolicy and nodeTaintsPolicy.
+ e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
+ And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
+ It's a required field.
type: string
whenUnsatisfiable:
- description: 'WhenUnsatisfiable indicates how to deal
- with a pod if it doesn''t satisfy the spread constraint.
- - DoNotSchedule (default) tells the scheduler not to
- schedule it. - ScheduleAnyway tells the scheduler to
- schedule the pod in any location, but giving higher
- precedence to topologies that would help reduce the
- skew. A constraint is considered "Unsatisfiable" for
- an incoming pod if and only if every possible node assignment
- for that pod would violate "MaxSkew" on some topology.
- For example, in a 3-zone cluster, MaxSkew is set to
- 1, and pods with the same labelSelector spread as 3/1/1:
- | zone1 | zone2 | zone3 | | P P P | P | P |
- If WhenUnsatisfiable is set to DoNotSchedule, incoming
- pod can only be scheduled to zone2(zone3) to become
- 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
- MaxSkew(1). In other words, the cluster can still be
- imbalanced, but scheduler won''t make it *more* imbalanced.
- It''s a required field.'
+ description: |-
+ WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
+ the spread constraint.
+ - DoNotSchedule (default) tells the scheduler not to schedule it.
+ - ScheduleAnyway tells the scheduler to schedule the pod in any location,
+ but giving higher precedence to topologies that would help reduce the
+ skew.
+ A constraint is considered "Unsatisfiable" for an incoming pod
+ if and only if every possible node assignment for that pod would violate
+ "MaxSkew" on some topology.
+ For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
+ labelSelector spread as 3/1/1:
+ | zone1 | zone2 | zone3 |
+ | P P P | P | P |
+ If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
+ to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
+ MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
+ won't make it *more* imbalanced.
+ It's a required field.
type: string
required:
- maxSkew
@@ -9842,31 +10847,34 @@ spec:
type: object
type: array
walVolumeClaimSpec:
- description: 'Defines a separate PersistentVolumeClaim for PostgreSQL''s
- write-ahead log. More info: https://www.postgresql.org/docs/current/wal.html'
+ description: |-
+ Defines a separate PersistentVolumeClaim for PostgreSQL's write-ahead log.
+ More info: https://www.postgresql.org/docs/current/wal.html
properties:
accessModes:
- description: 'accessModes contains the desired access modes
- the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
+ description: |-
+ accessModes contains the desired access modes the volume should have.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
items:
type: string
- minItems: 1
type: array
+ x-kubernetes-list-type: atomic
dataSource:
- description: 'dataSource field can be used to specify either:
+ description: |-
+ dataSource field can be used to specify either:
* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
- * An existing PVC (PersistentVolumeClaim) If the provisioner
- or an external controller can support the specified data
- source, it will create a new volume based on the contents
- of the specified data source. If the AnyVolumeDataSource
- feature gate is enabled, this field will always have the
- same contents as the DataSourceRef field.'
+ * An existing PVC (PersistentVolumeClaim)
+ If the provisioner or an external controller can support the specified data source,
+ it will create a new volume based on the contents of the specified data source.
+ When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
+ and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
+ If the namespace is specified, then dataSourceRef will not be copied to dataSource.
properties:
apiGroup:
- description: APIGroup is the group for the resource
- being referenced. If APIGroup is not specified, the
- specified Kind must be in the core API group. For
- any other third-party types, APIGroup is required.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
+ For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource being referenced
@@ -9878,34 +10886,38 @@ spec:
- kind
- name
type: object
+ x-kubernetes-map-type: atomic
dataSourceRef:
- description: 'dataSourceRef specifies the object from which
- to populate the volume with data, if a non-empty volume
- is desired. This may be any local object from a non-empty
- API group (non core object) or a PersistentVolumeClaim
- object. When this field is specified, volume binding will
- only succeed if the type of the specified object matches
- some installed volume populator or dynamic provisioner.
- This field will replace the functionality of the DataSource
- field and as such if both fields are non-empty, they must
- have the same value. For backwards compatibility, both
- fields (DataSource and DataSourceRef) will be set to the
- same value automatically if one of them is empty and the
- other is non-empty. There are two important differences
- between DataSource and DataSourceRef: * While DataSource
- only allows two specific types of objects, DataSourceRef
- allows any non-core object, as well as PersistentVolumeClaim
- objects. * While DataSource ignores disallowed values
- (dropping them), DataSourceRef preserves all values, and
- generates an error if a disallowed value is specified.
- (Beta) Using this field requires the AnyVolumeDataSource
- feature gate to be enabled.'
+ description: |-
+ dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
+ volume is desired. This may be any object from a non-empty API group (non
+ core object) or a PersistentVolumeClaim object.
+ When this field is specified, volume binding will only succeed if the type of
+ the specified object matches some installed volume populator or dynamic
+ provisioner.
+ This field will replace the functionality of the dataSource field and as such
+ if both fields are non-empty, they must have the same value. For backwards
+ compatibility, when namespace isn't specified in dataSourceRef,
+ both fields (dataSource and dataSourceRef) will be set to the same
+ value automatically if one of them is empty and the other is non-empty.
+ When namespace is specified in dataSourceRef,
+ dataSource isn't set to the same value and must be empty.
+ There are three important differences between dataSource and dataSourceRef:
+ * While dataSource only allows two specific types of objects, dataSourceRef
+ allows any non-core object, as well as PersistentVolumeClaim objects.
+ * While dataSource ignores disallowed values (dropping them), dataSourceRef
+ preserves all values, and generates an error if a disallowed value is
+ specified.
+ * While dataSource only allows local objects, dataSourceRef allows objects
+ in any namespaces.
+ (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
+ (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
properties:
apiGroup:
- description: APIGroup is the group for the resource
- being referenced. If APIGroup is not specified, the
- specified Kind must be in the core API group. For
- any other third-party types, APIGroup is required.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
+ For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource being referenced
@@ -9913,17 +10925,23 @@ spec:
name:
description: Name is the name of resource being referenced
type: string
+ namespace:
+ description: |-
+ Namespace is the namespace of resource being referenced
+ Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
+ (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
+ type: string
required:
- kind
- name
type: object
resources:
- description: 'resources represents the minimum resources
- the volume should have. If RecoverVolumeExpansionFailure
- feature is enabled users are allowed to specify resource
- requirements that are lower than previous value but must
- still be higher than capacity recorded in the status field
- of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
+ description: |-
+ resources represents the minimum resources the volume should have.
+ If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
+ that are lower than previous value but must still be higher than capacity recorded in the
+ status field of the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
properties:
limits:
additionalProperties:
@@ -9932,8 +10950,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount of
- compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -9942,16 +10961,12 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is omitted
- for a container, it defaults to Limits if that is
- explicitly specified, otherwise to an implementation-defined
- value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
- required:
- - storage
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
- required:
- - requests
type: object
selector:
description: selector is a label query over volumes to consider
@@ -9961,8 +10976,8 @@ spec:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a selector
- that contains values, a key, and an operator that
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
@@ -9970,52 +10985,72 @@ spec:
applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are In,
- NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string values.
- If the operator is In or NotIn, the values array
- must be non-empty. If the operator is Exists
- or DoesNotExist, the values array must be empty.
- This array is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field
- is "key", the operator is "In", and the values array
- contains only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
storageClassName:
- description: 'storageClassName is the name of the StorageClass
- required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
+ description: |-
+ storageClassName is the name of the StorageClass required by the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
+ type: string
+ volumeAttributesClassName:
+ description: |-
+ volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
+ If specified, the CSI driver will create or update the volume with the attributes defined
+ in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
+ it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
+ will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
+ If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
+ will be set by the persistentvolume controller if it exists.
+ If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
+ set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
+ exists.
+ More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
+ (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
type: string
volumeMode:
- description: volumeMode defines what type of volume is required
- by the claim. Value of Filesystem is implied when not
- included in claim spec.
+ description: |-
+ volumeMode defines what type of volume is required by the claim.
+ Value of Filesystem is implied when not included in claim spec.
type: string
volumeName:
description: volumeName is the binding reference to the
PersistentVolume backing this claim.
type: string
- required:
- - accessModes
- - resources
type: object
+ x-kubernetes-validations:
+ - message: missing accessModes
+ rule: has(self.accessModes) && size(self.accessModes) > 0
+ - message: missing storage request
+ rule: has(self.resources) && has(self.resources.requests)
+ && has(self.resources.requests.storage)
required:
- dataVolumeClaimSpec
type: object
@@ -10047,77 +11082,167 @@ spec:
exporter:
properties:
configuration:
- description: 'Projected volumes containing custom PostgreSQL
- Exporter configuration. Currently supports the customization
- of PostgreSQL Exporter queries. If a "queries.yml" file
- is detected in any volume projected using this field,
- it will be loaded using the "extend.query-path" flag:
+ description: |-
+ Projected volumes containing custom PostgreSQL Exporter configuration. Currently supports
+ the customization of PostgreSQL Exporter queries. If a "queries.yml" file is detected in
+ any volume projected using this field, it will be loaded using the "extend.query-path" flag:
https://github.com/prometheus-community/postgres_exporter#flags
- Changing the values of field causes PostgreSQL and the
- exporter to restart.'
+ Changing the values of field causes PostgreSQL and the exporter to restart.
items:
description: Projection that may be projected along
with other supported volume types
properties:
- configMap:
- description: configMap information about the configMap
- data to project
+ clusterTrustBundle:
+ description: |-
+ ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
+ of ClusterTrustBundle objects in an auto-updating file.
+
+ Alpha, gated by the ClusterTrustBundleProjection feature gate.
+
+ ClusterTrustBundle objects can either be selected by name, or by the
+ combination of signer name and a label selector.
+
+ Kubelet performs aggressive normalization of the PEM contents written
+ into the pod filesystem. Esoteric PEM features such as inter-block
+ comments and block headers are stripped. Certificates are deduplicated.
+ The ordering of certificates within the file is arbitrary, and Kubelet
+ may change the order over time.
properties:
- items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced ConfigMap
- will be projected into the volume as a file
- whose name is the key and content is the value.
- If specified, the listed keys will be projected
- into the specified paths, and unlisted keys
- will not be present. If a key is specified
- which is not present in the ConfigMap, the
- volume setup will error unless it is marked
- optional. Paths must be relative and may not
- contain the '..' path or start with '..'.
- items:
- description: Maps a string key to a path within
- a volume.
- properties:
- key:
- description: key is the key to project.
- type: string
- mode:
- description: 'mode is Optional: mode bits
- used to set permissions on this file.
- Must be an octal value between 0000
- and 0777 or a decimal value between
- 0 and 511. YAML accepts both octal and
- decimal values, JSON requires decimal
- values for mode bits. If not specified,
- the volume defaultMode will be used.
- This might be in conflict with other
- options that affect the file mode, like
- fsGroup, and the result can be other
- mode bits set.'
- format: int32
- type: integer
- path:
- description: path is the relative path
- of the file to map the key to. May not
- be an absolute path. May not contain
- the path element '..'. May not start
- with the string '..'.
- type: string
- required:
- - key
- - path
- type: object
- type: array
- name:
- description: 'Name of the referent. More info:
- https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
- type: string
- optional:
- description: optional specify whether the ConfigMap
+ labelSelector:
+ description: |-
+ Select all ClusterTrustBundles that match this label selector. Only has
+ effect if signerName is set. Mutually-exclusive with name. If unset,
+ interpreted as "match nothing". If set but empty, interpreted as "match
+ everything".
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list
+ of label selector requirements. The requirements
+ are ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key
+ that the selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ 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
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ name:
+ description: |-
+ Select a single ClusterTrustBundle by object name. Mutually-exclusive
+ with signerName and labelSelector.
+ type: string
+ optional:
+ description: |-
+ If true, don't block pod startup if the referenced ClusterTrustBundle(s)
+ aren't available. If using name, then the named ClusterTrustBundle is
+ allowed not to exist. If using signerName, then the combination of
+ signerName and labelSelector is allowed to match zero
+ ClusterTrustBundles.
+ type: boolean
+ path:
+ description: Relative path from the volume root
+ to write the bundle.
+ type: string
+ signerName:
+ description: |-
+ Select all ClusterTrustBundles that match this signer name.
+ Mutually-exclusive with name. The contents of all selected
+ ClusterTrustBundles will be unified and deduplicated.
+ type: string
+ required:
+ - path
+ type: object
+ configMap:
+ description: configMap information about the configMap
+ data to project
+ properties:
+ items:
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ ConfigMap will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the ConfigMap,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
+ items:
+ description: Maps a string key to a path within
+ a volume.
+ properties:
+ key:
+ description: key is the key to project.
+ type: string
+ mode:
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
+ format: int32
+ type: integer
+ path:
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
+ name:
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ optional:
+ description: optional specify whether the ConfigMap
or its keys must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
downwardAPI:
description: downwardAPI information about the downwardAPI
data to project
@@ -10133,7 +11258,7 @@ spec:
fieldRef:
description: 'Required: Selects a field
of the pod: only annotations, labels,
- name and namespace are supported.'
+ name, namespace and uid are supported.'
properties:
apiVersion:
description: Version of the schema
@@ -10147,19 +11272,15 @@ spec:
required:
- fieldPath
type: object
+ x-kubernetes-map-type: atomic
mode:
- description: 'Optional: mode bits used
- to set permissions on this file, must
- be an octal value between 0000 and 0777
- or a decimal value between 0 and 511.
- YAML accepts both octal and decimal
- values, JSON requires decimal values
- for mode bits. If not specified, the
- volume defaultMode will be used. This
- might be in conflict with other options
- that affect the file mode, like fsGroup,
- and the result can be other mode bits
- set.'
+ description: |-
+ Optional: mode bits used to set permissions on this file, must be an octal value
+ between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
@@ -10171,11 +11292,9 @@ spec:
must not start with ''..'''
type: string
resourceFieldRef:
- description: 'Selects a resource of the
- container: only resources limits and
- requests (limits.cpu, limits.memory,
- requests.cpu and requests.memory) are
- currently supported.'
+ description: |-
+ Selects a resource of the container: only resources limits and requests
+ (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
properties:
containerName:
description: 'Container name: required
@@ -10197,27 +11316,26 @@ spec:
required:
- resource
type: object
+ x-kubernetes-map-type: atomic
required:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
secret:
description: secret information about the secret
data to project
properties:
items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced Secret
- will be projected into the volume as a file
- whose name is the key and content is the value.
- If specified, the listed keys will be projected
- into the specified paths, and unlisted keys
- will not be present. If a key is specified
- which is not present in the Secret, the volume
- setup will error unless it is marked optional.
- Paths must be relative and may not contain
- the '..' path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ Secret will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the Secret,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within
a volume.
@@ -10226,69 +11344,68 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits
- used to set permissions on this file.
- Must be an octal value between 0000
- and 0777 or a decimal value between
- 0 and 511. YAML accepts both octal and
- decimal values, JSON requires decimal
- values for mode bits. If not specified,
- the volume defaultMode will be used.
- This might be in conflict with other
- options that affect the file mode, like
- fsGroup, and the result can be other
- mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path
- of the file to map the key to. May not
- be an absolute path. May not contain
- the path element '..'. May not start
- with the string '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info:
- https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional field specify whether
the Secret or its key must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
serviceAccountToken:
description: serviceAccountToken is information
about the serviceAccountToken data to project
properties:
audience:
- description: audience is the intended audience
- of the token. A recipient of a token must
- identify itself with an identifier specified
- in the audience of the token, and otherwise
- should reject the token. The audience defaults
- to the identifier of the apiserver.
+ description: |-
+ audience is the intended audience of the token. A recipient of a token
+ must identify itself with an identifier specified in the audience of the
+ token, and otherwise should reject the token. The audience defaults to the
+ identifier of the apiserver.
type: string
expirationSeconds:
- description: expirationSeconds is the requested
- duration of validity of the service account
- token. As the token approaches expiration,
- the kubelet volume plugin will proactively
- rotate the service account token. The kubelet
- will start trying to rotate the token if the
- token is older than 80 percent of its time
- to live or if the token is older than 24 hours.Defaults
- to 1 hour and must be at least 10 minutes.
+ description: |-
+ expirationSeconds is the requested duration of validity of the service
+ account token. As the token approaches expiration, the kubelet volume
+ plugin will proactively rotate the service account token. The kubelet will
+ start trying to rotate the token if the token is older than 80 percent of
+ its time to live or if the token is older than 24 hours.Defaults to 1 hour
+ and must be at least 10 minutes.
format: int64
type: integer
path:
- description: path is the path relative to the
- mount point of the file to project the token
- into.
+ description: |-
+ path is the path relative to the mount point of the file to project the
+ token into.
type: string
required:
- path
@@ -10296,20 +11413,19 @@ spec:
type: object
type: array
customTLSSecret:
- description: Projected secret containing custom TLS certificates
- to encrypt output from the exporter web server
+ description: |-
+ Projected secret containing custom TLS certificates to encrypt output from the exporter
+ web server
properties:
items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced Secret
- will be projected into the volume as a file whose
- name is the key and content is the value. If specified,
- the listed keys will be projected into the specified
- paths, and unlisted keys will not be present. If
- a key is specified which is not present in the Secret,
- the volume setup will error unless it is marked
- optional. Paths must be relative and may not contain
- the '..' path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ Secret will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the Secret,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within
a volume.
@@ -10318,22 +11434,20 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits used
- to set permissions on this file. Must be an
- octal value between 0000 and 0777 or a decimal
- value between 0 and 511. YAML accepts both
- octal and decimal values, JSON requires decimal
- values for mode bits. If not specified, the
- volume defaultMode will be used. This might
- be in conflict with other options that affect
- the file mode, like fsGroup, and the result
- can be other mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of the
- file to map the key to. May not be an absolute
- path. May not contain the path element '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
May not start with the string '..'.
type: string
required:
@@ -10341,23 +11455,58 @@ spec:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional field specify whether the Secret
or its key must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
image:
- description: The image name to use for crunchy-postgres-exporter
- containers. The image may also be set using the RELATED_IMAGE_PGEXPORTER
- environment variable.
+ description: |-
+ The image name to use for crunchy-postgres-exporter containers. The image may
+ also be set using the RELATED_IMAGE_PGEXPORTER environment variable.
type: string
resources:
- description: 'Changing this value causes PostgreSQL and
- the exporter to restart. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers'
+ description: |-
+ Changing this value causes PostgreSQL and the exporter to restart.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry
+ in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -10365,8 +11514,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount
- of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -10375,33 +11525,36 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is omitted
- for a container, it defaults to Limits if that is
- explicitly specified, otherwise to an implementation-defined
- value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
type: object
type: object
type: object
openshift:
- description: Whether or not the PostgreSQL cluster is being deployed
- to an OpenShift environment. If the field is unset, the operator
- will automatically detect the environment.
+ description: |-
+ Whether or not the PostgreSQL cluster is being deployed to an OpenShift
+ environment. If the field is unset, the operator will automatically
+ detect the environment.
type: boolean
patroni:
properties:
dynamicConfiguration:
- description: 'Patroni dynamic configuration settings. Changes
- to this value will be automatically reloaded without validation.
- Changes to certain PostgreSQL parameters cause PostgreSQL to
- restart. More info: https://patroni.readthedocs.io/en/latest/SETTINGS.html'
+ description: |-
+ Patroni dynamic configuration settings. Changes to this value will be
+ automatically reloaded without validation. Changes to certain PostgreSQL
+ parameters cause PostgreSQL to restart.
+ More info: https://patroni.readthedocs.io/en/latest/dynamic_configuration.html
type: object
x-kubernetes-preserve-unknown-fields: true
leaderLeaseDurationSeconds:
default: 30
- description: TTL of the cluster leader lock. "Think of it as the
+ description: |-
+ TTL of the cluster leader lock. "Think of it as the
length of time before initiation of the automatic failover process."
Changing this value causes PostgreSQL to restart.
format: int32
@@ -10409,8 +11562,9 @@ spec:
type: integer
port:
default: 8008
- description: The port on which Patroni should listen. Changing
- this value causes PostgreSQL to restart.
+ description: |-
+ The port on which Patroni should listen.
+ Changing this value causes PostgreSQL to restart.
format: int32
minimum: 1024
type: integer
@@ -10423,20 +11577,19 @@ spec:
in a PostgresCluster
type: boolean
targetInstance:
- description: The instance that should become primary during
- a switchover. This field is optional when Type is "Switchover"
- and required when Type is "Failover". When it is not specified,
- a healthy replica is automatically selected.
+ description: |-
+ The instance that should become primary during a switchover. This field is
+ optional when Type is "Switchover" and required when Type is "Failover".
+ When it is not specified, a healthy replica is automatically selected.
type: string
type:
default: Switchover
- description: 'Type of switchover to perform. Valid options
- are Switchover and Failover. "Switchover" changes the primary
- instance of a healthy PostgresCluster. "Failover" forces
- a particular instance to be primary, regardless of other
+ description: |-
+ Type of switchover to perform. Valid options are Switchover and Failover.
+ "Switchover" changes the primary instance of a healthy PostgresCluster.
+ "Failover" forces a particular instance to be primary, regardless of other
factors. A TargetInstance must be specified to failover.
- NOTE: The Failover type is reserved as the "last resort"
- case.'
+ NOTE: The Failover type is reserved as the "last resort" case.
enum:
- Switchover
- Failover
@@ -10446,7 +11599,8 @@ spec:
type: object
syncPeriodSeconds:
default: 10
- description: The interval for refreshing the leader lock and applying
+ description: |-
+ The interval for refreshing the leader lock and applying
dynamicConfiguration. Must be less than leaderLeaseDurationSeconds.
Changing this value causes PostgreSQL to restart.
format: int32
@@ -10454,8 +11608,9 @@ spec:
type: integer
type: object
paused:
- description: Suspends the rollout and reconciliation of changes made
- to the PostgresCluster spec.
+ description: |-
+ Suspends the rollout and reconciliation of changes made to the
+ PostgresCluster spec.
type: boolean
port:
default: 5432
@@ -10464,15 +11619,15 @@ spec:
minimum: 1024
type: integer
postGISVersion:
- description: The PostGIS extension version installed in the PostgreSQL
- image. When image is not set, indicates a PostGIS enabled image
- will be used.
+ description: |-
+ The PostGIS extension version installed in the PostgreSQL image.
+ When image is not set, indicates a PostGIS enabled image will be used.
type: string
postgresVersion:
description: The major version of PostgreSQL installed in the PostgreSQL
image
- maximum: 16
- minimum: 10
+ maximum: 17
+ minimum: 11
type: integer
proxy:
description: The specification of a proxy that connects to PostgreSQL.
@@ -10481,31 +11636,30 @@ spec:
description: Defines a PgBouncer proxy and connection pooler.
properties:
affinity:
- description: 'Scheduling constraints of a PgBouncer pod. Changing
- this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node'
+ description: |-
+ Scheduling constraints of a PgBouncer pod. Changing this value causes
+ PgBouncer to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
properties:
nodeAffinity:
description: Describes node affinity scheduling rules
for the pod.
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the
- greatest sum of weights, i.e. for each node that
- meets all of the scheduling requirements (resource
- request, requiredDuringScheduling affinity expressions,
- etc.), compute a sum by iterating through the elements
- of this field and adding "weight" to the sum if
- the node matches the corresponding matchExpressions;
- the node(s) with the highest sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node matches the corresponding matchExpressions; the
+ node(s) with the highest sum are the most preferred.
items:
- description: An empty preferred scheduling term
- matches all objects with implicit weight 0 (i.e.
- it's a no-op). A null preferred scheduling term
- matches no objects (i.e. is also a no-op).
+ description: |-
+ An empty preferred scheduling term matches all objects with implicit weight 0
+ (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
properties:
preference:
description: A node selector term, associated
@@ -10515,79 +11669,72 @@ spec:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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:
description: Weight associated with matching
the corresponding nodeSelectorTerm, in the
@@ -10599,105 +11746,100 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the
- affinity requirements specified by this field cease
- to be met at some point during pod execution (e.g.
- due to an update), the system may or may not try
- to eventually evict the pod from its node.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to an update), the system
+ may or may not try to eventually evict the pod from its node.
properties:
nodeSelectorTerms:
description: Required. A list of node selector
terms. The terms are ORed.
items:
- description: A null or empty node selector term
- matches no objects. The requirements of them
- are ANDed. The TopologySelectorTerm type implements
- a subset of the NodeSelectorTerm.
+ description: |-
+ A null or empty node selector term matches no objects. The requirements of
+ them are ANDed.
+ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
properties:
matchExpressions:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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
+ x-kubernetes-map-type: atomic
type: object
podAffinity:
description: Describes pod affinity scheduling rules (e.g.
@@ -10705,19 +11847,16 @@ spec:
other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the
- greatest sum of weights, i.e. for each node that
- meets all of the scheduling requirements (resource
- request, requiredDuringScheduling affinity expressions,
- etc.), compute a sum by iterating through the elements
- of this field and adding "weight" to the sum if
- the node has pods which matches the corresponding
- podAffinityTerm; the node(s) with the highest sum
- are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
fields are added per-node to find the most preferred
@@ -10728,18 +11867,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -10747,60 +11886,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -10808,70 +11969,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in the
- range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -10879,161 +12031,179 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the
- affinity requirements specified by this field cease
- to be met at some point during pod execution (e.g.
- due to a pod label update), the system may or may
- not try to eventually evict the pod from its node.
- When there are multiple elements, the lists of nodes
- corresponding to each podAffinityTerm are intersected,
- i.e. all terms must be satisfied.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the given
- namespace(s)) that this pod should be co-located
- (affinity) or not co-located (anti-affinity) with,
- where co-located is defined as running on a node
- whose value of the label with key
- matches that of any node on which a pod of the
- set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by
- this field and the ones listed in the namespaces
- field. null selector and null or empty namespaces
- list means "this pod's namespace". An empty
- selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to.
- The term is applied to the union of the namespaces
- listed in this field and the ones selected
- by namespaceSelector. null or empty namespaces
- list and null namespaceSelector means "this
- pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the
- pods matching the labelSelector in the specified
- namespaces, where co-located is defined as
- running on a node whose value of the label
- with key topologyKey matches that of any node
- on which any of the selected pods is running.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
podAntiAffinity:
description: Describes pod anti-affinity scheduling rules
@@ -11041,19 +12211,16 @@ spec:
etc. as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the anti-affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the
- greatest sum of weights, i.e. for each node that
- meets all of the scheduling requirements (resource
- request, requiredDuringScheduling anti-affinity
- expressions, etc.), compute a sum by iterating through
- the elements of this field and adding "weight" to
- the sum if the node has pods which matches the corresponding
- podAffinityTerm; the node(s) with the highest sum
- are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the anti-affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling anti-affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
fields are added per-node to find the most preferred
@@ -11064,18 +12231,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -11083,60 +12250,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -11144,70 +12333,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in the
- range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -11215,206 +12395,317 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the anti-affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the
- anti-affinity requirements specified by this field
- cease to be met at some point during pod execution
- (e.g. due to a pod label update), the system may
- or may not try to eventually evict the pod from
- its node. When there are multiple elements, the
- lists of nodes corresponding to each podAffinityTerm
- are intersected, i.e. all terms must be satisfied.
+ description: |-
+ If the anti-affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the anti-affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the given
- namespace(s)) that this pod should be co-located
- (affinity) or not co-located (anti-affinity) with,
- where co-located is defined as running on a node
- whose value of the label with key
- matches that of any node on which a pod of the
- set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by
- this field and the ones listed in the namespaces
- field. null selector and null or empty namespaces
- list means "this pod's namespace". An empty
- selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to.
- The term is applied to the union of the namespaces
- listed in this field and the ones selected
- by namespaceSelector. null or empty namespaces
- list and null namespaceSelector means "this
- pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the
- pods matching the labelSelector in the specified
- namespaces, where co-located is defined as
- running on a node whose value of the label
- with key topologyKey matches that of any node
- on which any of the selected pods is running.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
type: object
config:
- description: 'Configuration settings for the PgBouncer process.
- Changes to any of these values will be automatically reloaded
- without validation. Be careful, as you may put PgBouncer
- into an unusable state. More info: https://www.pgbouncer.org/usage.html#reload'
+ description: |-
+ Configuration settings for the PgBouncer process. Changes to any of these
+ values will be automatically reloaded without validation. Be careful, as
+ you may put PgBouncer into an unusable state.
+ More info: https://www.pgbouncer.org/usage.html#reload
properties:
databases:
additionalProperties:
type: string
- description: 'PgBouncer database definitions. The key
- is the database requested by a client while the value
- is a libpq-styled connection string. The special key
- "*" acts as a fallback. When this field is empty, PgBouncer
- is configured with a single "*" entry that connects
- to the primary PostgreSQL instance. More info: https://www.pgbouncer.org/config.html#section-databases'
+ description: |-
+ PgBouncer database definitions. The key is the database requested by a
+ client while the value is a libpq-styled connection string. The special
+ key "*" acts as a fallback. When this field is empty, PgBouncer is
+ configured with a single "*" entry that connects to the primary
+ PostgreSQL instance.
+ More info: https://www.pgbouncer.org/config.html#section-databases
type: object
files:
- description: 'Files to mount under "/etc/pgbouncer". When
- specified, settings in the "pgbouncer.ini" file are
- loaded before all others. From there, other files may
- be included by absolute path. Changing these references
- causes PgBouncer to restart, but changes to the file
- contents are automatically reloaded. More info: https://www.pgbouncer.org/config.html#include-directive'
+ description: |-
+ Files to mount under "/etc/pgbouncer". When specified, settings in the
+ "pgbouncer.ini" file are loaded before all others. From there, other
+ files may be included by absolute path. Changing these references causes
+ PgBouncer to restart, but changes to the file contents are automatically
+ reloaded.
+ More info: https://www.pgbouncer.org/config.html#include-directive
items:
description: Projection that may be projected along
with other supported volume types
properties:
+ clusterTrustBundle:
+ description: |-
+ ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
+ of ClusterTrustBundle objects in an auto-updating file.
+
+ Alpha, gated by the ClusterTrustBundleProjection feature gate.
+
+ ClusterTrustBundle objects can either be selected by name, or by the
+ combination of signer name and a label selector.
+
+ Kubelet performs aggressive normalization of the PEM contents written
+ into the pod filesystem. Esoteric PEM features such as inter-block
+ comments and block headers are stripped. Certificates are deduplicated.
+ The ordering of certificates within the file is arbitrary, and Kubelet
+ may change the order over time.
+ properties:
+ labelSelector:
+ description: |-
+ Select all ClusterTrustBundles that match this label selector. Only has
+ effect if signerName is set. Mutually-exclusive with name. If unset,
+ interpreted as "match nothing". If set but empty, interpreted as "match
+ everything".
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list
+ of label selector requirements. The requirements
+ are ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key
+ that the selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ 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
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ name:
+ description: |-
+ Select a single ClusterTrustBundle by object name. Mutually-exclusive
+ with signerName and labelSelector.
+ type: string
+ optional:
+ description: |-
+ If true, don't block pod startup if the referenced ClusterTrustBundle(s)
+ aren't available. If using name, then the named ClusterTrustBundle is
+ allowed not to exist. If using signerName, then the combination of
+ signerName and labelSelector is allowed to match zero
+ ClusterTrustBundles.
+ type: boolean
+ path:
+ description: Relative path from the volume root
+ to write the bundle.
+ type: string
+ signerName:
+ description: |-
+ Select all ClusterTrustBundles that match this signer name.
+ Mutually-exclusive with name. The contents of all selected
+ ClusterTrustBundles will be unified and deduplicated.
+ type: string
+ required:
+ - path
+ type: object
configMap:
description: configMap information about the configMap
data to project
properties:
items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced ConfigMap
- will be projected into the volume as a file
- whose name is the key and content is the value.
- If specified, the listed keys will be projected
- into the specified paths, and unlisted keys
- will not be present. If a key is specified
- which is not present in the ConfigMap, the
- volume setup will error unless it is marked
- optional. Paths must be relative and may not
- contain the '..' path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ ConfigMap will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the ConfigMap,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within
a volume.
@@ -11423,41 +12714,43 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits
- used to set permissions on this file.
- Must be an octal value between 0000
- and 0777 or a decimal value between
- 0 and 511. YAML accepts both octal and
- decimal values, JSON requires decimal
- values for mode bits. If not specified,
- the volume defaultMode will be used.
- This might be in conflict with other
- options that affect the file mode, like
- fsGroup, and the result can be other
- mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path
- of the file to map the key to. May not
- be an absolute path. May not contain
- the path element '..'. May not start
- with the string '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info:
- https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional specify whether the ConfigMap
or its keys must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
downwardAPI:
description: downwardAPI information about the downwardAPI
data to project
@@ -11473,7 +12766,7 @@ spec:
fieldRef:
description: 'Required: Selects a field
of the pod: only annotations, labels,
- name and namespace are supported.'
+ name, namespace and uid are supported.'
properties:
apiVersion:
description: Version of the schema
@@ -11487,19 +12780,15 @@ spec:
required:
- fieldPath
type: object
+ x-kubernetes-map-type: atomic
mode:
- description: 'Optional: mode bits used
- to set permissions on this file, must
- be an octal value between 0000 and 0777
- or a decimal value between 0 and 511.
- YAML accepts both octal and decimal
- values, JSON requires decimal values
- for mode bits. If not specified, the
- volume defaultMode will be used. This
- might be in conflict with other options
- that affect the file mode, like fsGroup,
- and the result can be other mode bits
- set.'
+ description: |-
+ Optional: mode bits used to set permissions on this file, must be an octal value
+ between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
@@ -11511,11 +12800,9 @@ spec:
must not start with ''..'''
type: string
resourceFieldRef:
- description: 'Selects a resource of the
- container: only resources limits and
- requests (limits.cpu, limits.memory,
- requests.cpu and requests.memory) are
- currently supported.'
+ description: |-
+ Selects a resource of the container: only resources limits and requests
+ (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
properties:
containerName:
description: 'Container name: required
@@ -11537,27 +12824,26 @@ spec:
required:
- resource
type: object
+ x-kubernetes-map-type: atomic
required:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
secret:
description: secret information about the secret
data to project
properties:
items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced Secret
- will be projected into the volume as a file
- whose name is the key and content is the value.
- If specified, the listed keys will be projected
- into the specified paths, and unlisted keys
- will not be present. If a key is specified
- which is not present in the Secret, the volume
- setup will error unless it is marked optional.
- Paths must be relative and may not contain
- the '..' path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ Secret will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the Secret,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within
a volume.
@@ -11566,69 +12852,68 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits
- used to set permissions on this file.
- Must be an octal value between 0000
- and 0777 or a decimal value between
- 0 and 511. YAML accepts both octal and
- decimal values, JSON requires decimal
- values for mode bits. If not specified,
- the volume defaultMode will be used.
- This might be in conflict with other
- options that affect the file mode, like
- fsGroup, and the result can be other
- mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path
- of the file to map the key to. May not
- be an absolute path. May not contain
- the path element '..'. May not start
- with the string '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info:
- https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional field specify whether
the Secret or its key must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
serviceAccountToken:
description: serviceAccountToken is information
about the serviceAccountToken data to project
properties:
audience:
- description: audience is the intended audience
- of the token. A recipient of a token must
- identify itself with an identifier specified
- in the audience of the token, and otherwise
- should reject the token. The audience defaults
- to the identifier of the apiserver.
+ description: |-
+ audience is the intended audience of the token. A recipient of a token
+ must identify itself with an identifier specified in the audience of the
+ token, and otherwise should reject the token. The audience defaults to the
+ identifier of the apiserver.
type: string
expirationSeconds:
- description: expirationSeconds is the requested
- duration of validity of the service account
- token. As the token approaches expiration,
- the kubelet volume plugin will proactively
- rotate the service account token. The kubelet
- will start trying to rotate the token if the
- token is older than 80 percent of its time
- to live or if the token is older than 24 hours.Defaults
- to 1 hour and must be at least 10 minutes.
+ description: |-
+ expirationSeconds is the requested duration of validity of the service
+ account token. As the token approaches expiration, the kubelet volume
+ plugin will proactively rotate the service account token. The kubelet will
+ start trying to rotate the token if the token is older than 80 percent of
+ its time to live or if the token is older than 24 hours.Defaults to 1 hour
+ and must be at least 10 minutes.
format: int64
type: integer
path:
- description: path is the path relative to the
- mount point of the file to project the token
- into.
+ description: |-
+ path is the path relative to the mount point of the file to project the
+ token into.
type: string
required:
- path
@@ -11638,56 +12923,58 @@ spec:
global:
additionalProperties:
type: string
- description: 'Settings that apply to the entire PgBouncer
- process. More info: https://www.pgbouncer.org/config.html'
+ description: |-
+ Settings that apply to the entire PgBouncer process.
+ More info: https://www.pgbouncer.org/config.html
type: object
users:
additionalProperties:
type: string
- description: 'Connection settings specific to particular
- users. More info: https://www.pgbouncer.org/config.html#section-users'
+ description: |-
+ Connection settings specific to particular users.
+ More info: https://www.pgbouncer.org/config.html#section-users
type: object
type: object
containers:
- description: Custom sidecars for a PgBouncer pod. Changing
- this value causes PgBouncer to restart.
+ description: |-
+ Custom sidecars for a PgBouncer pod. Changing this value causes
+ PgBouncer to restart.
items:
description: A single application container that you want
to run within a pod.
properties:
args:
- description: 'Arguments to the entrypoint. The container
- image''s CMD is used if this is not provided. Variable
- references $(VAR_NAME) are expanded using the container''s
- environment. If a variable cannot be resolved, the
- reference in the input string will be unchanged. Double
- $$ are reduced to a single $, which allows for escaping
- the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce
- the string literal "$(VAR_NAME)". Escaped references
- will never be expanded, regardless of whether the
- variable exists or not. Cannot be updated. More info:
- https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
+ description: |-
+ Arguments to the entrypoint.
+ The container image's CMD is used if this is not provided.
+ Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
+ cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
+ to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
+ produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Cannot be updated.
+ More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
command:
- description: 'Entrypoint array. Not executed within
- a shell. The container image''s ENTRYPOINT is used
- if this is not provided. Variable references $(VAR_NAME)
- are expanded using the container''s environment. If
- a variable cannot be resolved, the reference in the
- input string will be unchanged. Double $$ are reduced
- to a single $, which allows for escaping the $(VAR_NAME)
- syntax: i.e. "$$(VAR_NAME)" will produce the string
- literal "$(VAR_NAME)". Escaped references will never
- be expanded, regardless of whether the variable exists
- or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
+ description: |-
+ Entrypoint array. Not executed within a shell.
+ The container image's ENTRYPOINT is used if this is not provided.
+ Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
+ cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
+ to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
+ produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
+ of whether the variable exists or not. Cannot be updated.
+ More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
env:
- description: List of environment variables to set in
- the container. Cannot be updated.
+ description: |-
+ List of environment variables to set in the container.
+ Cannot be updated.
items:
description: EnvVar represents an environment variable
present in a Container.
@@ -11697,17 +12984,16 @@ spec:
Must be a C_IDENTIFIER.
type: string
value:
- description: 'Variable references $(VAR_NAME)
- are expanded using the previously defined environment
- variables in the container and any service environment
- variables. If a variable cannot be resolved,
- the reference in the input string will be unchanged.
- Double $$ are reduced to a single $, which allows
- for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)"
- will produce the string literal "$(VAR_NAME)".
- Escaped references will never be expanded, regardless
- of whether the variable exists or not. Defaults
- to "".'
+ description: |-
+ Variable references $(VAR_NAME) are expanded
+ using the previously defined environment variables in the container and
+ any service environment variables. If a variable cannot be resolved,
+ the reference in the input string will be unchanged. Double $$ are reduced
+ to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
+ "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
+ Escaped references will never be expanded, regardless of whether the variable
+ exists or not.
+ Defaults to "".
type: string
valueFrom:
description: Source for the environment variable's
@@ -11720,8 +13006,13 @@ spec:
description: The key to select.
type: string
name:
- description: 'Name of the referent. More
- info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the ConfigMap
@@ -11730,12 +13021,11 @@ spec:
required:
- key
type: object
+ x-kubernetes-map-type: atomic
fieldRef:
- description: 'Selects a field of the pod:
- supports metadata.name, metadata.namespace,
- `metadata.labels['''']`, `metadata.annotations['''']`,
- spec.nodeName, spec.serviceAccountName,
- status.hostIP, status.podIP, status.podIPs.'
+ description: |-
+ Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`,
+ spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
properties:
apiVersion:
description: Version of the schema the
@@ -11749,12 +13039,11 @@ spec:
required:
- fieldPath
type: object
+ x-kubernetes-map-type: atomic
resourceFieldRef:
- description: 'Selects a resource of the container:
- only resources limits and requests (limits.cpu,
- limits.memory, limits.ephemeral-storage,
- requests.cpu, requests.memory and requests.ephemeral-storage)
- are currently supported.'
+ description: |-
+ Selects a resource of the container: only resources limits and requests
+ (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
properties:
containerName:
description: 'Container name: required
@@ -11775,6 +13064,7 @@ spec:
required:
- resource
type: object
+ x-kubernetes-map-type: atomic
secretKeyRef:
description: Selects a key of a secret in
the pod's namespace
@@ -11785,8 +13075,13 @@ spec:
key.
type: string
name:
- description: 'Name of the referent. More
- info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret
@@ -11795,20 +13090,23 @@ spec:
required:
- key
type: object
+ x-kubernetes-map-type: atomic
type: object
required:
- name
type: object
type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
envFrom:
- description: List of sources to populate environment
- variables in the container. The keys defined within
- a source must be a C_IDENTIFIER. All invalid keys
- will be reported as an event when the container is
- starting. When a key exists in multiple sources, the
- value associated with the last source will take precedence.
- Values defined by an Env with a duplicate key will
- take precedence. Cannot be updated.
+ description: |-
+ List of sources to populate environment variables in the container.
+ The keys defined within a source must be a C_IDENTIFIER. All invalid keys
+ will be reported as an event when the container is starting. When a key exists in multiple
+ sources, the value associated with the last source will take precedence.
+ Values defined by an Env with a duplicate key will take precedence.
+ Cannot be updated.
items:
description: EnvFromSource represents the source of
a set of ConfigMaps
@@ -11817,14 +13115,20 @@ spec:
description: The ConfigMap to select from
properties:
name:
- description: 'Name of the referent. More info:
- https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the ConfigMap
must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
prefix:
description: An optional identifier to prepend
to each key in the ConfigMap. Must be a C_IDENTIFIER.
@@ -11833,66 +13137,72 @@ spec:
description: The Secret to select from
properties:
name:
- description: 'Name of the referent. More info:
- https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret must
be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
type: object
type: array
+ x-kubernetes-list-type: atomic
image:
- description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images
- This field is optional to allow higher level config
- management to default or override container images
- in workload controllers like Deployments and StatefulSets.'
+ description: |-
+ Container image name.
+ More info: https://kubernetes.io/docs/concepts/containers/images
+ This field is optional to allow higher level config management to default or override
+ container images in workload controllers like Deployments and StatefulSets.
type: string
imagePullPolicy:
- description: 'Image pull policy. One of Always, Never,
- IfNotPresent. Defaults to Always if :latest tag is
- specified, or IfNotPresent otherwise. Cannot be updated.
- More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
+ description: |-
+ Image pull policy.
+ One of Always, Never, IfNotPresent.
+ Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
+ Cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
type: string
lifecycle:
- description: Actions that the management system should
- take in response to container lifecycle events. Cannot
- be updated.
+ description: |-
+ Actions that the management system should take in response to container lifecycle events.
+ Cannot be updated.
properties:
postStart:
- description: 'PostStart is called immediately after
- a container is created. If the handler fails,
- the container is terminated and restarted according
- to its restart policy. Other management of the
- container blocks until the hook completes. More
- info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
+ description: |-
+ PostStart is called immediately after a container is created. If the handler fails,
+ the container is terminated and restarted according to its restart policy.
+ Other management of the container blocks until the hook completes.
+ More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
properties:
exec:
description: Exec specifies the action to take.
properties:
command:
- description: Command is the command line
- to execute inside the container, the working
- directory for the command is root ('/')
- in the container's filesystem. The command
- is simply exec'd, it is not run inside
- a shell, so traditional shell instructions
- ('|', etc) won't work. To use a shell,
- you need to explicitly call out to that
- shell. Exit status of 0 is treated as
- live/healthy and non-zero is unhealthy.
+ description: |-
+ Command is the command line to execute inside the container, the working directory for the
+ command is root ('/') in the container's filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
+ a shell, you need to explicitly call out to that shell.
+ Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
type: object
httpGet:
description: HTTPGet specifies the http request
to perform.
properties:
host:
- description: Host name to connect to, defaults
- to the pod IP. You probably want to set
+ description: |-
+ Host name to connect to, defaults to the pod IP. You probably want to set
"Host" in httpHeaders instead.
type: string
httpHeaders:
@@ -11903,7 +13213,9 @@ spec:
header to be used in HTTP probes
properties:
name:
- description: The header field name
+ description: |-
+ The header field name.
+ This will be canonicalized upon output, so case-variant names will be understood as the same header.
type: string
value:
description: The header field value
@@ -11913,6 +13225,7 @@ spec:
- value
type: object
type: array
+ x-kubernetes-list-type: atomic
path:
description: Path to access on the HTTP
server.
@@ -11921,24 +13234,36 @@ spec:
anyOf:
- type: integer
- type: string
- description: Name or number of the port
- to access on the container. Number must
- be in the range 1 to 65535. Name must
- be an IANA_SVC_NAME.
+ description: |-
+ Name or number of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
scheme:
- description: Scheme to use for connecting
- to the host. Defaults to HTTP.
+ description: |-
+ Scheme to use for connecting to the host.
+ Defaults to HTTP.
type: string
required:
- port
type: object
+ sleep:
+ description: Sleep represents the duration that
+ the container should sleep before being terminated.
+ properties:
+ seconds:
+ description: Seconds is the number of seconds
+ to sleep.
+ format: int64
+ type: integer
+ required:
+ - seconds
+ type: object
tcpSocket:
- description: Deprecated. TCPSocket is NOT supported
- as a LifecycleHandler and kept for the backward
- compatibility. There are no validation of
- this field and lifecycle hooks will fail in
- runtime when tcp handler is specified.
+ description: |-
+ Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
+ for the backward compatibility. There are no validation of this field and
+ lifecycle hooks will fail in runtime when tcp handler is specified.
properties:
host:
description: 'Optional: Host name to connect
@@ -11948,55 +13273,49 @@ spec:
anyOf:
- type: integer
- type: string
- description: Number or name of the port
- to access on the container. Number must
- be in the range 1 to 65535. Name must
- be an IANA_SVC_NAME.
+ description: |-
+ Number or name of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
required:
- port
type: object
type: object
preStop:
- description: 'PreStop is called immediately before
- a container is terminated due to an API request
- or management event such as liveness/startup probe
- failure, preemption, resource contention, etc.
- The handler is not called if the container crashes
- or exits. The Pod''s termination grace period
- countdown begins before the PreStop hook is executed.
- Regardless of the outcome of the handler, the
- container will eventually terminate within the
- Pod''s termination grace period (unless delayed
- by finalizers). Other management of the container
- blocks until the hook completes or until the termination
- grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
+ description: |-
+ PreStop is called immediately before a container is terminated due to an
+ API request or management event such as liveness/startup probe failure,
+ preemption, resource contention, etc. The handler is not called if the
+ container crashes or exits. The Pod's termination grace period countdown begins before the
+ PreStop hook is executed. Regardless of the outcome of the handler, the
+ container will eventually terminate within the Pod's termination grace
+ period (unless delayed by finalizers). Other management of the container blocks until the hook completes
+ or until the termination grace period is reached.
+ More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
properties:
exec:
description: Exec specifies the action to take.
properties:
command:
- description: Command is the command line
- to execute inside the container, the working
- directory for the command is root ('/')
- in the container's filesystem. The command
- is simply exec'd, it is not run inside
- a shell, so traditional shell instructions
- ('|', etc) won't work. To use a shell,
- you need to explicitly call out to that
- shell. Exit status of 0 is treated as
- live/healthy and non-zero is unhealthy.
+ description: |-
+ Command is the command line to execute inside the container, the working directory for the
+ command is root ('/') in the container's filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
+ a shell, you need to explicitly call out to that shell.
+ Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
type: object
httpGet:
description: HTTPGet specifies the http request
to perform.
properties:
host:
- description: Host name to connect to, defaults
- to the pod IP. You probably want to set
+ description: |-
+ Host name to connect to, defaults to the pod IP. You probably want to set
"Host" in httpHeaders instead.
type: string
httpHeaders:
@@ -12007,7 +13326,9 @@ spec:
header to be used in HTTP probes
properties:
name:
- description: The header field name
+ description: |-
+ The header field name.
+ This will be canonicalized upon output, so case-variant names will be understood as the same header.
type: string
value:
description: The header field value
@@ -12017,6 +13338,7 @@ spec:
- value
type: object
type: array
+ x-kubernetes-list-type: atomic
path:
description: Path to access on the HTTP
server.
@@ -12025,24 +13347,36 @@ spec:
anyOf:
- type: integer
- type: string
- description: Name or number of the port
- to access on the container. Number must
- be in the range 1 to 65535. Name must
- be an IANA_SVC_NAME.
+ description: |-
+ Name or number of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
scheme:
- description: Scheme to use for connecting
- to the host. Defaults to HTTP.
+ description: |-
+ Scheme to use for connecting to the host.
+ Defaults to HTTP.
type: string
required:
- port
type: object
+ sleep:
+ description: Sleep represents the duration that
+ the container should sleep before being terminated.
+ properties:
+ seconds:
+ description: Seconds is the number of seconds
+ to sleep.
+ format: int64
+ type: integer
+ required:
+ - seconds
+ type: object
tcpSocket:
- description: Deprecated. TCPSocket is NOT supported
- as a LifecycleHandler and kept for the backward
- compatibility. There are no validation of
- this field and lifecycle hooks will fail in
- runtime when tcp handler is specified.
+ description: |-
+ Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
+ for the backward compatibility. There are no validation of this field and
+ lifecycle hooks will fail in runtime when tcp handler is specified.
properties:
host:
description: 'Optional: Host name to connect
@@ -12052,10 +13386,10 @@ spec:
anyOf:
- type: integer
- type: string
- description: Number or name of the port
- to access on the container. Number must
- be in the range 1 to 65535. Name must
- be an IANA_SVC_NAME.
+ description: |-
+ Number or name of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
required:
- port
@@ -12063,37 +13397,36 @@ spec:
type: object
type: object
livenessProbe:
- description: 'Periodic probe of container liveness.
- Container will be restarted if the probe fails. Cannot
- be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Periodic probe of container liveness.
+ Container will be restarted if the probe fails.
+ Cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
properties:
exec:
description: Exec specifies the action to take.
properties:
command:
- description: Command is the command line to
- execute inside the container, the working
- directory for the command is root ('/') in
- the container's filesystem. The command is
- simply exec'd, it is not run inside a shell,
- so traditional shell instructions ('|', etc)
- won't work. To use a shell, you need to explicitly
- call out to that shell. Exit status of 0 is
- treated as live/healthy and non-zero is unhealthy.
+ description: |-
+ Command is the command line to execute inside the container, the working directory for the
+ command is root ('/') in the container's filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
+ a shell, you need to explicitly call out to that shell.
+ Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
type: object
failureThreshold:
- description: Minimum consecutive failures for the
- probe to be considered failed after having succeeded.
+ description: |-
+ Minimum consecutive failures for the probe to be considered failed after having succeeded.
Defaults to 3. Minimum value is 1.
format: int32
type: integer
grpc:
description: GRPC specifies an action involving
- a GRPC port. This is a beta field and requires
- enabling GRPCContainerProbe feature gate.
+ a GRPC port.
properties:
port:
description: Port number of the gRPC service.
@@ -12101,11 +13434,12 @@ spec:
format: int32
type: integer
service:
- description: "Service is the name of the service
- to place in the gRPC HealthCheckRequest (see
- https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
- \n If this is not specified, the default behavior
- is defined by gRPC."
+ default: ""
+ description: |-
+ Service is the name of the service to place in the gRPC HealthCheckRequest
+ (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+
+ If this is not specified, the default behavior is defined by gRPC.
type: string
required:
- port
@@ -12115,9 +13449,9 @@ spec:
to perform.
properties:
host:
- description: Host name to connect to, defaults
- to the pod IP. You probably want to set "Host"
- in httpHeaders instead.
+ description: |-
+ Host name to connect to, defaults to the pod IP. You probably want to set
+ "Host" in httpHeaders instead.
type: string
httpHeaders:
description: Custom headers to set in the request.
@@ -12127,7 +13461,9 @@ spec:
header to be used in HTTP probes
properties:
name:
- description: The header field name
+ description: |-
+ The header field name.
+ This will be canonicalized upon output, so case-variant names will be understood as the same header.
type: string
value:
description: The header field value
@@ -12137,6 +13473,7 @@ spec:
- value
type: object
type: array
+ x-kubernetes-list-type: atomic
path:
description: Path to access on the HTTP server.
type: string
@@ -12144,34 +13481,35 @@ spec:
anyOf:
- type: integer
- type: string
- description: Name or number of the port to access
- on the container. Number must be in the range
- 1 to 65535. Name must be an IANA_SVC_NAME.
+ description: |-
+ Name or number of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
scheme:
- description: Scheme to use for connecting to
- the host. Defaults to HTTP.
+ description: |-
+ Scheme to use for connecting to the host.
+ Defaults to HTTP.
type: string
required:
- port
type: object
initialDelaySeconds:
- description: 'Number of seconds after the container
- has started before liveness probes are initiated.
- More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Number of seconds after the container has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
format: int32
type: integer
periodSeconds:
- description: How often (in seconds) to perform the
- probe. Default to 10 seconds. Minimum value is
- 1.
+ description: |-
+ How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
format: int32
type: integer
successThreshold:
- description: Minimum consecutive successes for the
- probe to be considered successful after having
- failed. Defaults to 1. Must be 1 for liveness
- and startup. Minimum value is 1.
+ description: |-
+ Minimum consecutive successes for the probe to be considered successful after having failed.
+ Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
format: int32
type: integer
tcpSocket:
@@ -12186,61 +13524,59 @@ spec:
anyOf:
- type: integer
- type: string
- description: Number or name of the port to access
- on the container. Number must be in the range
- 1 to 65535. Name must be an IANA_SVC_NAME.
+ description: |-
+ Number or name of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
required:
- port
type: object
terminationGracePeriodSeconds:
- description: Optional duration in seconds the pod
- needs to terminate gracefully upon probe failure.
- The grace period is the duration in seconds after
- the processes running in the pod are sent a termination
- signal and the time when the processes are forcibly
- halted with a kill signal. Set this value longer
- than the expected cleanup time for your process.
- If this value is nil, the pod's terminationGracePeriodSeconds
- will be used. Otherwise, this value overrides
- the value provided by the pod spec. Value must
- be non-negative integer. The value zero indicates
- stop immediately via the kill signal (no opportunity
- to shut down). This is a beta field and requires
- enabling ProbeTerminationGracePeriod feature gate.
- Minimum value is 1. spec.terminationGracePeriodSeconds
- is used if unset.
+ description: |-
+ Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
+ The grace period is the duration in seconds after the processes running in the pod are sent
+ a termination signal and the time when the processes are forcibly halted with a kill signal.
+ Set this value longer than the expected cleanup time for your process.
+ If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
+ value overrides the value provided by the pod spec.
+ Value must be non-negative integer. The value zero indicates stop immediately via
+ the kill signal (no opportunity to shut down).
+ This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
+ Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
format: int64
type: integer
timeoutSeconds:
- description: 'Number of seconds after which the
- probe times out. Defaults to 1 second. Minimum
- value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Number of seconds after which the probe times out.
+ Defaults to 1 second. Minimum value is 1.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
format: int32
type: integer
type: object
name:
- description: Name of the container specified as a DNS_LABEL.
+ description: |-
+ Name of the container specified as a DNS_LABEL.
Each container in a pod must have a unique name (DNS_LABEL).
Cannot be updated.
type: string
ports:
- description: List of ports to expose from the container.
- Exposing a port here gives the system additional information
- about the network connections a container uses, but
- is primarily informational. Not specifying a port
- here DOES NOT prevent that port from being exposed.
- Any port which is listening on the default "0.0.0.0"
- address inside a container will be accessible from
- the network. Cannot be updated.
+ description: |-
+ List of ports to expose from the container. Not specifying a port here
+ DOES NOT prevent that port from being exposed. Any port which is
+ listening on the default "0.0.0.0" address inside a container will be
+ accessible from the network.
+ Modifying this array with strategic merge patch may corrupt the data.
+ For more information See https://github.com/kubernetes/kubernetes/issues/108255.
+ Cannot be updated.
items:
description: ContainerPort represents a network port
in a single container.
properties:
containerPort:
- description: Number of port to expose on the pod's
- IP address. This must be a valid port number,
- 0 < x < 65536.
+ description: |-
+ Number of port to expose on the pod's IP address.
+ This must be a valid port number, 0 < x < 65536.
format: int32
type: integer
hostIP:
@@ -12248,23 +13584,24 @@ spec:
port to.
type: string
hostPort:
- description: Number of port to expose on the host.
- If specified, this must be a valid port number,
- 0 < x < 65536. If HostNetwork is specified,
- this must match ContainerPort. Most containers
- do not need this.
+ description: |-
+ Number of port to expose on the host.
+ If specified, this must be a valid port number, 0 < x < 65536.
+ If HostNetwork is specified, this must match ContainerPort.
+ Most containers do not need this.
format: int32
type: integer
name:
- description: If specified, this must be an IANA_SVC_NAME
- and unique within the pod. Each named port in
- a pod must have a unique name. Name for the
- port that can be referred to by services.
+ description: |-
+ If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
+ named port in a pod must have a unique name. Name for the port that can be
+ referred to by services.
type: string
protocol:
default: TCP
- description: Protocol for port. Must be UDP, TCP,
- or SCTP. Defaults to "TCP".
+ description: |-
+ Protocol for port. Must be UDP, TCP, or SCTP.
+ Defaults to "TCP".
type: string
required:
- containerPort
@@ -12275,37 +13612,36 @@ spec:
- protocol
x-kubernetes-list-type: map
readinessProbe:
- description: 'Periodic probe of container service readiness.
- Container will be removed from service endpoints if
- the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Periodic probe of container service readiness.
+ Container will be removed from service endpoints if the probe fails.
+ Cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
properties:
exec:
description: Exec specifies the action to take.
properties:
command:
- description: Command is the command line to
- execute inside the container, the working
- directory for the command is root ('/') in
- the container's filesystem. The command is
- simply exec'd, it is not run inside a shell,
- so traditional shell instructions ('|', etc)
- won't work. To use a shell, you need to explicitly
- call out to that shell. Exit status of 0 is
- treated as live/healthy and non-zero is unhealthy.
+ description: |-
+ Command is the command line to execute inside the container, the working directory for the
+ command is root ('/') in the container's filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
+ a shell, you need to explicitly call out to that shell.
+ Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
type: object
failureThreshold:
- description: Minimum consecutive failures for the
- probe to be considered failed after having succeeded.
+ description: |-
+ Minimum consecutive failures for the probe to be considered failed after having succeeded.
Defaults to 3. Minimum value is 1.
format: int32
type: integer
grpc:
description: GRPC specifies an action involving
- a GRPC port. This is a beta field and requires
- enabling GRPCContainerProbe feature gate.
+ a GRPC port.
properties:
port:
description: Port number of the gRPC service.
@@ -12313,11 +13649,12 @@ spec:
format: int32
type: integer
service:
- description: "Service is the name of the service
- to place in the gRPC HealthCheckRequest (see
- https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
- \n If this is not specified, the default behavior
- is defined by gRPC."
+ default: ""
+ description: |-
+ Service is the name of the service to place in the gRPC HealthCheckRequest
+ (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+
+ If this is not specified, the default behavior is defined by gRPC.
type: string
required:
- port
@@ -12327,9 +13664,9 @@ spec:
to perform.
properties:
host:
- description: Host name to connect to, defaults
- to the pod IP. You probably want to set "Host"
- in httpHeaders instead.
+ description: |-
+ Host name to connect to, defaults to the pod IP. You probably want to set
+ "Host" in httpHeaders instead.
type: string
httpHeaders:
description: Custom headers to set in the request.
@@ -12339,7 +13676,9 @@ spec:
header to be used in HTTP probes
properties:
name:
- description: The header field name
+ description: |-
+ The header field name.
+ This will be canonicalized upon output, so case-variant names will be understood as the same header.
type: string
value:
description: The header field value
@@ -12349,6 +13688,7 @@ spec:
- value
type: object
type: array
+ x-kubernetes-list-type: atomic
path:
description: Path to access on the HTTP server.
type: string
@@ -12356,34 +13696,35 @@ spec:
anyOf:
- type: integer
- type: string
- description: Name or number of the port to access
- on the container. Number must be in the range
- 1 to 65535. Name must be an IANA_SVC_NAME.
+ description: |-
+ Name or number of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
scheme:
- description: Scheme to use for connecting to
- the host. Defaults to HTTP.
+ description: |-
+ Scheme to use for connecting to the host.
+ Defaults to HTTP.
type: string
required:
- port
type: object
initialDelaySeconds:
- description: 'Number of seconds after the container
- has started before liveness probes are initiated.
- More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Number of seconds after the container has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
format: int32
type: integer
periodSeconds:
- description: How often (in seconds) to perform the
- probe. Default to 10 seconds. Minimum value is
- 1.
+ description: |-
+ How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
format: int32
type: integer
successThreshold:
- description: Minimum consecutive successes for the
- probe to be considered successful after having
- failed. Defaults to 1. Must be 1 for liveness
- and startup. Minimum value is 1.
+ description: |-
+ Minimum consecutive successes for the probe to be considered successful after having failed.
+ Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
format: int32
type: integer
tcpSocket:
@@ -12398,43 +13739,90 @@ spec:
anyOf:
- type: integer
- type: string
- description: Number or name of the port to access
- on the container. Number must be in the range
- 1 to 65535. Name must be an IANA_SVC_NAME.
+ description: |-
+ Number or name of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
required:
- port
type: object
terminationGracePeriodSeconds:
- description: Optional duration in seconds the pod
- needs to terminate gracefully upon probe failure.
- The grace period is the duration in seconds after
- the processes running in the pod are sent a termination
- signal and the time when the processes are forcibly
- halted with a kill signal. Set this value longer
- than the expected cleanup time for your process.
- If this value is nil, the pod's terminationGracePeriodSeconds
- will be used. Otherwise, this value overrides
- the value provided by the pod spec. Value must
- be non-negative integer. The value zero indicates
- stop immediately via the kill signal (no opportunity
- to shut down). This is a beta field and requires
- enabling ProbeTerminationGracePeriod feature gate.
- Minimum value is 1. spec.terminationGracePeriodSeconds
- is used if unset.
+ description: |-
+ Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
+ The grace period is the duration in seconds after the processes running in the pod are sent
+ a termination signal and the time when the processes are forcibly halted with a kill signal.
+ Set this value longer than the expected cleanup time for your process.
+ If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
+ value overrides the value provided by the pod spec.
+ Value must be non-negative integer. The value zero indicates stop immediately via
+ the kill signal (no opportunity to shut down).
+ This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
+ Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
format: int64
type: integer
timeoutSeconds:
- description: 'Number of seconds after which the
- probe times out. Defaults to 1 second. Minimum
- value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Number of seconds after which the probe times out.
+ Defaults to 1 second. Minimum value is 1.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
format: int32
type: integer
type: object
+ resizePolicy:
+ description: Resources resize policy for the container.
+ items:
+ description: ContainerResizePolicy represents resource
+ resize policy for the container.
+ properties:
+ resourceName:
+ description: |-
+ Name of the resource to which this resource resize policy applies.
+ Supported values: cpu, memory.
+ type: string
+ restartPolicy:
+ description: |-
+ Restart policy to apply when specified resource is resized.
+ If not specified, it defaults to NotRequired.
+ type: string
+ required:
+ - resourceName
+ - restartPolicy
+ type: object
+ type: array
+ x-kubernetes-list-type: atomic
resources:
- description: 'Compute Resources required by this container.
- Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Compute Resources required by this container.
+ Cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry
+ in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -12442,8 +13830,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount
- of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -12452,34 +13841,76 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is
- omitted for a container, it defaults to Limits
- if that is explicitly specified, otherwise to
- an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
+ restartPolicy:
+ description: |-
+ RestartPolicy defines the restart behavior of individual containers in a pod.
+ This field may only be set for init containers, and the only allowed value is "Always".
+ For non-init containers or when this field is not specified,
+ the restart behavior is defined by the Pod's restart policy and the container type.
+ Setting the RestartPolicy as "Always" for the init container will have the following effect:
+ this init container will be continually restarted on
+ exit until all regular containers have terminated. Once all regular
+ containers have completed, all init containers with restartPolicy "Always"
+ will be shut down. This lifecycle differs from normal init containers and
+ is often referred to as a "sidecar" container. Although this init
+ container still starts in the init container sequence, it does not wait
+ for the container to complete before proceeding to the next init
+ container. Instead, the next init container starts immediately after this
+ init container is started, or after any startupProbe has successfully
+ completed.
+ type: string
securityContext:
- description: 'SecurityContext defines the security options
- the container should be run with. If set, the fields
- of SecurityContext override the equivalent fields
- of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'
+ description: |-
+ SecurityContext defines the security options the container should be run with.
+ If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
+ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
properties:
allowPrivilegeEscalation:
- description: 'AllowPrivilegeEscalation controls
- whether a process can gain more privileges than
- its parent process. This bool directly controls
- if the no_new_privs flag will be set on the container
- process. AllowPrivilegeEscalation is true always
- when the container is: 1) run as Privileged 2)
- has CAP_SYS_ADMIN Note that this field cannot
- be set when spec.os.name is windows.'
+ description: |-
+ AllowPrivilegeEscalation controls whether a process can gain more
+ privileges than its parent process. This bool directly controls if
+ the no_new_privs flag will be set on the container process.
+ AllowPrivilegeEscalation is true always when the container is:
+ 1) run as Privileged
+ 2) has CAP_SYS_ADMIN
+ Note that this field cannot be set when spec.os.name is windows.
type: boolean
+ appArmorProfile:
+ description: |-
+ appArmorProfile is the AppArmor options to use by this container. If set, this profile
+ overrides the pod's appArmorProfile.
+ Note that this field cannot be set when spec.os.name is windows.
+ properties:
+ localhostProfile:
+ description: |-
+ localhostProfile indicates a profile loaded on the node that should be used.
+ The profile must be preconfigured on the node to work.
+ Must match the loaded name of the profile.
+ Must be set if and only if type is "Localhost".
+ type: string
+ type:
+ description: |-
+ type indicates which kind of AppArmor profile will be applied.
+ Valid options are:
+ Localhost - a profile pre-loaded on the node.
+ RuntimeDefault - the container runtime's default profile.
+ Unconfined - no AppArmor enforcement.
+ type: string
+ required:
+ - type
+ type: object
capabilities:
- description: The capabilities to add/drop when running
- containers. Defaults to the default set of capabilities
- granted by the container runtime. Note that this
- field cannot be set when spec.os.name is windows.
+ description: |-
+ The capabilities to add/drop when running containers.
+ Defaults to the default set of capabilities granted by the container runtime.
+ Note that this field cannot be set when spec.os.name is windows.
properties:
add:
description: Added capabilities
@@ -12488,6 +13919,7 @@ spec:
type
type: string
type: array
+ x-kubernetes-list-type: atomic
drop:
description: Removed capabilities
items:
@@ -12495,68 +13927,63 @@ spec:
type
type: string
type: array
+ x-kubernetes-list-type: atomic
type: object
privileged:
- description: Run container in privileged mode. Processes
- in privileged containers are essentially equivalent
- to root on the host. Defaults to false. Note that
- this field cannot be set when spec.os.name is
- windows.
+ description: |-
+ Run container in privileged mode.
+ Processes in privileged containers are essentially equivalent to root on the host.
+ Defaults to false.
+ Note that this field cannot be set when spec.os.name is windows.
type: boolean
procMount:
- description: procMount denotes the type of proc
- mount to use for the containers. The default is
- DefaultProcMount which uses the container runtime
- defaults for readonly paths and masked paths.
- This requires the ProcMountType feature flag to
- be enabled. Note that this field cannot be set
- when spec.os.name is windows.
+ description: |-
+ procMount denotes the type of proc mount to use for the containers.
+ The default is DefaultProcMount which uses the container runtime defaults for
+ readonly paths and masked paths.
+ This requires the ProcMountType feature flag to be enabled.
+ Note that this field cannot be set when spec.os.name is windows.
type: string
readOnlyRootFilesystem:
- description: Whether this container has a read-only
- root filesystem. Default is false. Note that this
- field cannot be set when spec.os.name is windows.
+ description: |-
+ Whether this container has a read-only root filesystem.
+ Default is false.
+ Note that this field cannot be set when spec.os.name is windows.
type: boolean
runAsGroup:
- description: The GID to run the entrypoint of the
- container process. Uses runtime default if unset.
- May also be set in PodSecurityContext. If set
- in both SecurityContext and PodSecurityContext,
- the value specified in SecurityContext takes precedence.
- Note that this field cannot be set when spec.os.name
- is windows.
+ description: |-
+ The GID to run the entrypoint of the container process.
+ Uses runtime default if unset.
+ May also be set in PodSecurityContext. If set in both SecurityContext and
+ PodSecurityContext, the value specified in SecurityContext takes precedence.
+ Note that this field cannot be set when spec.os.name is windows.
format: int64
type: integer
runAsNonRoot:
- description: Indicates that the container must run
- as a non-root user. If true, the Kubelet will
- validate the image at runtime to ensure that it
- does not run as UID 0 (root) and fail to start
- the container if it does. If unset or false, no
- such validation will be performed. May also be
- set in PodSecurityContext. If set in both SecurityContext
- and PodSecurityContext, the value specified in
- SecurityContext takes precedence.
+ description: |-
+ Indicates that the container must run as a non-root user.
+ If true, the Kubelet will validate the image at runtime to ensure that it
+ does not run as UID 0 (root) and fail to start the container if it does.
+ If unset or false, no such validation will be performed.
+ May also be set in PodSecurityContext. If set in both SecurityContext and
+ PodSecurityContext, the value specified in SecurityContext takes precedence.
type: boolean
runAsUser:
- description: The UID to run the entrypoint of the
- container process. Defaults to user specified
- in image metadata if unspecified. May also be
- set in PodSecurityContext. If set in both SecurityContext
- and PodSecurityContext, the value specified in
- SecurityContext takes precedence. Note that this
- field cannot be set when spec.os.name is windows.
+ description: |-
+ The UID to run the entrypoint of the container process.
+ Defaults to user specified in image metadata if unspecified.
+ May also be set in PodSecurityContext. If set in both SecurityContext and
+ PodSecurityContext, the value specified in SecurityContext takes precedence.
+ Note that this field cannot be set when spec.os.name is windows.
format: int64
type: integer
seLinuxOptions:
- description: The SELinux context to be applied to
- the container. If unspecified, the container runtime
- will allocate a random SELinux context for each
- container. May also be set in PodSecurityContext. If
- set in both SecurityContext and PodSecurityContext,
- the value specified in SecurityContext takes precedence.
- Note that this field cannot be set when spec.os.name
- is windows.
+ description: |-
+ The SELinux context to be applied to the container.
+ If unspecified, the container runtime will allocate a random SELinux context for each
+ container. May also be set in PodSecurityContext. If set in both SecurityContext and
+ PodSecurityContext, the value specified in SecurityContext takes precedence.
+ Note that this field cannot be set when spec.os.name is windows.
properties:
level:
description: Level is SELinux level label that
@@ -12576,114 +14003,98 @@ spec:
type: string
type: object
seccompProfile:
- description: The seccomp options to use by this
- container. If seccomp options are provided at
- both the pod & container level, the container
- options override the pod options. Note that this
- field cannot be set when spec.os.name is windows.
+ description: |-
+ The seccomp options to use by this container. If seccomp options are
+ provided at both the pod & container level, the container options
+ override the pod options.
+ Note that this field cannot be set when spec.os.name is windows.
properties:
localhostProfile:
- description: localhostProfile indicates a profile
- defined in a file on the node should be used.
- The profile must be preconfigured on the node
- to work. Must be a descending path, relative
- to the kubelet's configured seccomp profile
- location. Must only be set if type is "Localhost".
+ description: |-
+ localhostProfile indicates a profile defined in a file on the node should be used.
+ The profile must be preconfigured on the node to work.
+ Must be a descending path, relative to the kubelet's configured seccomp profile location.
+ Must be set if type is "Localhost". Must NOT be set for any other type.
type: string
type:
- description: 'type indicates which kind of seccomp
- profile will be applied. Valid options are:
- Localhost - a profile defined in a file on
- the node should be used. RuntimeDefault -
- the container runtime default profile should
- be used. Unconfined - no profile should be
- applied.'
+ description: |-
+ type indicates which kind of seccomp profile will be applied.
+ Valid options are:
+
+ Localhost - a profile defined in a file on the node should be used.
+ RuntimeDefault - the container runtime default profile should be used.
+ Unconfined - no profile should be applied.
type: string
required:
- type
type: object
windowsOptions:
- description: The Windows specific settings applied
- to all containers. If unspecified, the options
- from the PodSecurityContext will be used. If set
- in both SecurityContext and PodSecurityContext,
- the value specified in SecurityContext takes precedence.
- Note that this field cannot be set when spec.os.name
- is linux.
+ description: |-
+ The Windows specific settings applied to all containers.
+ If unspecified, the options from the PodSecurityContext will be used.
+ If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
+ Note that this field cannot be set when spec.os.name is linux.
properties:
gmsaCredentialSpec:
- description: GMSACredentialSpec is where the
- GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa)
- inlines the contents of the GMSA credential
- spec named by the GMSACredentialSpecName field.
+ description: |-
+ GMSACredentialSpec is where the GMSA admission webhook
+ (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
+ GMSA credential spec named by the GMSACredentialSpecName field.
type: string
gmsaCredentialSpecName:
description: GMSACredentialSpecName is the name
of the GMSA credential spec to use.
type: string
hostProcess:
- description: HostProcess determines if a container
- should be run as a 'Host Process' container.
- This field is alpha-level and will only be
- honored by components that enable the WindowsHostProcessContainers
- feature flag. Setting this field without the
- feature flag will result in errors when validating
- the Pod. All of a Pod's containers must have
- the same effective HostProcess value (it is
- not allowed to have a mix of HostProcess containers
- and non-HostProcess containers). In addition,
- if HostProcess is true then HostNetwork must
- also be set to true.
+ description: |-
+ HostProcess determines if a container should be run as a 'Host Process' container.
+ All of a Pod's containers must have the same effective HostProcess value
+ (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
+ In addition, if HostProcess is true then HostNetwork must also be set to true.
type: boolean
runAsUserName:
- description: The UserName in Windows to run
- the entrypoint of the container process. Defaults
- to the user specified in image metadata if
- unspecified. May also be set in PodSecurityContext.
- If set in both SecurityContext and PodSecurityContext,
- the value specified in SecurityContext takes
- precedence.
+ description: |-
+ The UserName in Windows to run the entrypoint of the container process.
+ Defaults to the user specified in image metadata if unspecified.
+ May also be set in PodSecurityContext. If set in both SecurityContext and
+ PodSecurityContext, the value specified in SecurityContext takes precedence.
type: string
type: object
type: object
startupProbe:
- description: 'StartupProbe indicates that the Pod has
- successfully initialized. If specified, no other probes
- are executed until this completes successfully. If
- this probe fails, the Pod will be restarted, just
- as if the livenessProbe failed. This can be used to
- provide different probe parameters at the beginning
- of a Pod''s lifecycle, when it might take a long time
- to load data or warm a cache, than during steady-state
- operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ StartupProbe indicates that the Pod has successfully initialized.
+ If specified, no other probes are executed until this completes successfully.
+ If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
+ This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
+ when it might take a long time to load data or warm a cache, than during steady-state operation.
+ This cannot be updated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
properties:
exec:
description: Exec specifies the action to take.
properties:
command:
- description: Command is the command line to
- execute inside the container, the working
- directory for the command is root ('/') in
- the container's filesystem. The command is
- simply exec'd, it is not run inside a shell,
- so traditional shell instructions ('|', etc)
- won't work. To use a shell, you need to explicitly
- call out to that shell. Exit status of 0 is
- treated as live/healthy and non-zero is unhealthy.
+ description: |-
+ Command is the command line to execute inside the container, the working directory for the
+ command is root ('/') in the container's filesystem. The command is simply exec'd, it is
+ not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
+ a shell, you need to explicitly call out to that shell.
+ Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
type: object
failureThreshold:
- description: Minimum consecutive failures for the
- probe to be considered failed after having succeeded.
+ description: |-
+ Minimum consecutive failures for the probe to be considered failed after having succeeded.
Defaults to 3. Minimum value is 1.
format: int32
type: integer
grpc:
description: GRPC specifies an action involving
- a GRPC port. This is a beta field and requires
- enabling GRPCContainerProbe feature gate.
+ a GRPC port.
properties:
port:
description: Port number of the gRPC service.
@@ -12691,11 +14102,12 @@ spec:
format: int32
type: integer
service:
- description: "Service is the name of the service
- to place in the gRPC HealthCheckRequest (see
- https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
- \n If this is not specified, the default behavior
- is defined by gRPC."
+ default: ""
+ description: |-
+ Service is the name of the service to place in the gRPC HealthCheckRequest
+ (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
+
+ If this is not specified, the default behavior is defined by gRPC.
type: string
required:
- port
@@ -12705,9 +14117,9 @@ spec:
to perform.
properties:
host:
- description: Host name to connect to, defaults
- to the pod IP. You probably want to set "Host"
- in httpHeaders instead.
+ description: |-
+ Host name to connect to, defaults to the pod IP. You probably want to set
+ "Host" in httpHeaders instead.
type: string
httpHeaders:
description: Custom headers to set in the request.
@@ -12717,7 +14129,9 @@ spec:
header to be used in HTTP probes
properties:
name:
- description: The header field name
+ description: |-
+ The header field name.
+ This will be canonicalized upon output, so case-variant names will be understood as the same header.
type: string
value:
description: The header field value
@@ -12727,6 +14141,7 @@ spec:
- value
type: object
type: array
+ x-kubernetes-list-type: atomic
path:
description: Path to access on the HTTP server.
type: string
@@ -12734,34 +14149,35 @@ spec:
anyOf:
- type: integer
- type: string
- description: Name or number of the port to access
- on the container. Number must be in the range
- 1 to 65535. Name must be an IANA_SVC_NAME.
+ description: |-
+ Name or number of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
scheme:
- description: Scheme to use for connecting to
- the host. Defaults to HTTP.
+ description: |-
+ Scheme to use for connecting to the host.
+ Defaults to HTTP.
type: string
required:
- port
type: object
initialDelaySeconds:
- description: 'Number of seconds after the container
- has started before liveness probes are initiated.
- More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Number of seconds after the container has started before liveness probes are initiated.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
format: int32
type: integer
periodSeconds:
- description: How often (in seconds) to perform the
- probe. Default to 10 seconds. Minimum value is
- 1.
+ description: |-
+ How often (in seconds) to perform the probe.
+ Default to 10 seconds. Minimum value is 1.
format: int32
type: integer
successThreshold:
- description: Minimum consecutive successes for the
- probe to be considered successful after having
- failed. Defaults to 1. Must be 1 for liveness
- and startup. Minimum value is 1.
+ description: |-
+ Minimum consecutive successes for the probe to be considered successful after having failed.
+ Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
format: int32
type: integer
tcpSocket:
@@ -12776,83 +14192,75 @@ spec:
anyOf:
- type: integer
- type: string
- description: Number or name of the port to access
- on the container. Number must be in the range
- 1 to 65535. Name must be an IANA_SVC_NAME.
+ description: |-
+ Number or name of the port to access on the container.
+ Number must be in the range 1 to 65535.
+ Name must be an IANA_SVC_NAME.
x-kubernetes-int-or-string: true
required:
- port
type: object
terminationGracePeriodSeconds:
- description: Optional duration in seconds the pod
- needs to terminate gracefully upon probe failure.
- The grace period is the duration in seconds after
- the processes running in the pod are sent a termination
- signal and the time when the processes are forcibly
- halted with a kill signal. Set this value longer
- than the expected cleanup time for your process.
- If this value is nil, the pod's terminationGracePeriodSeconds
- will be used. Otherwise, this value overrides
- the value provided by the pod spec. Value must
- be non-negative integer. The value zero indicates
- stop immediately via the kill signal (no opportunity
- to shut down). This is a beta field and requires
- enabling ProbeTerminationGracePeriod feature gate.
- Minimum value is 1. spec.terminationGracePeriodSeconds
- is used if unset.
+ description: |-
+ Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
+ The grace period is the duration in seconds after the processes running in the pod are sent
+ a termination signal and the time when the processes are forcibly halted with a kill signal.
+ Set this value longer than the expected cleanup time for your process.
+ If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
+ value overrides the value provided by the pod spec.
+ Value must be non-negative integer. The value zero indicates stop immediately via
+ the kill signal (no opportunity to shut down).
+ This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
+ Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
format: int64
type: integer
timeoutSeconds:
- description: 'Number of seconds after which the
- probe times out. Defaults to 1 second. Minimum
- value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
+ description: |-
+ Number of seconds after which the probe times out.
+ Defaults to 1 second. Minimum value is 1.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
format: int32
type: integer
type: object
stdin:
- description: Whether this container should allocate
- a buffer for stdin in the container runtime. If this
- is not set, reads from stdin in the container will
- always result in EOF. Default is false.
+ description: |-
+ Whether this container should allocate a buffer for stdin in the container runtime. If this
+ is not set, reads from stdin in the container will always result in EOF.
+ Default is false.
type: boolean
stdinOnce:
- description: Whether the container runtime should close
- the stdin channel after it has been opened by a single
- attach. When stdin is true the stdin stream will remain
- open across multiple attach sessions. If stdinOnce
- is set to true, stdin is opened on container start,
- is empty until the first client attaches to stdin,
- and then remains open and accepts data until the client
- disconnects, at which time stdin is closed and remains
- closed until the container is restarted. If this flag
- is false, a container processes that reads from stdin
- will never receive an EOF. Default is false
+ description: |-
+ Whether the container runtime should close the stdin channel after it has been opened by
+ a single attach. When stdin is true the stdin stream will remain open across multiple attach
+ sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
+ first client attaches to stdin, and then remains open and accepts data until the client disconnects,
+ at which time stdin is closed and remains closed until the container is restarted. If this
+ flag is false, a container processes that reads from stdin will never receive an EOF.
+ Default is false
type: boolean
terminationMessagePath:
- description: 'Optional: Path at which the file to which
- the container''s termination message will be written
- is mounted into the container''s filesystem. Message
- written is intended to be brief final status, such
- as an assertion failure message. Will be truncated
- by the node if greater than 4096 bytes. The total
- message length across all containers will be limited
- to 12kb. Defaults to /dev/termination-log. Cannot
- be updated.'
+ description: |-
+ Optional: Path at which the file to which the container's termination message
+ will be written is mounted into the container's filesystem.
+ Message written is intended to be brief final status, such as an assertion failure message.
+ Will be truncated by the node if greater than 4096 bytes. The total message length across
+ all containers will be limited to 12kb.
+ Defaults to /dev/termination-log.
+ Cannot be updated.
type: string
terminationMessagePolicy:
- description: Indicate how the termination message should
- be populated. File will use the contents of terminationMessagePath
- to populate the container status message on both success
- and failure. FallbackToLogsOnError will use the last
- chunk of container log output if the termination message
- file is empty and the container exited with an error.
- The log output is limited to 2048 bytes or 80 lines,
- whichever is smaller. Defaults to File. Cannot be
- updated.
+ description: |-
+ Indicate how the termination message should be populated. File will use the contents of
+ terminationMessagePath to populate the container status message on both success and failure.
+ FallbackToLogsOnError will use the last chunk of container log output if the termination
+ message file is empty and the container exited with an error.
+ The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
+ Defaults to File.
+ Cannot be updated.
type: string
tty:
- description: Whether this container should allocate
- a TTY for itself, also requires 'stdin' to be true.
+ description: |-
+ Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
Default is false.
type: boolean
volumeDevices:
@@ -12876,78 +14284,106 @@ spec:
- name
type: object
type: array
+ x-kubernetes-list-map-keys:
+ - devicePath
+ x-kubernetes-list-type: map
volumeMounts:
- description: Pod volumes to mount into the container's
- filesystem. Cannot be updated.
+ description: |-
+ Pod volumes to mount into the container's filesystem.
+ Cannot be updated.
items:
description: VolumeMount describes a mounting of a
Volume within a container.
properties:
mountPath:
- description: Path within the container at which
- the volume should be mounted. Must not contain
- ':'.
+ description: |-
+ Path within the container at which the volume should be mounted. Must
+ not contain ':'.
type: string
mountPropagation:
- description: mountPropagation determines how mounts
- are propagated from the host to container and
- the other way around. When not set, MountPropagationNone
- is used. This field is beta in 1.10.
+ description: |-
+ mountPropagation determines how mounts are propagated from the host
+ to container and the other way around.
+ When not set, MountPropagationNone is used.
+ This field is beta in 1.10.
+ When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
+ (which defaults to None).
type: string
name:
description: This must match the Name of a Volume.
type: string
readOnly:
- description: Mounted read-only if true, read-write
- otherwise (false or unspecified). Defaults to
- false.
+ description: |-
+ Mounted read-only if true, read-write otherwise (false or unspecified).
+ Defaults to false.
type: boolean
+ recursiveReadOnly:
+ description: |-
+ RecursiveReadOnly specifies whether read-only mounts should be handled
+ recursively.
+
+ If ReadOnly is false, this field has no meaning and must be unspecified.
+
+ If ReadOnly is true, and this field is set to Disabled, the mount is not made
+ recursively read-only. If this field is set to IfPossible, the mount is made
+ recursively read-only, if it is supported by the container runtime. If this
+ field is set to Enabled, the mount is made recursively read-only if it is
+ supported by the container runtime, otherwise the pod will not be started and
+ an error will be generated to indicate the reason.
+
+ If this field is set to IfPossible or Enabled, MountPropagation must be set to
+ None (or be unspecified, which defaults to None).
+
+ If this field is not specified, it is treated as an equivalent of Disabled.
+ type: string
subPath:
- description: Path within the volume from which
- the container's volume should be mounted. Defaults
- to "" (volume's root).
+ description: |-
+ Path within the volume from which the container's volume should be mounted.
+ Defaults to "" (volume's root).
type: string
subPathExpr:
- description: Expanded path within the volume from
- which the container's volume should be mounted.
- Behaves similarly to SubPath but environment
- variable references $(VAR_NAME) are expanded
- using the container's environment. Defaults
- to "" (volume's root). SubPathExpr and SubPath
- are mutually exclusive.
+ description: |-
+ Expanded path within the volume from which the container's volume should be mounted.
+ Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
+ Defaults to "" (volume's root).
+ SubPathExpr and SubPath are mutually exclusive.
type: string
required:
- mountPath
- name
type: object
type: array
+ x-kubernetes-list-map-keys:
+ - mountPath
+ x-kubernetes-list-type: map
workingDir:
- description: Container's working directory. If not specified,
- the container runtime's default will be used, which
- might be configured in the container image. Cannot
- be updated.
+ description: |-
+ Container's working directory.
+ If not specified, the container runtime's default will be used, which
+ might be configured in the container image.
+ Cannot be updated.
type: string
required:
- name
type: object
type: array
customTLSSecret:
- description: 'A secret projection containing a certificate
- and key with which to encrypt connections to PgBouncer.
- The "tls.crt", "tls.key", and "ca.crt" paths must be PEM-encoded
- certificates and keys. Changing this value causes PgBouncer
- to restart. More info: https://kubernetes.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths'
+ description: |-
+ A secret projection containing a certificate and key with which to encrypt
+ connections to PgBouncer. The "tls.crt", "tls.key", and "ca.crt" paths must
+ be PEM-encoded certificates and keys. Changing this value causes PgBouncer
+ to restart.
+ More info: https://kubernetes.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths
properties:
items:
- description: items if unspecified, each key-value pair
- in the Data field of the referenced Secret will be projected
- into the volume as a file whose name is the key and
- content is the value. If specified, the listed keys
- will be projected into the specified paths, and unlisted
- keys will not be present. If a key is specified which
- is not present in the Secret, the volume setup will
- error unless it is marked optional. Paths must be relative
- and may not contain the '..' path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ Secret will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the Secret,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within a volume.
properties:
@@ -12955,41 +14391,49 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits used to
- set permissions on this file. Must be an octal
- value between 0000 and 0777 or a decimal value
- between 0 and 511. YAML accepts both octal and
- decimal values, JSON requires decimal values for
- mode bits. If not specified, the volume defaultMode
- will be used. This might be in conflict with other
- options that affect the file mode, like fsGroup,
- and the result can be other mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path of the file
- to map the key to. May not be an absolute path.
- May not contain the path element '..'. May not
- start with the string '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional field specify whether the Secret
or its key must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
image:
- description: 'Name of a container image that can run PgBouncer
- 1.15 or newer. Changing this value causes PgBouncer to restart.
- The image may also be set using the RELATED_IMAGE_PGBOUNCER
- environment variable. More info: https://kubernetes.io/docs/concepts/containers/images'
+ description: |-
+ Name of a container image that can run PgBouncer 1.15 or newer. Changing
+ this value causes PgBouncer to restart. The image may also be set using
+ the RELATED_IMAGE_PGBOUNCER environment variable.
+ More info: https://kubernetes.io/docs/concepts/containers/images
type: string
metadata:
description: Metadata contains metadata for custom resources
@@ -13007,20 +14451,23 @@ spec:
anyOf:
- type: integer
- type: string
- description: Minimum number of pods that should be available
- at a time. Defaults to one when the replicas field is greater
- than one.
+ description: |-
+ Minimum number of pods that should be available at a time.
+ Defaults to one when the replicas field is greater than one.
x-kubernetes-int-or-string: true
port:
default: 5432
- description: Port on which PgBouncer should listen for client
- connections. Changing this value causes PgBouncer to restart.
+ description: |-
+ Port on which PgBouncer should listen for client connections. Changing
+ this value causes PgBouncer to restart.
format: int32
minimum: 1024
type: integer
priorityClassName:
- description: 'Priority class name for the pgBouncer pod. Changing
- this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/'
+ description: |-
+ Priority class name for the pgBouncer pod. Changing this value causes
+ PostgreSQL to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
type: string
replicas:
default: 1
@@ -13029,10 +14476,36 @@ spec:
minimum: 0
type: integer
resources:
- description: 'Compute resources of a PgBouncer container.
- Changing this value causes PgBouncer to restart. More info:
- https://kubernetes.io/docs/concepts/configuration/manage-resources-containers'
+ description: |-
+ Compute resources of a PgBouncer container. Changing this value causes
+ PgBouncer to restart.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -13040,8 +14513,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount of compute
- resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -13050,16 +14524,28 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount of
- compute resources required. If Requests is omitted for
- a container, it defaults to Limits if that is explicitly
- specified, otherwise to an implementation-defined value.
- More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
service:
description: Specification of the service that exposes PgBouncer.
properties:
+ externalTrafficPolicy:
+ description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies'
+ enum:
+ - Cluster
+ - Local
+ type: string
+ internalTrafficPolicy:
+ description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies'
+ enum:
+ - Cluster
+ - Local
+ type: string
metadata:
description: Metadata contains metadata for custom resources
properties:
@@ -13073,11 +14559,11 @@ spec:
type: object
type: object
nodePort:
- description: The port on which this service is exposed
- when type is NodePort or LoadBalancer. Value must be
- in-range and not in use or the operation will fail.
- If unspecified, a port will be allocated if this Service
- requires one. - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
+ description: |-
+ The port on which this service is exposed when type is NodePort or
+ LoadBalancer. Value must be in-range and not in use or the operation will
+ fail. If unspecified, a port will be allocated if this Service requires one.
+ - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
format: int32
type: integer
type:
@@ -13099,6 +14585,32 @@ spec:
resources:
description: Resource requirements for a sidecar container
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry
+ in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -13106,8 +14618,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount
- of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -13116,198 +14629,229 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is
- omitted for a container, it defaults to Limits
- if that is explicitly specified, otherwise to
- an implementation-defined value. More info:
- https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
type: object
type: object
tolerations:
- description: 'Tolerations of a PgBouncer pod. Changing this
- value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration'
+ description: |-
+ Tolerations of a PgBouncer pod. Changing this value causes PgBouncer to
+ restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
items:
- description: The pod this Toleration is attached to tolerates
- any taint that matches the triple using
- the matching operator .
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
properties:
effect:
- description: Effect indicates the taint effect to match.
- Empty means match all taint effects. When specified,
- allowed values are NoSchedule, PreferNoSchedule and
- NoExecute.
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
type: string
key:
- description: Key is the taint key that the toleration
- applies to. Empty means match all taint keys. If the
- key is empty, operator must be Exists; this combination
- means to match all values and all keys.
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
type: string
operator:
- description: Operator represents a key's relationship
- to the value. Valid operators are Exists and Equal.
- Defaults to Equal. Exists is equivalent to wildcard
- for value, so that a pod can tolerate all taints of
- a particular category.
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
type: string
tolerationSeconds:
- description: TolerationSeconds represents the period
- of time the toleration (which must be of effect NoExecute,
- otherwise this field is ignored) tolerates the taint.
- By default, it is not set, which means tolerate the
- taint forever (do not evict). Zero and negative values
- will be treated as 0 (evict immediately) by the system.
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
format: int64
type: integer
value:
- description: Value is the taint value the toleration
- matches to. If the operator is Exists, the value should
- be empty, otherwise just a regular string.
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
type: object
type: array
topologySpreadConstraints:
- description: 'Topology spread constraints of a PgBouncer pod.
- Changing this value causes PgBouncer to restart. More info:
- https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/'
+ description: |-
+ Topology spread constraints of a PgBouncer pod. Changing this value causes
+ PgBouncer to restart.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
items:
description: TopologySpreadConstraint specifies how to spread
matching pods among the given topology.
properties:
labelSelector:
- description: LabelSelector is used to find matching
- pods. Pods that match this label selector are counted
- to determine the number of pods in their corresponding
- topology domain.
+ description: |-
+ LabelSelector is used to find matching pods.
+ Pods that match this label selector are counted to determine the number of pods
+ in their corresponding topology domain.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty. If the
- operator is Exists or DoesNotExist, the
- values array must be empty. This array is
- replaced during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is "In",
- and the values array contains only "value". The
- requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select the pods over which
+ spreading will be calculated. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are ANDed with labelSelector
+ to select the group of existing pods over which spreading will be calculated
+ for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
+ MatchLabelKeys cannot be set when LabelSelector isn't set.
+ Keys that don't exist in the incoming pod labels will
+ be ignored. A null or empty list means only match against labelSelector.
+
+ This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
maxSkew:
- description: 'MaxSkew describes the degree to which
- pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,
- it is the maximum permitted difference between the
- number of matching pods in the target topology and
- the global minimum. The global minimum is the minimum
- number of matching pods in an eligible domain or zero
- if the number of eligible domains is less than MinDomains.
- For example, in a 3-zone cluster, MaxSkew is set to
- 1, and pods with the same labelSelector spread as
- 2/2/1: In this case, the global minimum is 1. | zone1
- | zone2 | zone3 | | P P | P P | P | - if MaxSkew
- is 1, incoming pod can only be scheduled to zone3
- to become 2/2/2; scheduling it onto zone1(zone2) would
- make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1).
- - if MaxSkew is 2, incoming pod can be scheduled onto
- any zone. When `whenUnsatisfiable=ScheduleAnyway`,
- it is used to give higher precedence to topologies
- that satisfy it. It''s a required field. Default value
- is 1 and 0 is not allowed.'
+ description: |-
+ MaxSkew describes the degree to which pods may be unevenly distributed.
+ When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
+ between the number of matching pods in the target topology and the global minimum.
+ The global minimum is the minimum number of matching pods in an eligible domain
+ or zero if the number of eligible domains is less than MinDomains.
+ For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
+ labelSelector spread as 2/2/1:
+ In this case, the global minimum is 1.
+ | zone1 | zone2 | zone3 |
+ | P P | P P | P |
+ - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
+ scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
+ violate MaxSkew(1).
+ - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
+ When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
+ to topologies that satisfy it.
+ It's a required field. Default value is 1 and 0 is not allowed.
format: int32
type: integer
minDomains:
- description: "MinDomains indicates a minimum number
- of eligible domains. When the number of eligible domains
- with matching topology keys is less than minDomains,
- Pod Topology Spread treats \"global minimum\" as 0,
- and then the calculation of Skew is performed. And
- when the number of eligible domains with matching
- topology keys equals or greater than minDomains, this
- value has no effect on scheduling. As a result, when
- the number of eligible domains is less than minDomains,
- scheduler won't schedule more than maxSkew Pods to
- those domains. If value is nil, the constraint behaves
- as if MinDomains is equal to 1. Valid values are integers
- greater than 0. When value is not nil, WhenUnsatisfiable
- must be DoNotSchedule. \n For example, in a 3-zone
- cluster, MaxSkew is set to 2, MinDomains is set to
- 5 and pods with the same labelSelector spread as 2/2/2:
- | zone1 | zone2 | zone3 | | P P | P P | P P |
- The number of domains is less than 5(MinDomains),
- so \"global minimum\" is treated as 0. In this situation,
- new pod with the same labelSelector cannot be scheduled,
- because computed skew will be 3(3 - 0) if new Pod
- is scheduled to any of the three zones, it will violate
- MaxSkew. \n This is an alpha field and requires enabling
- MinDomainsInPodTopologySpread feature gate."
+ description: |-
+ MinDomains indicates a minimum number of eligible domains.
+ When the number of eligible domains with matching topology keys is less than minDomains,
+ Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
+ And when the number of eligible domains with matching topology keys equals or greater than minDomains,
+ this value has no effect on scheduling.
+ As a result, when the number of eligible domains is less than minDomains,
+ scheduler won't schedule more than maxSkew Pods to those domains.
+ If value is nil, the constraint behaves as if MinDomains is equal to 1.
+ Valid values are integers greater than 0.
+ When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
+
+ For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
+ labelSelector spread as 2/2/2:
+ | zone1 | zone2 | zone3 |
+ | P P | P P | P P |
+ The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
+ In this situation, new pod with the same labelSelector cannot be scheduled,
+ because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
+ it will violate MaxSkew.
format: int32
type: integer
+ nodeAffinityPolicy:
+ description: |-
+ NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
+ when calculating pod topology spread skew. Options are:
+ - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
+ - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
+
+ If this value is nil, the behavior is equivalent to the Honor policy.
+ This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
+ type: string
+ nodeTaintsPolicy:
+ description: |-
+ NodeTaintsPolicy indicates how we will treat node taints when calculating
+ pod topology spread skew. Options are:
+ - Honor: nodes without taints, along with tainted nodes for which the incoming pod
+ has a toleration, are included.
+ - Ignore: node taints are ignored. All nodes are included.
+
+ If this value is nil, the behavior is equivalent to the Ignore policy.
+ This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
+ type: string
topologyKey:
- description: TopologyKey is the key of node labels.
- Nodes that have a label with this key and identical
- values are considered to be in the same topology.
- We consider each as a "bucket", and try
- to put balanced number of pods into each bucket. We
- define a domain as a particular instance of a topology.
- Also, we define an eligible domain as a domain whose
- nodes match the node selector. e.g. If TopologyKey
- is "kubernetes.io/hostname", each Node is a domain
- of that topology. And, if TopologyKey is "topology.kubernetes.io/zone",
- each zone is a domain of that topology. It's a required
- field.
+ description: |-
+ TopologyKey is the key of node labels. Nodes that have a label with this key
+ and identical values are considered to be in the same topology.
+ We consider each as a "bucket", and try to put balanced number
+ of pods into each bucket.
+ We define a domain as a particular instance of a topology.
+ Also, we define an eligible domain as a domain whose nodes meet the requirements of
+ nodeAffinityPolicy and nodeTaintsPolicy.
+ e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
+ And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
+ It's a required field.
type: string
whenUnsatisfiable:
- description: 'WhenUnsatisfiable indicates how to deal
- with a pod if it doesn''t satisfy the spread constraint.
- - DoNotSchedule (default) tells the scheduler not
- to schedule it. - ScheduleAnyway tells the scheduler
- to schedule the pod in any location, but giving higher
- precedence to topologies that would help reduce the
- skew. A constraint is considered "Unsatisfiable" for
- an incoming pod if and only if every possible node
- assignment for that pod would violate "MaxSkew" on
- some topology. For example, in a 3-zone cluster, MaxSkew
- is set to 1, and pods with the same labelSelector
- spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P
- | P | P | If WhenUnsatisfiable is set to DoNotSchedule,
- incoming pod can only be scheduled to zone2(zone3)
- to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3)
- satisfies MaxSkew(1). In other words, the cluster
- can still be imbalanced, but scheduler won''t make
- it *more* imbalanced. It''s a required field.'
+ description: |-
+ WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
+ the spread constraint.
+ - DoNotSchedule (default) tells the scheduler not to schedule it.
+ - ScheduleAnyway tells the scheduler to schedule the pod in any location,
+ but giving higher precedence to topologies that would help reduce the
+ skew.
+ A constraint is considered "Unsatisfiable" for an incoming pod
+ if and only if every possible node assignment for that pod would violate
+ "MaxSkew" on some topology.
+ For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
+ labelSelector spread as 3/1/1:
+ | zone1 | zone2 | zone3 |
+ | P P P | P | P |
+ If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
+ to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
+ MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
+ won't make it *more* imbalanced.
+ It's a required field.
type: string
required:
- maxSkew
@@ -13319,10 +14863,67 @@ spec:
required:
- pgBouncer
type: object
+ replicaService:
+ description: Specification of the service that exposes PostgreSQL
+ replica instances
+ properties:
+ externalTrafficPolicy:
+ description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies'
+ enum:
+ - Cluster
+ - Local
+ type: string
+ internalTrafficPolicy:
+ description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies'
+ enum:
+ - Cluster
+ - Local
+ type: string
+ metadata:
+ description: Metadata contains metadata for custom resources
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ nodePort:
+ description: |-
+ The port on which this service is exposed when type is NodePort or
+ LoadBalancer. Value must be in-range and not in use or the operation will
+ fail. If unspecified, a port will be allocated if this Service requires one.
+ - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
+ format: int32
+ type: integer
+ type:
+ default: ClusterIP
+ description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types'
+ enum:
+ - ClusterIP
+ - NodePort
+ - LoadBalancer
+ type: string
+ type: object
service:
description: Specification of the service that exposes the PostgreSQL
primary instance.
properties:
+ externalTrafficPolicy:
+ description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies'
+ enum:
+ - Cluster
+ - Local
+ type: string
+ internalTrafficPolicy:
+ description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies'
+ enum:
+ - Cluster
+ - Local
+ type: string
metadata:
description: Metadata contains metadata for custom resources
properties:
@@ -13336,10 +14937,11 @@ spec:
type: object
type: object
nodePort:
- description: The port on which this service is exposed when type
- is NodePort or LoadBalancer. Value must be in-range and not
- in use or the operation will fail. If unspecified, a port will
- be allocated if this Service requires one. - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
+ description: |-
+ The port on which this service is exposed when type is NodePort or
+ LoadBalancer. Value must be in-range and not in use or the operation will
+ fail. If unspecified, a port will be allocated if this Service requires one.
+ - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
format: int32
type: integer
type:
@@ -13352,10 +14954,11 @@ spec:
type: string
type: object
shutdown:
- description: Whether or not the PostgreSQL cluster should be stopped.
- When this is true, workloads are scaled to zero and CronJobs are
- suspended. Other resources, such as Services and Volumes, remain
- in place.
+ description: |-
+ Whether or not the PostgreSQL cluster should be stopped.
+ When this is true, workloads are scaled to zero and CronJobs
+ are suspended.
+ Other resources, such as Services and Volumes, remain in place.
type: boolean
standby:
description: Run this cluster as a read-only copy of an existing cluster
@@ -13363,9 +14966,10 @@ spec:
properties:
enabled:
default: true
- description: Whether or not the PostgreSQL cluster should be read-only.
- When this is true, WAL files are applied from a pgBackRest repository
- or another PostgreSQL server.
+ description: |-
+ Whether or not the PostgreSQL cluster should be read-only. When this is
+ true, WAL files are applied from a pgBackRest repository or another
+ PostgreSQL server.
type: boolean
host:
description: Network address of the PostgreSQL server to follow
@@ -13384,9 +14988,10 @@ spec:
type: string
type: object
supplementalGroups:
- description: 'A list of group IDs applied to the process of a container.
- These can be useful when accessing shared file systems with constrained
- permissions. More info: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context'
+ description: |-
+ A list of group IDs applied to the process of a container. These can be
+ useful when accessing shared file systems with constrained permissions.
+ More info: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context
items:
format: int64
maximum: 2147483647
@@ -13401,31 +15006,30 @@ spec:
description: Defines a pgAdmin user interface.
properties:
affinity:
- description: 'Scheduling constraints of a pgAdmin pod. Changing
- this value causes pgAdmin to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node'
+ description: |-
+ Scheduling constraints of a pgAdmin pod. Changing this value causes
+ pgAdmin to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
properties:
nodeAffinity:
description: Describes node affinity scheduling rules
for the pod.
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the
- greatest sum of weights, i.e. for each node that
- meets all of the scheduling requirements (resource
- request, requiredDuringScheduling affinity expressions,
- etc.), compute a sum by iterating through the elements
- of this field and adding "weight" to the sum if
- the node matches the corresponding matchExpressions;
- the node(s) with the highest sum are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node matches the corresponding matchExpressions; the
+ node(s) with the highest sum are the most preferred.
items:
- description: An empty preferred scheduling term
- matches all objects with implicit weight 0 (i.e.
- it's a no-op). A null preferred scheduling term
- matches no objects (i.e. is also a no-op).
+ description: |-
+ An empty preferred scheduling term matches all objects with implicit weight 0
+ (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
properties:
preference:
description: A node selector term, associated
@@ -13435,79 +15039,72 @@ spec:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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:
description: Weight associated with matching
the corresponding nodeSelectorTerm, in the
@@ -13519,105 +15116,100 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the
- affinity requirements specified by this field cease
- to be met at some point during pod execution (e.g.
- due to an update), the system may or may not try
- to eventually evict the pod from its node.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to an update), the system
+ may or may not try to eventually evict the pod from its node.
properties:
nodeSelectorTerms:
description: Required. A list of node selector
terms. The terms are ORed.
items:
- description: A null or empty node selector term
- matches no objects. The requirements of them
- are ANDed. The TopologySelectorTerm type implements
- a subset of the NodeSelectorTerm.
+ description: |-
+ A null or empty node selector term matches no objects. The requirements of
+ them are ANDed.
+ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
properties:
matchExpressions:
description: A list of node selector requirements
by node's labels.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
+ x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements
by node's fields.
items:
- description: A node selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A node selector requirement is a selector that contains values, a key, and an operator
+ that relates the key and values.
properties:
key:
description: The label key that the
selector applies to.
type: string
operator:
- description: Represents a key's relationship
- to a set of values. Valid operators
- are In, NotIn, Exists, DoesNotExist.
- Gt, and Lt.
+ description: |-
+ Represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
- description: An array of string values.
- If the operator is In or NotIn,
- the values array must be non-empty.
- If the operator is Exists or DoesNotExist,
- the values array must be empty.
- If the operator is Gt or Lt, the
- values array must have a single
- element, which will be interpreted
- as an integer. This array is replaced
- during a strategic merge patch.
+ description: |-
+ An array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. If the operator is Gt or Lt, the values
+ array must have a single element, which will be interpreted as an integer.
+ This array is replaced during a strategic merge patch.
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
+ x-kubernetes-map-type: atomic
type: object
podAffinity:
description: Describes pod affinity scheduling rules (e.g.
@@ -13625,19 +15217,16 @@ spec:
other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the
- greatest sum of weights, i.e. for each node that
- meets all of the scheduling requirements (resource
- request, requiredDuringScheduling affinity expressions,
- etc.), compute a sum by iterating through the elements
- of this field and adding "weight" to the sum if
- the node has pods which matches the corresponding
- podAffinityTerm; the node(s) with the highest sum
- are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
fields are added per-node to find the most preferred
@@ -13648,18 +15237,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -13667,60 +15256,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -13728,70 +15339,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in the
- range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -13799,161 +15401,179 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the
- affinity requirements specified by this field cease
- to be met at some point during pod execution (e.g.
- due to a pod label update), the system may or may
- not try to eventually evict the pod from its node.
- When there are multiple elements, the lists of nodes
- corresponding to each podAffinityTerm are intersected,
- i.e. all terms must be satisfied.
+ description: |-
+ If the affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the given
- namespace(s)) that this pod should be co-located
- (affinity) or not co-located (anti-affinity) with,
- where co-located is defined as running on a node
- whose value of the label with key
- matches that of any node on which a pod of the
- set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by
- this field and the ones listed in the namespaces
- field. null selector and null or empty namespaces
- list means "this pod's namespace". An empty
- selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to.
- The term is applied to the union of the namespaces
- listed in this field and the ones selected
- by namespaceSelector. null or empty namespaces
- list and null namespaceSelector means "this
- pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the
- pods matching the labelSelector in the specified
- namespaces, where co-located is defined as
- running on a node whose value of the label
- with key topologyKey matches that of any node
- on which any of the selected pods is running.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
podAntiAffinity:
description: Describes pod anti-affinity scheduling rules
@@ -13961,19 +15581,16 @@ spec:
etc. as some other pod(s)).
properties:
preferredDuringSchedulingIgnoredDuringExecution:
- description: The scheduler will prefer to schedule
- pods to nodes that satisfy the anti-affinity expressions
- specified by this field, but it may choose a node
- that violates one or more of the expressions. The
- node that is most preferred is the one with the
- greatest sum of weights, i.e. for each node that
- meets all of the scheduling requirements (resource
- request, requiredDuringScheduling anti-affinity
- expressions, etc.), compute a sum by iterating through
- the elements of this field and adding "weight" to
- the sum if the node has pods which matches the corresponding
- podAffinityTerm; the node(s) with the highest sum
- are the most preferred.
+ description: |-
+ The scheduler will prefer to schedule pods to nodes that satisfy
+ the anti-affinity expressions specified by this field, but it may choose
+ a node that violates one or more of the expressions. The node that is
+ most preferred is the one with the greatest sum of weights, i.e.
+ for each node that meets all of the scheduling requirements (resource
+ request, requiredDuringScheduling anti-affinity expressions, etc.),
+ compute a sum by iterating through the elements of this field and adding
+ "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
+ node(s) with the highest sum are the most preferred.
items:
description: The weights of all of the matched WeightedPodAffinityTerm
fields are added per-node to find the most preferred
@@ -13984,18 +15601,18 @@ spec:
associated with the corresponding weight.
properties:
labelSelector:
- description: A label query over a set of
- resources, in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -14003,60 +15620,82 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set
- of namespaces that the term applies to.
- The term is applied to the union of the
- namespaces selected by this field and
- the ones listed in the namespaces field.
- null selector and null or empty namespaces
- list means "this pod's namespace". An
- empty selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The
requirements are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label
@@ -14064,70 +15703,61 @@ spec:
to.
type: string
operator:
- description: operator represents
- a key's relationship to a set
- of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array
- of string values. If the operator
- is In or NotIn, the values array
- must be non-empty. If the operator
- is Exists or DoesNotExist, the
- values array must be empty.
- This array is replaced during
- a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of
- {key,value} pairs. A single {key,value}
- in the matchLabels map is equivalent
- to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are
- ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static
- list of namespace names that the term
- applies to. The term is applied to the
- union of the namespaces listed in this
- field and the ones selected by namespaceSelector.
- null or empty namespaces list and null
- namespaceSelector means "this pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located
- (affinity) or not co-located (anti-affinity)
- with the pods matching the labelSelector
- in the specified namespaces, where co-located
- is defined as running on a node whose
- value of the label with key topologyKey
- matches that of any node on which any
- of the selected pods is running. Empty
- topologyKey is not allowed.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
+ Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
weight:
- description: weight associated with matching
- the corresponding podAffinityTerm, in the
- range 1-100.
+ description: |-
+ weight associated with matching the corresponding podAffinityTerm,
+ in the range 1-100.
format: int32
type: integer
required:
@@ -14135,192 +15765,301 @@ spec:
- weight
type: object
type: array
+ x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
- description: If the anti-affinity requirements specified
- by this field are not met at scheduling time, the
- pod will not be scheduled onto the node. If the
- anti-affinity requirements specified by this field
- cease to be met at some point during pod execution
- (e.g. due to a pod label update), the system may
- or may not try to eventually evict the pod from
- its node. When there are multiple elements, the
- lists of nodes corresponding to each podAffinityTerm
- are intersected, i.e. all terms must be satisfied.
+ description: |-
+ If the anti-affinity requirements specified by this field are not met at
+ scheduling time, the pod will not be scheduled onto the node.
+ If the anti-affinity requirements specified by this field cease to be met
+ at some point during pod execution (e.g. due to a pod label update), the
+ system may or may not try to eventually evict the pod from its node.
+ When there are multiple elements, the lists of nodes corresponding to each
+ podAffinityTerm are intersected, i.e. all terms must be satisfied.
items:
- description: Defines a set of pods (namely those
- matching the labelSelector relative to the given
- namespace(s)) that this pod should be co-located
- (affinity) or not co-located (anti-affinity) with,
- where co-located is defined as running on a node
- whose value of the label with key
- matches that of any node on which a pod of the
- set of pods is running
+ description: |-
+ Defines a set of pods (namely those matching the labelSelector
+ relative to the given namespace(s)) that this pod should be
+ co-located (affinity) or not co-located (anti-affinity) with,
+ where co-located is defined as running on a node whose value of
+ the label with key matches that of any node on which
+ a pod of the set of pods is running
properties:
labelSelector:
- description: A label query over a set of resources,
- in this case pods.
+ description: |-
+ A label query over a set of resources, in this case pods.
+ If it's null, this PodAffinityTerm matches with no Pods.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both matchLabelKeys and labelSelector.
+ Also, matchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
+ mismatchLabelKeys:
+ description: |-
+ MismatchLabelKeys is a set of pod label keys to select which pods will
+ be taken into consideration. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
+ to select the group of existing pods which pods will be taken into consideration
+ for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
+ pod labels will be ignored. The default value is empty.
+ The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
+ Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
+ This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
namespaceSelector:
- description: A label query over the set of namespaces
- that the term applies to. The term is applied
- to the union of the namespaces selected by
- this field and the ones listed in the namespaces
- field. null selector and null or empty namespaces
- list means "this pod's namespace". An empty
- selector ({}) matches all namespaces.
+ description: |-
+ A label query over the set of namespaces that the term applies to.
+ The term is applied to the union of the namespaces selected by this field
+ and the ones listed in the namespaces field.
+ null selector and null or empty namespaces list means "this pod's namespace".
+ An empty selector ({}) matches all namespaces.
properties:
matchExpressions:
description: matchExpressions is a list
of label selector requirements. The requirements
are ANDed.
items:
- description: A label selector requirement
- is a selector that contains values,
- a key, and an operator that relates
- the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key
that the selector applies to.
type: string
operator:
- description: operator represents a
- key's relationship to a set of values.
- Valid operators are In, NotIn, Exists
- and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of
- string values. If the operator is
- In or NotIn, the values array must
- be non-empty. If the operator is
- Exists or DoesNotExist, the values
- array must be empty. This array
- is replaced during a strategic merge
- patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator
- is "In", and the values array contains
- only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
namespaces:
- description: namespaces specifies a static list
- of namespace names that the term applies to.
- The term is applied to the union of the namespaces
- listed in this field and the ones selected
- by namespaceSelector. null or empty namespaces
- list and null namespaceSelector means "this
- pod's namespace".
+ description: |-
+ namespaces specifies a static list of namespace names that the term applies to.
+ The term is applied to the union of the namespaces listed in this field
+ and the ones selected by namespaceSelector.
+ null or empty namespaces list and null namespaceSelector means "this pod's namespace".
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
topologyKey:
- description: This pod should be co-located (affinity)
- or not co-located (anti-affinity) with the
- pods matching the labelSelector in the specified
- namespaces, where co-located is defined as
- running on a node whose value of the label
- with key topologyKey matches that of any node
- on which any of the selected pods is running.
+ description: |-
+ This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
+ the labelSelector in the specified namespaces, where co-located is defined as running on a node
+ whose value of the label with key topologyKey matches that of any node on which any of the
+ selected pods is running.
Empty topologyKey is not allowed.
type: string
required:
- topologyKey
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
type: object
config:
- description: Configuration settings for the pgAdmin process.
- Changes to any of these values will be loaded without validation.
- Be careful, as you may put pgAdmin into an unusable state.
+ description: |-
+ Configuration settings for the pgAdmin process. Changes to any of these
+ values will be loaded without validation. Be careful, as
+ you may put pgAdmin into an unusable state.
properties:
files:
- description: Files allows the user to mount projected
- volumes into the pgAdmin container so that files can
- be referenced by pgAdmin as needed.
+ description: |-
+ Files allows the user to mount projected volumes into the pgAdmin
+ container so that files can be referenced by pgAdmin as needed.
items:
description: Projection that may be projected along
with other supported volume types
properties:
+ clusterTrustBundle:
+ description: |-
+ ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
+ of ClusterTrustBundle objects in an auto-updating file.
+
+ Alpha, gated by the ClusterTrustBundleProjection feature gate.
+
+ ClusterTrustBundle objects can either be selected by name, or by the
+ combination of signer name and a label selector.
+
+ Kubelet performs aggressive normalization of the PEM contents written
+ into the pod filesystem. Esoteric PEM features such as inter-block
+ comments and block headers are stripped. Certificates are deduplicated.
+ The ordering of certificates within the file is arbitrary, and Kubelet
+ may change the order over time.
+ properties:
+ labelSelector:
+ description: |-
+ Select all ClusterTrustBundles that match this label selector. Only has
+ effect if signerName is set. Mutually-exclusive with name. If unset,
+ interpreted as "match nothing". If set but empty, interpreted as "match
+ everything".
+ properties:
+ matchExpressions:
+ description: matchExpressions is a list
+ of label selector requirements. The requirements
+ are ANDed.
+ items:
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
+ properties:
+ key:
+ description: key is the label key
+ that the selector applies to.
+ type: string
+ operator:
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
+ type: string
+ values:
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
+ 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
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
+ type: object
+ type: object
+ x-kubernetes-map-type: atomic
+ name:
+ description: |-
+ Select a single ClusterTrustBundle by object name. Mutually-exclusive
+ with signerName and labelSelector.
+ type: string
+ optional:
+ description: |-
+ If true, don't block pod startup if the referenced ClusterTrustBundle(s)
+ aren't available. If using name, then the named ClusterTrustBundle is
+ allowed not to exist. If using signerName, then the combination of
+ signerName and labelSelector is allowed to match zero
+ ClusterTrustBundles.
+ type: boolean
+ path:
+ description: Relative path from the volume root
+ to write the bundle.
+ type: string
+ signerName:
+ description: |-
+ Select all ClusterTrustBundles that match this signer name.
+ Mutually-exclusive with name. The contents of all selected
+ ClusterTrustBundles will be unified and deduplicated.
+ type: string
+ required:
+ - path
+ type: object
configMap:
description: configMap information about the configMap
data to project
properties:
items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced ConfigMap
- will be projected into the volume as a file
- whose name is the key and content is the value.
- If specified, the listed keys will be projected
- into the specified paths, and unlisted keys
- will not be present. If a key is specified
- which is not present in the ConfigMap, the
- volume setup will error unless it is marked
- optional. Paths must be relative and may not
- contain the '..' path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ ConfigMap will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the ConfigMap,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within
a volume.
@@ -14329,41 +16068,43 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits
- used to set permissions on this file.
- Must be an octal value between 0000
- and 0777 or a decimal value between
- 0 and 511. YAML accepts both octal and
- decimal values, JSON requires decimal
- values for mode bits. If not specified,
- the volume defaultMode will be used.
- This might be in conflict with other
- options that affect the file mode, like
- fsGroup, and the result can be other
- mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path
- of the file to map the key to. May not
- be an absolute path. May not contain
- the path element '..'. May not start
- with the string '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info:
- https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional specify whether the ConfigMap
or its keys must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
downwardAPI:
description: downwardAPI information about the downwardAPI
data to project
@@ -14379,7 +16120,7 @@ spec:
fieldRef:
description: 'Required: Selects a field
of the pod: only annotations, labels,
- name and namespace are supported.'
+ name, namespace and uid are supported.'
properties:
apiVersion:
description: Version of the schema
@@ -14393,19 +16134,15 @@ spec:
required:
- fieldPath
type: object
+ x-kubernetes-map-type: atomic
mode:
- description: 'Optional: mode bits used
- to set permissions on this file, must
- be an octal value between 0000 and 0777
- or a decimal value between 0 and 511.
- YAML accepts both octal and decimal
- values, JSON requires decimal values
- for mode bits. If not specified, the
- volume defaultMode will be used. This
- might be in conflict with other options
- that affect the file mode, like fsGroup,
- and the result can be other mode bits
- set.'
+ description: |-
+ Optional: mode bits used to set permissions on this file, must be an octal value
+ between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
@@ -14417,11 +16154,9 @@ spec:
must not start with ''..'''
type: string
resourceFieldRef:
- description: 'Selects a resource of the
- container: only resources limits and
- requests (limits.cpu, limits.memory,
- requests.cpu and requests.memory) are
- currently supported.'
+ description: |-
+ Selects a resource of the container: only resources limits and requests
+ (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
properties:
containerName:
description: 'Container name: required
@@ -14443,27 +16178,26 @@ spec:
required:
- resource
type: object
+ x-kubernetes-map-type: atomic
required:
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
type: object
secret:
description: secret information about the secret
data to project
properties:
items:
- description: items if unspecified, each key-value
- pair in the Data field of the referenced Secret
- will be projected into the volume as a file
- whose name is the key and content is the value.
- If specified, the listed keys will be projected
- into the specified paths, and unlisted keys
- will not be present. If a key is specified
- which is not present in the Secret, the volume
- setup will error unless it is marked optional.
- Paths must be relative and may not contain
- the '..' path or start with '..'.
+ description: |-
+ items if unspecified, each key-value pair in the Data field of the referenced
+ Secret will be projected into the volume as a file whose name is the
+ key and content is the value. If specified, the listed keys will be
+ projected into the specified paths, and unlisted keys will not be
+ present. If a key is specified which is not present in the Secret,
+ the volume setup will error unless it is marked optional. Paths must be
+ relative and may not contain the '..' path or start with '..'.
items:
description: Maps a string key to a path within
a volume.
@@ -14472,69 +16206,68 @@ spec:
description: key is the key to project.
type: string
mode:
- description: 'mode is Optional: mode bits
- used to set permissions on this file.
- Must be an octal value between 0000
- and 0777 or a decimal value between
- 0 and 511. YAML accepts both octal and
- decimal values, JSON requires decimal
- values for mode bits. If not specified,
- the volume defaultMode will be used.
- This might be in conflict with other
- options that affect the file mode, like
- fsGroup, and the result can be other
- mode bits set.'
+ description: |-
+ mode is Optional: mode bits used to set permissions on this file.
+ Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
+ YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
+ If not specified, the volume defaultMode will be used.
+ This might be in conflict with other options that affect the file
+ mode, like fsGroup, and the result can be other mode bits set.
format: int32
type: integer
path:
- description: path is the relative path
- of the file to map the key to. May not
- be an absolute path. May not contain
- the path element '..'. May not start
- with the string '..'.
+ description: |-
+ path is the relative path of the file to map the key to.
+ May not be an absolute path.
+ May not contain the path element '..'.
+ May not start with the string '..'.
type: string
required:
- key
- path
type: object
type: array
+ x-kubernetes-list-type: atomic
name:
- description: 'Name of the referent. More info:
- https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: optional field specify whether
the Secret or its key must be defined
type: boolean
type: object
+ x-kubernetes-map-type: atomic
serviceAccountToken:
description: serviceAccountToken is information
about the serviceAccountToken data to project
properties:
audience:
- description: audience is the intended audience
- of the token. A recipient of a token must
- identify itself with an identifier specified
- in the audience of the token, and otherwise
- should reject the token. The audience defaults
- to the identifier of the apiserver.
+ description: |-
+ audience is the intended audience of the token. A recipient of a token
+ must identify itself with an identifier specified in the audience of the
+ token, and otherwise should reject the token. The audience defaults to the
+ identifier of the apiserver.
type: string
expirationSeconds:
- description: expirationSeconds is the requested
- duration of validity of the service account
- token. As the token approaches expiration,
- the kubelet volume plugin will proactively
- rotate the service account token. The kubelet
- will start trying to rotate the token if the
- token is older than 80 percent of its time
- to live or if the token is older than 24 hours.Defaults
- to 1 hour and must be at least 10 minutes.
+ description: |-
+ expirationSeconds is the requested duration of validity of the service
+ account token. As the token approaches expiration, the kubelet volume
+ plugin will proactively rotate the service account token. The kubelet will
+ start trying to rotate the token if the token is older than 80 percent of
+ its time to live or if the token is older than 24 hours.Defaults to 1 hour
+ and must be at least 10 minutes.
format: int64
type: integer
path:
- description: path is the path relative to the
- mount point of the file to project the token
- into.
+ description: |-
+ path is the path relative to the mount point of the file to project the
+ token into.
type: string
required:
- path
@@ -14542,15 +16275,22 @@ spec:
type: object
type: array
ldapBindPassword:
- description: 'A Secret containing the value for the LDAP_BIND_PASSWORD
- setting. More info: https://www.pgadmin.org/docs/pgadmin4/latest/ldap.html'
+ description: |-
+ A Secret containing the value for the LDAP_BIND_PASSWORD setting.
+ More info: https://www.pgadmin.org/docs/pgadmin4/latest/ldap.html
properties:
key:
description: The key of the secret to select from. Must
be a valid secret key.
type: string
name:
- description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret or its key
@@ -14559,37 +16299,43 @@ spec:
required:
- key
type: object
+ x-kubernetes-map-type: atomic
settings:
- description: 'Settings for the pgAdmin server process.
- Keys should be uppercase and values must be constants.
- More info: https://www.pgadmin.org/docs/pgadmin4/latest/config_py.html'
+ description: |-
+ Settings for the pgAdmin server process. Keys should be uppercase and
+ values must be constants.
+ More info: https://www.pgadmin.org/docs/pgadmin4/latest/config_py.html
type: object
x-kubernetes-preserve-unknown-fields: true
type: object
dataVolumeClaimSpec:
- description: 'Defines a PersistentVolumeClaim for pgAdmin
- data. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes'
+ description: |-
+ Defines a PersistentVolumeClaim for pgAdmin data.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
properties:
accessModes:
- description: 'accessModes contains the desired access
- modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
+ description: |-
+ accessModes contains the desired access modes the volume should have.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
items:
type: string
type: array
+ x-kubernetes-list-type: atomic
dataSource:
- description: 'dataSource field can be used to specify
- either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
- * An existing PVC (PersistentVolumeClaim) If the provisioner
- or an external controller can support the specified
- data source, it will create a new volume based on the
- contents of the specified data source. If the AnyVolumeDataSource
- feature gate is enabled, this field will always have
- the same contents as the DataSourceRef field.'
+ description: |-
+ dataSource field can be used to specify either:
+ * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
+ * An existing PVC (PersistentVolumeClaim)
+ If the provisioner or an external controller can support the specified data source,
+ it will create a new volume based on the contents of the specified data source.
+ When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
+ and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
+ If the namespace is specified, then dataSourceRef will not be copied to dataSource.
properties:
apiGroup:
- description: APIGroup is the group for the resource
- being referenced. If APIGroup is not specified,
- the specified Kind must be in the core API group.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
type: string
kind:
@@ -14602,33 +16348,37 @@ spec:
- kind
- name
type: object
+ x-kubernetes-map-type: atomic
dataSourceRef:
- description: 'dataSourceRef specifies the object from
- which to populate the volume with data, if a non-empty
- volume is desired. This may be any local object from
- a non-empty API group (non core object) or a PersistentVolumeClaim
- object. When this field is specified, volume binding
- will only succeed if the type of the specified object
- matches some installed volume populator or dynamic provisioner.
- This field will replace the functionality of the DataSource
- field and as such if both fields are non-empty, they
- must have the same value. For backwards compatibility,
- both fields (DataSource and DataSourceRef) will be set
- to the same value automatically if one of them is empty
- and the other is non-empty. There are two important
- differences between DataSource and DataSourceRef: *
- While DataSource only allows two specific types of objects,
- DataSourceRef allows any non-core object, as well as
- PersistentVolumeClaim objects. * While DataSource ignores
- disallowed values (dropping them), DataSourceRef preserves
- all values, and generates an error if a disallowed value
- is specified. (Beta) Using this field requires the AnyVolumeDataSource
- feature gate to be enabled.'
+ description: |-
+ dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
+ volume is desired. This may be any object from a non-empty API group (non
+ core object) or a PersistentVolumeClaim object.
+ When this field is specified, volume binding will only succeed if the type of
+ the specified object matches some installed volume populator or dynamic
+ provisioner.
+ This field will replace the functionality of the dataSource field and as such
+ if both fields are non-empty, they must have the same value. For backwards
+ compatibility, when namespace isn't specified in dataSourceRef,
+ both fields (dataSource and dataSourceRef) will be set to the same
+ value automatically if one of them is empty and the other is non-empty.
+ When namespace is specified in dataSourceRef,
+ dataSource isn't set to the same value and must be empty.
+ There are three important differences between dataSource and dataSourceRef:
+ * While dataSource only allows two specific types of objects, dataSourceRef
+ allows any non-core object, as well as PersistentVolumeClaim objects.
+ * While dataSource ignores disallowed values (dropping them), dataSourceRef
+ preserves all values, and generates an error if a disallowed value is
+ specified.
+ * While dataSource only allows local objects, dataSourceRef allows objects
+ in any namespaces.
+ (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
+ (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
properties:
apiGroup:
- description: APIGroup is the group for the resource
- being referenced. If APIGroup is not specified,
- the specified Kind must be in the core API group.
+ description: |-
+ APIGroup is the group for the resource being referenced.
+ If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
type: string
kind:
@@ -14637,17 +16387,23 @@ spec:
name:
description: Name is the name of resource being referenced
type: string
+ namespace:
+ description: |-
+ Namespace is the namespace of resource being referenced
+ Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
+ (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
+ type: string
required:
- kind
- name
type: object
resources:
- description: 'resources represents the minimum resources
- the volume should have. If RecoverVolumeExpansionFailure
- feature is enabled users are allowed to specify resource
- requirements that are lower than previous value but
- must still be higher than capacity recorded in the status
- field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
+ description: |-
+ resources represents the minimum resources the volume should have.
+ If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
+ that are lower than previous value but must still be higher than capacity recorded in the
+ status field of the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
properties:
limits:
additionalProperties:
@@ -14656,8 +16412,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount
- of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -14666,11 +16423,11 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount
- of compute resources required. If Requests is omitted
- for a container, it defaults to Limits if that is
- explicitly specified, otherwise to an implementation-defined
- value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
selector:
@@ -14681,8 +16438,8 @@ spec:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a selector
- that contains values, a key, and an operator that
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
@@ -14690,43 +16447,60 @@ spec:
applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are In,
- NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string values.
- If the operator is In or NotIn, the values
- array must be non-empty. If the operator is
- Exists or DoesNotExist, the values array must
- be empty. This array is replaced during a
- strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field
- is "key", the operator is "In", and the values array
- contains only "value". The requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
storageClassName:
- description: 'storageClassName is the name of the StorageClass
- required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
+ description: |-
+ storageClassName is the name of the StorageClass required by the claim.
+ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
+ type: string
+ volumeAttributesClassName:
+ description: |-
+ volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
+ If specified, the CSI driver will create or update the volume with the attributes defined
+ in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
+ it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
+ will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
+ If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
+ will be set by the persistentvolume controller if it exists.
+ If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
+ set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
+ exists.
+ More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
+ (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
type: string
volumeMode:
- description: volumeMode defines what type of volume is
- required by the claim. Value of Filesystem is implied
- when not included in claim spec.
+ description: |-
+ volumeMode defines what type of volume is required by the claim.
+ Value of Filesystem is implied when not included in claim spec.
type: string
volumeName:
description: volumeName is the binding reference to the
@@ -14734,10 +16508,11 @@ spec:
type: string
type: object
image:
- description: 'Name of a container image that can run pgAdmin
- 4. Changing this value causes pgAdmin to restart. The image
- may also be set using the RELATED_IMAGE_PGADMIN environment
- variable. More info: https://kubernetes.io/docs/concepts/containers/images'
+ description: |-
+ Name of a container image that can run pgAdmin 4. Changing this value causes
+ pgAdmin to restart. The image may also be set using the RELATED_IMAGE_PGADMIN
+ environment variable.
+ More info: https://kubernetes.io/docs/concepts/containers/images
type: string
metadata:
description: Metadata contains metadata for custom resources
@@ -14752,8 +16527,10 @@ spec:
type: object
type: object
priorityClassName:
- description: 'Priority class name for the pgAdmin pod. Changing
- this value causes pgAdmin to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/'
+ description: |-
+ Priority class name for the pgAdmin pod. Changing this value causes pgAdmin
+ to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
type: string
replicas:
default: 1
@@ -14763,9 +16540,36 @@ spec:
minimum: 0
type: integer
resources:
- description: 'Compute resources of a pgAdmin container. Changing
- this value causes pgAdmin to restart. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers'
+ description: |-
+ Compute resources of a pgAdmin container. Changing this value causes
+ pgAdmin to restart.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
properties:
+ claims:
+ description: |-
+ Claims lists the names of resources, defined in spec.resourceClaims,
+ that are used by this container.
+
+ This is an alpha field and requires enabling the
+ DynamicResourceAllocation feature gate.
+
+ This field is immutable. It can only be set for containers.
+ items:
+ description: ResourceClaim references one entry in PodSpec.ResourceClaims.
+ properties:
+ name:
+ description: |-
+ Name must match the name of one entry in pod.spec.resourceClaims of
+ the Pod where this field is used. It makes that resource available
+ inside a container.
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
limits:
additionalProperties:
anyOf:
@@ -14773,8 +16577,9 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Limits describes the maximum amount of compute
- resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Limits describes the maximum amount of compute resources allowed.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
@@ -14783,16 +16588,28 @@ spec:
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
- description: 'Requests describes the minimum amount of
- compute resources required. If Requests is omitted for
- a container, it defaults to Limits if that is explicitly
- specified, otherwise to an implementation-defined value.
- More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
+ description: |-
+ Requests describes the minimum amount of compute resources required.
+ If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
+ otherwise to an implementation-defined value. Requests cannot exceed Limits.
+ More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
type: object
service:
description: Specification of the service that exposes pgAdmin.
properties:
+ externalTrafficPolicy:
+ description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies'
+ enum:
+ - Cluster
+ - Local
+ type: string
+ internalTrafficPolicy:
+ description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies'
+ enum:
+ - Cluster
+ - Local
+ type: string
metadata:
description: Metadata contains metadata for custom resources
properties:
@@ -14806,11 +16623,11 @@ spec:
type: object
type: object
nodePort:
- description: The port on which this service is exposed
- when type is NodePort or LoadBalancer. Value must be
- in-range and not in use or the operation will fail.
- If unspecified, a port will be allocated if this Service
- requires one. - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
+ description: |-
+ The port on which this service is exposed when type is NodePort or
+ LoadBalancer. Value must be in-range and not in use or the operation will
+ fail. If unspecified, a port will be allocated if this Service requires one.
+ - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
format: int32
type: integer
type:
@@ -14823,187 +16640,218 @@ spec:
type: string
type: object
tolerations:
- description: 'Tolerations of a pgAdmin pod. Changing this
- value causes pgAdmin to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration'
+ description: |-
+ Tolerations of a pgAdmin pod. Changing this value causes pgAdmin to restart.
+ More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
items:
- description: The pod this Toleration is attached to tolerates
- any taint that matches the triple using
- the matching operator .
+ description: |-
+ The pod this Toleration is attached to tolerates any taint that matches
+ the triple using the matching operator .
properties:
effect:
- description: Effect indicates the taint effect to match.
- Empty means match all taint effects. When specified,
- allowed values are NoSchedule, PreferNoSchedule and
- NoExecute.
+ description: |-
+ Effect indicates the taint effect to match. Empty means match all taint effects.
+ When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
type: string
key:
- description: Key is the taint key that the toleration
- applies to. Empty means match all taint keys. If the
- key is empty, operator must be Exists; this combination
- means to match all values and all keys.
+ description: |-
+ Key is the taint key that the toleration applies to. Empty means match all taint keys.
+ If the key is empty, operator must be Exists; this combination means to match all values and all keys.
type: string
operator:
- description: Operator represents a key's relationship
- to the value. Valid operators are Exists and Equal.
- Defaults to Equal. Exists is equivalent to wildcard
- for value, so that a pod can tolerate all taints of
- a particular category.
+ description: |-
+ Operator represents a key's relationship to the value.
+ Valid operators are Exists and Equal. Defaults to Equal.
+ Exists is equivalent to wildcard for value, so that a pod can
+ tolerate all taints of a particular category.
type: string
tolerationSeconds:
- description: TolerationSeconds represents the period
- of time the toleration (which must be of effect NoExecute,
- otherwise this field is ignored) tolerates the taint.
- By default, it is not set, which means tolerate the
- taint forever (do not evict). Zero and negative values
- will be treated as 0 (evict immediately) by the system.
+ description: |-
+ TolerationSeconds represents the period of time the toleration (which must be
+ of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
+ it is not set, which means tolerate the taint forever (do not evict). Zero and
+ negative values will be treated as 0 (evict immediately) by the system.
format: int64
type: integer
value:
- description: Value is the taint value the toleration
- matches to. If the operator is Exists, the value should
- be empty, otherwise just a regular string.
+ description: |-
+ Value is the taint value the toleration matches to.
+ If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
type: object
type: array
topologySpreadConstraints:
- description: 'Topology spread constraints of a pgAdmin pod.
- Changing this value causes pgAdmin to restart. More info:
- https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/'
+ description: |-
+ Topology spread constraints of a pgAdmin pod. Changing this value causes
+ pgAdmin to restart.
+ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
items:
description: TopologySpreadConstraint specifies how to spread
matching pods among the given topology.
properties:
labelSelector:
- description: LabelSelector is used to find matching
- pods. Pods that match this label selector are counted
- to determine the number of pods in their corresponding
- topology domain.
+ description: |-
+ LabelSelector is used to find matching pods.
+ Pods that match this label selector are counted to determine the number of pods
+ in their corresponding topology domain.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are ANDed.
items:
- description: A label selector requirement is a
- selector that contains values, a key, and an
- operator that relates the key and values.
+ description: |-
+ A label selector requirement is a selector that contains values, a key, and an operator that
+ relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
- description: operator represents a key's relationship
- to a set of values. Valid operators are
- In, NotIn, Exists and DoesNotExist.
+ description: |-
+ operator represents a key's relationship to a set of values.
+ Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
- description: values is an array of string
- values. If the operator is In or NotIn,
- the values array must be non-empty. If the
- operator is Exists or DoesNotExist, the
- values array must be empty. This array is
- replaced during a strategic merge patch.
+ description: |-
+ values is an array of string values. If the operator is In or NotIn,
+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
+ the values array must be empty. This array is replaced during a strategic
+ merge patch.
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
- description: matchLabels is a map of {key,value}
- pairs. A single {key,value} in the matchLabels
- map is equivalent to an element of matchExpressions,
- whose key field is "key", the operator is "In",
- and the values array contains only "value". The
- requirements are ANDed.
+ description: |-
+ matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
+ map is equivalent to an element of matchExpressions, whose key field is "key", the
+ operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
+ x-kubernetes-map-type: atomic
+ matchLabelKeys:
+ description: |-
+ MatchLabelKeys is a set of pod label keys to select the pods over which
+ spreading will be calculated. The keys are used to lookup values from the
+ incoming pod labels, those key-value labels are ANDed with labelSelector
+ to select the group of existing pods over which spreading will be calculated
+ for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
+ MatchLabelKeys cannot be set when LabelSelector isn't set.
+ Keys that don't exist in the incoming pod labels will
+ be ignored. A null or empty list means only match against labelSelector.
+
+ This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default).
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: atomic
maxSkew:
- description: 'MaxSkew describes the degree to which
- pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,
- it is the maximum permitted difference between the
- number of matching pods in the target topology and
- the global minimum. The global minimum is the minimum
- number of matching pods in an eligible domain or zero
- if the number of eligible domains is less than MinDomains.
- For example, in a 3-zone cluster, MaxSkew is set to
- 1, and pods with the same labelSelector spread as
- 2/2/1: In this case, the global minimum is 1. | zone1
- | zone2 | zone3 | | P P | P P | P | - if MaxSkew
- is 1, incoming pod can only be scheduled to zone3
- to become 2/2/2; scheduling it onto zone1(zone2) would
- make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1).
- - if MaxSkew is 2, incoming pod can be scheduled onto
- any zone. When `whenUnsatisfiable=ScheduleAnyway`,
- it is used to give higher precedence to topologies
- that satisfy it. It''s a required field. Default value
- is 1 and 0 is not allowed.'
+ description: |-
+ MaxSkew describes the degree to which pods may be unevenly distributed.
+ When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference
+ between the number of matching pods in the target topology and the global minimum.
+ The global minimum is the minimum number of matching pods in an eligible domain
+ or zero if the number of eligible domains is less than MinDomains.
+ For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
+ labelSelector spread as 2/2/1:
+ In this case, the global minimum is 1.
+ | zone1 | zone2 | zone3 |
+ | P P | P P | P |
+ - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;
+ scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
+ violate MaxSkew(1).
+ - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
+ When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence
+ to topologies that satisfy it.
+ It's a required field. Default value is 1 and 0 is not allowed.
format: int32
type: integer
minDomains:
- description: "MinDomains indicates a minimum number
- of eligible domains. When the number of eligible domains
- with matching topology keys is less than minDomains,
- Pod Topology Spread treats \"global minimum\" as 0,
- and then the calculation of Skew is performed. And
- when the number of eligible domains with matching
- topology keys equals or greater than minDomains, this
- value has no effect on scheduling. As a result, when
- the number of eligible domains is less than minDomains,
- scheduler won't schedule more than maxSkew Pods to
- those domains. If value is nil, the constraint behaves
- as if MinDomains is equal to 1. Valid values are integers
- greater than 0. When value is not nil, WhenUnsatisfiable
- must be DoNotSchedule. \n For example, in a 3-zone
- cluster, MaxSkew is set to 2, MinDomains is set to
- 5 and pods with the same labelSelector spread as 2/2/2:
- | zone1 | zone2 | zone3 | | P P | P P | P P |
- The number of domains is less than 5(MinDomains),
- so \"global minimum\" is treated as 0. In this situation,
- new pod with the same labelSelector cannot be scheduled,
- because computed skew will be 3(3 - 0) if new Pod
- is scheduled to any of the three zones, it will violate
- MaxSkew. \n This is an alpha field and requires enabling
- MinDomainsInPodTopologySpread feature gate."
+ description: |-
+ MinDomains indicates a minimum number of eligible domains.
+ When the number of eligible domains with matching topology keys is less than minDomains,
+ Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed.
+ And when the number of eligible domains with matching topology keys equals or greater than minDomains,
+ this value has no effect on scheduling.
+ As a result, when the number of eligible domains is less than minDomains,
+ scheduler won't schedule more than maxSkew Pods to those domains.
+ If value is nil, the constraint behaves as if MinDomains is equal to 1.
+ Valid values are integers greater than 0.
+ When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
+
+ For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same
+ labelSelector spread as 2/2/2:
+ | zone1 | zone2 | zone3 |
+ | P P | P P | P P |
+ The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0.
+ In this situation, new pod with the same labelSelector cannot be scheduled,
+ because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,
+ it will violate MaxSkew.
format: int32
type: integer
+ nodeAffinityPolicy:
+ description: |-
+ NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector
+ when calculating pod topology spread skew. Options are:
+ - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.
+ - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.
+
+ If this value is nil, the behavior is equivalent to the Honor policy.
+ This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
+ type: string
+ nodeTaintsPolicy:
+ description: |-
+ NodeTaintsPolicy indicates how we will treat node taints when calculating
+ pod topology spread skew. Options are:
+ - Honor: nodes without taints, along with tainted nodes for which the incoming pod
+ has a toleration, are included.
+ - Ignore: node taints are ignored. All nodes are included.
+
+ If this value is nil, the behavior is equivalent to the Ignore policy.
+ This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.
+ type: string
topologyKey:
- description: TopologyKey is the key of node labels.
- Nodes that have a label with this key and identical
- values are considered to be in the same topology.
- We consider each as a "bucket", and try
- to put balanced number of pods into each bucket. We
- define a domain as a particular instance of a topology.
- Also, we define an eligible domain as a domain whose
- nodes match the node selector. e.g. If TopologyKey
- is "kubernetes.io/hostname", each Node is a domain
- of that topology. And, if TopologyKey is "topology.kubernetes.io/zone",
- each zone is a domain of that topology. It's a required
- field.
+ description: |-
+ TopologyKey is the key of node labels. Nodes that have a label with this key
+ and identical values are considered to be in the same topology.
+ We consider each as a "bucket", and try to put balanced number
+ of pods into each bucket.
+ We define a domain as a particular instance of a topology.
+ Also, we define an eligible domain as a domain whose nodes meet the requirements of
+ nodeAffinityPolicy and nodeTaintsPolicy.
+ e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology.
+ And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology.
+ It's a required field.
type: string
whenUnsatisfiable:
- description: 'WhenUnsatisfiable indicates how to deal
- with a pod if it doesn''t satisfy the spread constraint.
- - DoNotSchedule (default) tells the scheduler not
- to schedule it. - ScheduleAnyway tells the scheduler
- to schedule the pod in any location, but giving higher
- precedence to topologies that would help reduce the
- skew. A constraint is considered "Unsatisfiable" for
- an incoming pod if and only if every possible node
- assignment for that pod would violate "MaxSkew" on
- some topology. For example, in a 3-zone cluster, MaxSkew
- is set to 1, and pods with the same labelSelector
- spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P
- | P | P | If WhenUnsatisfiable is set to DoNotSchedule,
- incoming pod can only be scheduled to zone2(zone3)
- to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3)
- satisfies MaxSkew(1). In other words, the cluster
- can still be imbalanced, but scheduler won''t make
- it *more* imbalanced. It''s a required field.'
+ description: |-
+ WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
+ the spread constraint.
+ - DoNotSchedule (default) tells the scheduler not to schedule it.
+ - ScheduleAnyway tells the scheduler to schedule the pod in any location,
+ but giving higher precedence to topologies that would help reduce the
+ skew.
+ A constraint is considered "Unsatisfiable" for an incoming pod
+ if and only if every possible node assignment for that pod would violate
+ "MaxSkew" on some topology.
+ For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
+ labelSelector spread as 3/1/1:
+ | zone1 | zone2 | zone3 |
+ | P P P | P | P |
+ If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
+ to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
+ MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
+ won't make it *more* imbalanced.
+ It's a required field.
type: string
required:
- maxSkew
@@ -15018,48 +16866,58 @@ spec:
- pgAdmin
type: object
users:
- description: Users to create inside PostgreSQL and the databases they
- should access. The default creates one user that can access one
- database matching the PostgresCluster name. An empty list creates
- no users. Removing a user from this list does NOT drop the user
- nor revoke their access.
+ description: |-
+ Users to create inside PostgreSQL and the databases they should access.
+ The default creates one user that can access one database matching the
+ PostgresCluster name. An empty list creates no users. Removing a user
+ from this list does NOT drop the user nor revoke their access.
items:
properties:
databases:
- description: Databases to which this user can connect and create
- objects. Removing a database from this list does NOT revoke
- access. This field is ignored for the "postgres" user.
+ description: |-
+ Databases to which this user can connect and create objects. Removing a
+ database from this list does NOT revoke access. This field is ignored for
+ the "postgres" user.
items:
- description: 'PostgreSQL identifiers are limited in length
- but may contain any character. More info: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS'
+ description: |-
+ PostgreSQL identifiers are limited in length but may contain any character.
+ More info: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
maxLength: 63
minLength: 1
type: string
type: array
x-kubernetes-list-type: set
name:
- description: The name of this PostgreSQL user. The value may
- contain only lowercase letters, numbers, and hyphen so that
- it fits into Kubernetes metadata.
+ description: |-
+ The name of this PostgreSQL user. The value may contain only lowercase
+ letters, numbers, and hyphen so that it fits into Kubernetes metadata.
maxLength: 63
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
type: string
options:
- description: 'ALTER ROLE options except for PASSWORD. This field
- is ignored for the "postgres" user. More info: https://www.postgresql.org/docs/current/role-attributes.html'
+ description: |-
+ ALTER ROLE options except for PASSWORD. This field is ignored for the
+ "postgres" user.
+ More info: https://www.postgresql.org/docs/current/role-attributes.html
+ maxLength: 200
pattern: ^[^;]*$
type: string
+ x-kubernetes-validations:
+ - message: cannot assign password
+ rule: '!self.matches("(?i:PASSWORD)")'
+ - message: cannot contain comments
+ rule: '!self.matches("(?:--|/[*]|[*]/)")'
password:
description: Properties of the password generated for this user.
properties:
type:
default: ASCII
- description: Type of password to generate. Defaults to ASCII.
- Valid options are ASCII and AlphaNumeric. "ASCII" passwords
- contain letters, numbers, and symbols from the US-ASCII
- character set. "AlphaNumeric" passwords contain letters
- and numbers from the US-ASCII character set.
+ description: |-
+ Type of password to generate. Defaults to ASCII. Valid options are ASCII
+ and AlphaNumeric.
+ "ASCII" passwords contain letters, numbers, and symbols from the US-ASCII character set.
+ "AlphaNumeric" passwords contain letters and numbers from the US-ASCII character set.
enum:
- ASCII
- AlphaNumeric
@@ -15070,12 +16928,12 @@ spec:
required:
- name
type: object
+ maxItems: 64
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
required:
- - backups
- instances
- postgresVersion
type: object
@@ -15083,40 +16941,40 @@ spec:
description: PostgresClusterStatus defines the observed state of PostgresCluster
properties:
conditions:
- description: 'conditions represent the observations of postgrescluster''s
- current state. Known .status.conditions.type are: "PersistentVolumeResizing",
- "Progressing", "ProxyAvailable"'
+ description: |-
+ conditions represent the observations of postgrescluster's current state.
+ Known .status.conditions.type are: "PersistentVolumeResizing",
+ "Progressing", "ProxyAvailable"
items:
description: Condition contains details for one aspect of the current
state of this API Resource.
properties:
lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
format: int64
minimum: 0
type: integer
reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
@@ -15130,7 +16988,7 @@ spec:
- Unknown
type: string
type:
- description: type of condition in CamelCase.
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
@@ -15157,6 +17015,11 @@ spec:
description: Current state of PostgreSQL instances.
items:
properties:
+ desiredPGDataVolume:
+ additionalProperties:
+ type: string
+ description: Desired Size of the pgData volume
+ type: object
name:
type: string
readyReplicas:
@@ -15215,11 +17078,10 @@ spec:
format: int32
type: integer
completionTime:
- description: Represents the time the manual backup Job was
- determined by the Job controller to be completed. This
- field is only set if the backup completed successfully.
- Additionally, it is represented in RFC3339 form and is in
- UTC.
+ description: |-
+ Represents the time the manual backup Job was determined by the Job controller
+ to be completed. This field is only set if the backup completed successfully.
+ Additionally, it is represented in RFC3339 form and is in UTC.
format: date-time
type: string
failed:
@@ -15228,18 +17090,19 @@ spec:
format: int32
type: integer
finished:
- description: Specifies whether or not the Job is finished
- executing (does not indicate success or failure).
+ description: |-
+ Specifies whether or not the Job is finished executing (does not indicate success or
+ failure).
type: boolean
id:
- description: A unique identifier for the manual backup as
- provided using the "pgbackrest-backup" annotation when initiating
- a backup.
+ description: |-
+ A unique identifier for the manual backup as provided using the "pgbackrest-backup"
+ annotation when initiating a backup.
type: string
startTime:
- description: Represents the time the manual backup Job was
- acknowledged by the Job controller. It is represented in
- RFC3339 form and is in UTC.
+ description: |-
+ Represents the time the manual backup Job was acknowledged by the Job controller.
+ It is represented in RFC3339 form and is in UTC.
format: date-time
type: string
succeeded:
@@ -15256,16 +17119,19 @@ spec:
host
properties:
apiVersion:
- description: 'APIVersion defines the versioned schema of this
- representation of an object. Servers should convert recognized
- schemas to the latest internal value, and may reject unrecognized
- values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
- description: 'Kind is a string value representing the REST
- resource this object represents. Servers may infer this
- from the endpoint the client submits requests to. Cannot
- be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
ready:
description: Whether or not the pgBackRest repository host
@@ -15285,14 +17151,14 @@ spec:
description: The name of the pgBackRest repository
type: string
replicaCreateBackupComplete:
- description: ReplicaCreateBackupReady indicates whether
- a backup exists in the repository as needed to bootstrap
- replicas.
+ description: |-
+ ReplicaCreateBackupReady indicates whether a backup exists in the repository as needed
+ to bootstrap replicas.
type: boolean
repoOptionsHash:
- description: A hash of the required fields in the spec for
- defining an Azure, GCS or S3 repository, Utilizd to detect
- changes to these fields and then execute pgBackRest stanza-create
+ description: |-
+ A hash of the required fields in the spec for defining an Azure, GCS or S3 repository,
+ Utilized to detect changes to these fields and then execute pgBackRest stanza-create
commands accordingly.
type: string
stanzaCreated:
@@ -15319,11 +17185,10 @@ spec:
format: int32
type: integer
completionTime:
- description: Represents the time the manual backup Job was
- determined by the Job controller to be completed. This
- field is only set if the backup completed successfully.
- Additionally, it is represented in RFC3339 form and is in
- UTC.
+ description: |-
+ Represents the time the manual backup Job was determined by the Job controller
+ to be completed. This field is only set if the backup completed successfully.
+ Additionally, it is represented in RFC3339 form and is in UTC.
format: date-time
type: string
failed:
@@ -15332,18 +17197,19 @@ spec:
format: int32
type: integer
finished:
- description: Specifies whether or not the Job is finished
- executing (does not indicate success or failure).
+ description: |-
+ Specifies whether or not the Job is finished executing (does not indicate success or
+ failure).
type: boolean
id:
- description: A unique identifier for the manual backup as
- provided using the "pgbackrest-backup" annotation when initiating
- a backup.
+ description: |-
+ A unique identifier for the manual backup as provided using the "pgbackrest-backup"
+ annotation when initiating a backup.
type: string
startTime:
- description: Represents the time the manual backup Job was
- acknowledged by the Job controller. It is represented in
- RFC3339 form and is in UTC.
+ description: |-
+ Represents the time the manual backup Job was acknowledged by the Job controller.
+ It is represented in RFC3339 form and is in UTC.
format: date-time
type: string
succeeded:
@@ -15365,11 +17231,10 @@ spec:
format: int32
type: integer
completionTime:
- description: Represents the time the manual backup Job was
- determined by the Job controller to be completed. This
- field is only set if the backup completed successfully.
- Additionally, it is represented in RFC3339 form and is
- in UTC.
+ description: |-
+ Represents the time the manual backup Job was determined by the Job controller
+ to be completed. This field is only set if the backup completed successfully.
+ Additionally, it is represented in RFC3339 form and is in UTC.
format: date-time
type: string
cronJobName:
@@ -15385,9 +17250,9 @@ spec:
description: The name of the associated pgBackRest repository
type: string
startTime:
- description: Represents the time the manual backup Job was
- acknowledged by the Job controller. It is represented
- in RFC3339 form and is in UTC.
+ description: |-
+ Represents the time the manual backup Job was acknowledged by the Job controller.
+ It is represented in RFC3339 form and is in UTC.
format: date-time
type: string
succeeded:
@@ -15402,8 +17267,9 @@ spec:
type: array
type: object
postgresVersion:
- description: Stores the current PostgreSQL major version following
- a successful major PostgreSQL upgrade.
+ description: |-
+ Stores the current PostgreSQL major version following a successful
+ major PostgreSQL upgrade.
type: integer
proxy:
description: Current state of the PostgreSQL proxy.
@@ -15411,8 +17277,9 @@ spec:
pgBouncer:
properties:
postgresRevision:
- description: Identifies the revision of PgBouncer assets that
- have been installed into PostgreSQL.
+ description: |-
+ Identifies the revision of PgBouncer assets that have been installed into
+ PostgreSQL.
type: string
readyReplicas:
description: Total number of ready pods.
@@ -15425,22 +17292,19 @@ spec:
type: object
type: object
registrationRequired:
- description: Version information for installations with a registration
- requirement.
properties:
pgoVersion:
type: string
type: object
startupInstance:
- description: The instance that should be started first when bootstrapping
- and/or starting a PostgresCluster.
+ description: |-
+ The instance that should be started first when bootstrapping and/or starting a
+ PostgresCluster.
type: string
startupInstanceSet:
description: The instance set associated with the startupInstance
type: string
tokenRequired:
- description: Signals the need for a token to be applied when registration
- is required.
type: string
userInterface:
description: Current state of the PostgreSQL user interface.
diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml
index 2509f42fe5..85b7cbdf29 100644
--- a/config/crd/kustomization.yaml
+++ b/config/crd/kustomization.yaml
@@ -1,7 +1,17 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
+- bases/postgres-operator.crunchydata.com_crunchybridgeclusters.yaml
- bases/postgres-operator.crunchydata.com_postgresclusters.yaml
- bases/postgres-operator.crunchydata.com_pgupgrades.yaml
- bases/postgres-operator.crunchydata.com_pgadmins.yaml
+
+patches:
+- target:
+ kind: CustomResourceDefinition
+ patch: |-
+ - op: add
+ path: /metadata/labels
+ value:
+ app.kubernetes.io/name: pgo
+ app.kubernetes.io/version: latest
diff --git a/config/default/kustomization.yaml b/config/default/kustomization.yaml
index 82b2310ca0..7001380693 100644
--- a/config/default/kustomization.yaml
+++ b/config/default/kustomization.yaml
@@ -11,7 +11,7 @@ labels:
resources:
- ../crd
-- ../rbac/cluster
+- ../rbac
- ../manager
images:
diff --git a/config/manager/manager.yaml b/config/manager/manager.yaml
index addbd49afa..2eb849e138 100644
--- a/config/manager/manager.yaml
+++ b/config/manager/manager.yaml
@@ -12,36 +12,38 @@ spec:
- name: operator
image: postgres-operator
env:
+ - name: PGO_INSTALLER
+ value: kustomize
+ - name: PGO_INSTALLER_ORIGIN
+ value: postgres-operator-repo
- name: PGO_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: CRUNCHY_DEBUG
value: "true"
- - name: RELATED_IMAGE_POSTGRES_14
- value: "registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.9-0"
- - name: RELATED_IMAGE_POSTGRES_14_GIS_3.1
- value: "registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-14.9-3.1-0"
- - name: RELATED_IMAGE_POSTGRES_14_GIS_3.2
- value: "registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-14.9-3.2-0"
- - name: RELATED_IMAGE_POSTGRES_14_GIS_3.3
- value: "registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-14.9-3.3-0"
- - name: RELATED_IMAGE_POSTGRES_15
- value: "registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-15.4-0"
- - name: RELATED_IMAGE_POSTGRES_15_GIS_3.3
- value: "registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-15.4-3.3-0"
+ - name: RELATED_IMAGE_POSTGRES_16
+ value: "registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-16.4-2"
+ - name: RELATED_IMAGE_POSTGRES_16_GIS_3.3
+ value: "registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-16.4-3.3-2"
+ - name: RELATED_IMAGE_POSTGRES_16_GIS_3.4
+ value: "registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-16.4-3.4-2"
+ - name: RELATED_IMAGE_POSTGRES_17
+ value: "registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-17.0-0"
+ - name: RELATED_IMAGE_POSTGRES_17_GIS_3.4
+ value: "registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-17.0-3.4-0"
- name: RELATED_IMAGE_PGADMIN
- value: "registry.developers.crunchydata.com/crunchydata/crunchy-pgadmin4:ubi8-4.30-17"
+ value: "registry.developers.crunchydata.com/crunchydata/crunchy-pgadmin4:ubi8-4.30-31"
- name: RELATED_IMAGE_PGBACKREST
- value: "registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.47-0"
+ value: "registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.53.1-0"
- name: RELATED_IMAGE_PGBOUNCER
- value: "registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.19-4"
+ value: "registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.23-0"
- name: RELATED_IMAGE_PGEXPORTER
value: "registry.developers.crunchydata.com/crunchydata/crunchy-postgres-exporter:latest"
- name: RELATED_IMAGE_PGUPGRADE
value: "registry.developers.crunchydata.com/crunchydata/crunchy-upgrade:latest"
- name: RELATED_IMAGE_STANDALONE_PGADMIN
- value: "registry.developers.crunchydata.com/crunchydata/crunchy-pgadmin4:ubi8-7.7-0"
+ value: "registry.developers.crunchydata.com/crunchydata/crunchy-pgadmin4:ubi8-8.12-0"
securityContext:
allowPrivilegeEscalation: false
capabilities: { drop: [ALL] }
diff --git a/config/rbac/.gitignore b/config/rbac/.gitignore
deleted file mode 100644
index 2ad5901955..0000000000
--- a/config/rbac/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/role.yaml
diff --git a/config/rbac/cluster/kustomization.yaml b/config/rbac/kustomization.yaml
similarity index 100%
rename from config/rbac/cluster/kustomization.yaml
rename to config/rbac/kustomization.yaml
diff --git a/config/rbac/namespace/kustomization.yaml b/config/rbac/namespace/kustomization.yaml
deleted file mode 100644
index 82cfb0841b..0000000000
--- a/config/rbac/namespace/kustomization.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-
-resources:
-- service_account.yaml
-- role.yaml
-- role_binding.yaml
diff --git a/config/rbac/namespace/role.yaml b/config/rbac/namespace/role.yaml
deleted file mode 100644
index 90bc3b9dbb..0000000000
--- a/config/rbac/namespace/role.yaml
+++ /dev/null
@@ -1,146 +0,0 @@
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
- name: postgres-operator
-rules:
-- apiGroups:
- - ''
- resources:
- - configmaps
- - persistentvolumeclaims
- - secrets
- - services
- verbs:
- - create
- - delete
- - get
- - list
- - patch
- - watch
-- apiGroups:
- - ''
- resources:
- - endpoints
- verbs:
- - create
- - delete
- - deletecollection
- - get
- - list
- - patch
- - watch
-- apiGroups:
- - ''
- resources:
- - endpoints/restricted
- - pods/exec
- verbs:
- - create
-- apiGroups:
- - ''
- resources:
- - events
- verbs:
- - create
- - patch
-- apiGroups:
- - ''
- resources:
- - pods
- verbs:
- - delete
- - get
- - list
- - patch
- - watch
-- apiGroups:
- - ''
- resources:
- - serviceaccounts
- verbs:
- - create
- - get
- - list
- - patch
- - watch
-- apiGroups:
- - apps
- resources:
- - deployments
- - statefulsets
- verbs:
- - create
- - delete
- - get
- - list
- - patch
- - watch
-- apiGroups:
- - batch
- resources:
- - cronjobs
- - jobs
- verbs:
- - create
- - delete
- - get
- - list
- - patch
- - watch
-- apiGroups:
- - policy
- resources:
- - poddisruptionbudgets
- verbs:
- - create
- - delete
- - get
- - list
- - patch
- - watch
-- apiGroups:
- - postgres-operator.crunchydata.com
- resources:
- - pgadmins
- - pgupgrades
- verbs:
- - get
- - list
- - watch
-- apiGroups:
- - postgres-operator.crunchydata.com
- resources:
- - pgadmins/finalizers
- - pgupgrades/finalizers
- - postgresclusters/finalizers
- verbs:
- - update
-- apiGroups:
- - postgres-operator.crunchydata.com
- resources:
- - pgadmins/status
- - pgupgrades/status
- - postgresclusters/status
- verbs:
- - patch
-- apiGroups:
- - postgres-operator.crunchydata.com
- resources:
- - postgresclusters
- verbs:
- - get
- - list
- - patch
- - watch
-- apiGroups:
- - rbac.authorization.k8s.io
- resources:
- - rolebindings
- - roles
- verbs:
- - create
- - get
- - list
- - patch
- - watch
diff --git a/config/rbac/namespace/role_binding.yaml b/config/rbac/namespace/role_binding.yaml
deleted file mode 100644
index d7c16c8a5b..0000000000
--- a/config/rbac/namespace/role_binding.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
- name: postgres-operator
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: Role
- name: postgres-operator
-subjects:
-- kind: ServiceAccount
- name: pgo
diff --git a/config/rbac/namespace/service_account.yaml b/config/rbac/namespace/service_account.yaml
deleted file mode 100644
index 364f797171..0000000000
--- a/config/rbac/namespace/service_account.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
- name: pgo
diff --git a/config/rbac/cluster/role.yaml b/config/rbac/role.yaml
similarity index 77%
rename from config/rbac/cluster/role.yaml
rename to config/rbac/role.yaml
index ac454385cf..d5783d00b1 100644
--- a/config/rbac/cluster/role.yaml
+++ b/config/rbac/role.yaml
@@ -5,11 +5,12 @@ metadata:
name: postgres-operator
rules:
- apiGroups:
- - ''
+ - ""
resources:
- configmaps
- persistentvolumeclaims
- secrets
+ - serviceaccounts
- services
verbs:
- create
@@ -19,7 +20,7 @@ rules:
- patch
- watch
- apiGroups:
- - ''
+ - ""
resources:
- endpoints
verbs:
@@ -31,21 +32,21 @@ rules:
- patch
- watch
- apiGroups:
- - ''
+ - ""
resources:
- endpoints/restricted
- pods/exec
verbs:
- create
- apiGroups:
- - ''
+ - ""
resources:
- events
verbs:
- create
- patch
- apiGroups:
- - ''
+ - ""
resources:
- pods
verbs:
@@ -54,16 +55,6 @@ rules:
- list
- patch
- watch
-- apiGroups:
- - ''
- resources:
- - serviceaccounts
- verbs:
- - create
- - get
- - list
- - patch
- - watch
- apiGroups:
- apps
resources:
@@ -88,6 +79,15 @@ rules:
- list
- patch
- watch
+- apiGroups:
+ - coordination.k8s.io
+ resources:
+ - leases
+ verbs:
+ - create
+ - get
+ - update
+ - watch
- apiGroups:
- policy
resources:
@@ -99,6 +99,24 @@ rules:
- list
- patch
- watch
+- apiGroups:
+ - postgres-operator.crunchydata.com
+ resources:
+ - crunchybridgeclusters
+ verbs:
+ - get
+ - list
+ - patch
+ - update
+ - watch
+- apiGroups:
+ - postgres-operator.crunchydata.com
+ resources:
+ - crunchybridgeclusters/finalizers
+ - crunchybridgeclusters/status
+ verbs:
+ - patch
+ - update
- apiGroups:
- postgres-operator.crunchydata.com
resources:
@@ -140,6 +158,18 @@ rules:
- roles
verbs:
- create
+ - delete
+ - get
+ - list
+ - patch
+ - watch
+- apiGroups:
+ - snapshot.storage.k8s.io
+ resources:
+ - volumesnapshots
+ verbs:
+ - create
+ - delete
- get
- list
- patch
diff --git a/config/rbac/cluster/role_binding.yaml b/config/rbac/role_binding.yaml
similarity index 100%
rename from config/rbac/cluster/role_binding.yaml
rename to config/rbac/role_binding.yaml
diff --git a/config/rbac/cluster/service_account.yaml b/config/rbac/service_account.yaml
similarity index 100%
rename from config/rbac/cluster/service_account.yaml
rename to config/rbac/service_account.yaml
diff --git a/config/singlenamespace/kustomization.yaml b/config/singlenamespace/kustomization.yaml
deleted file mode 100644
index a6dc8de538..0000000000
--- a/config/singlenamespace/kustomization.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-
-namespace: postgres-operator
-
-labels:
-- includeSelectors: true
- pairs:
- postgres-operator.crunchydata.com/control-plane: postgres-operator
-
-resources:
-- ../crd
-- ../rbac/namespace
-- ../manager
-
-images:
-- name: postgres-operator
- newName: registry.developers.crunchydata.com/crunchydata/postgres-operator
- newTag: latest
-
-patches:
-- path: manager-target.yaml
diff --git a/config/singlenamespace/manager-target.yaml b/config/singlenamespace/manager-target.yaml
deleted file mode 100644
index 949250e264..0000000000
--- a/config/singlenamespace/manager-target.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: pgo
-spec:
- template:
- spec:
- containers:
- - name: operator
- env:
- - name: PGO_TARGET_NAMESPACE
- valueFrom: { fieldRef: { apiVersion: v1, fieldPath: metadata.namespace } }
diff --git a/docs/archetypes/default.md b/docs/archetypes/default.md
deleted file mode 100644
index 00e77bd79b..0000000000
--- a/docs/archetypes/default.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "{{ replace .Name "-" " " | title }}"
-date: {{ .Date }}
-draft: true
----
-
diff --git a/docs/config.toml b/docs/config.toml
deleted file mode 100644
index f8f3fa533a..0000000000
--- a/docs/config.toml
+++ /dev/null
@@ -1,94 +0,0 @@
-baseURL= ""
-
-languageCode = "en-us"
-DefaultContentLanguage = "en"
-title = "PGO, the Postgres Operator from Crunchy Data"
-theme = "crunchy-hugo-theme"
-pygmentsCodeFences = true
-pygmentsStyle = "monokailight"
-publishDir = ""
-canonifyurls = true
-relativeURLs = true
-
-defaultContentLanguage = "en"
-defaultContentLanguageInSubdir= false
-enableMissingTranslationPlaceholders = false
-
-[params]
-editURL = "https://github.com/CrunchyData/postgres-operator/edit/master/docs/content/"
-showVisitedLinks = false # default is false
-themeStyle = "flex" # "original" or "flex" # default "flex"
-themeVariant = "" # choose theme variant "green", "gold" , "gray", "blue" (default)
-ordersectionsby = "weight" # ordersectionsby = "title"
-disableHomeIcon = true # default is false
-disableSearch = false # default is false
-disableNavChevron = false # set true to hide next/prev chevron, default is false
-highlightClientSide = false # set true to use highlight.pack.js instead of the default hugo chroma highlighter
-menushortcutsnewtab = true # set true to open shortcuts links to a new tab/window
-enableGitInfo = true
-operatorVersion = "5.3.1"
-operatorVersionLatestRel5_0 = "5.0.8"
-imageCrunchyPostgres = "registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-15.2-0"
-imageCrunchyPostgresPrivate = "registry.crunchydata.com/crunchydata/crunchy-postgres:ubi8-15.2-0"
-imageCrunchyPGBackrest = "registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.41-4"
-imageCrunchyPGBackrestPrivate = "registry.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.41-4"
-imageCrunchyPGBouncer = "registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.18-0"
-imageCrunchyExporter = "registry.developers.crunchydata.com/crunchydata/crunchy-postgres-exporter:ubi8-5.3.1-0"
-imageCrunchyPGAdmin = "registry.developers.crunchydata.com/crunchydata/crunchy-pgadmin4:ubi8-4.30-10"
-imageCrunchyPGUpgrade = "registry.developers.crunchydata.com/crunchydata/crunchy-upgrade:ubi8-5.3.1-0"
-operatorRepository = "registry.developers.crunchydata.com/crunchydata/postgres-operator"
-operatorRepositoryPrivate = "registry.crunchydata.com/crunchydata/postgres-operator"
-postgresOperatorTag = "ubi8-5.3.1-0"
-PGBouncerComponentTagUbi8 = "ubi8-1.18-0"
-PGBouncerTagUbi8 = "ubi8-5.3.1-0"
-postgres14GIS32ComponentTagUbi8 = "ubi8-14.7-3.2-0"
-postgres14GIS32TagUbi8 = "ubi8-14.7-3.2-5.3.1-0"
-postgres14GIS31ComponentTagUbi8 = "ubi8-14.7-3.1-0"
-postgres14GIS31TagUbi8 = "ubi8-14.7-3.1-5.3.1-0"
-fromPostgresVersion = "14"
-postgresVersion = "15"
-postgresVersion15 = "15.2"
-postgresVersion14 = "14.7"
-postgresVersion13 = "13.10"
-postgresVersion12 = "12.14"
-postgresVersion11 = "11.19"
-operatorHelmRepository = "oci://registry.developers.crunchydata.com/crunchydata/pgo"
-
-[outputs]
-home = [ "HTML", "RSS", "JSON"]
-
-[[menu.shortcuts]]
-name = ""
-url = "/"
-weight = 1
-
-[[menu.shortcuts]]
-name = " "
-url = "https://github.com/CrunchyData/postgres-operator"
-weight = 10
-
-[[menu.shortcuts]]
-name = " "
-identifier = "kubedoc"
-url = "https://kubernetes.io/docs/"
-weight = 20
-
-[[menu.shortcuts]]
-name = " "
-url = "https://github.com/CrunchyData/postgres-operator/blob/master/LICENSE.md"
-weight = 30
-
-[[menu.downloads]]
-name = " "
-url = "/pdf/postgres_operator.pdf"
-weight = 20
-
-[[menu.downloads]]
-name = " "
-url = "/epub/postgres_operator.epub"
-weight = 30
-
-[markup]
- [markup.goldmark]
- [markup.goldmark.renderer]
- unsafe = true
diff --git a/docs/content/_index.md b/docs/content/_index.md
deleted file mode 100644
index 077bcf0c6c..0000000000
--- a/docs/content/_index.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: "PGO, the Postgres Operator from Crunchy Data"
-date:
-draft: false
----
-
-# PGO, the Postgres Operator from Crunchy Data
-
-
-
-Latest Release: {{< param operatorVersion >}}
-
-# Production Postgres Made Easy
-
-[PGO](https://github.com/CrunchyData/postgres-operator), the [Postgres Operator]((https://github.com/CrunchyData/postgres-operator)) from [Crunchy Data](https://www.crunchydata.com), gives you a **declarative Postgres** solution that automatically manages your [PostgreSQL](https://www.postgresql.org) clusters.
-
-Designed for your GitOps workflows, it is [easy to get started]({{< relref "quickstart/_index.md" >}}) with Postgres on Kubernetes with PGO. Within a few moments, you can have a production grade Postgres cluster complete with high availability, disaster recovery, and monitoring, all over secure TLS communications.Even better, PGO lets you easily customize your Postgres cluster to tailor it to your workload!
-
-With conveniences like cloning Postgres clusters to using rolling updates to roll out disruptive changes with minimal downtime, PGO is ready to support your Postgres data at every stage of your release pipeline. Built for resiliency and uptime, PGO will keep your desired Postgres in a desired state so you do not need to worry about it.
-
-PGO is developed with many years of production experience in automating Postgres management on Kubernetes, providing a seamless cloud native Postgres solution to keep your data always available.
-
-## Supported Platforms
-
-PGO, the Postgres Operator from Crunchy Data, is tested on the following platforms:
-
-- Kubernetes 1.22-1.25
-- OpenShift 4.8-4.11
-- Rancher
-- Google Kubernetes Engine (GKE), including Anthos
-- Amazon EKS
-- Microsoft AKS
-- VMware Tanzu
-
-This list only includes the platforms that the Postgres Operator is specifically
-tested on as part of the release process. PGO works on other
-[CNCF Certified Kubernetes](https://www.cncf.io/certification/software-conformance/)
-distributions as well.
-
-The PGO Postgres Operator project source code is available subject to the [Apache 2.0 license](https://raw.githubusercontent.com/CrunchyData/postgres-operator/master/LICENSE.md) with the PGO logo and branding assets covered by [our trademark guidelines](/logos/TRADEMARKS.md).
diff --git a/docs/content/architecture/_index.md b/docs/content/architecture/_index.md
deleted file mode 100644
index 452f695c33..0000000000
--- a/docs/content/architecture/_index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Architecture"
-date:
-draft: false
-weight: 40
----
diff --git a/docs/content/architecture/backups.md b/docs/content/architecture/backups.md
deleted file mode 100644
index 02e5f80883..0000000000
--- a/docs/content/architecture/backups.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-title: "Backup Management"
-date:
-draft: false
-weight: 120
----
-
-When using the PostgreSQL Operator, the answer to the question "do you take
-backups of your database" is automatically "yes!"
-
-The PostgreSQL Operator uses the open source
-[pgBackRest](https://pgbackrest.org) backup and restore utility that is designed
-for working with databases that are many terabytes in size. As described in the
-[tutorial]({{< relref "/tutorial/backups.md" >}}), pgBackRest is enabled by
-default as it permits the PostgreSQL Operator to automate some advanced as well
-as convenient behaviors, including:
-
-- Efficient provisioning of new replicas that are added to the PostgreSQL
-cluster
-- Preventing replicas from falling out of sync from the PostgreSQL primary by
-allowing them to replay old WAL logs
-- Allowing failed primaries to automatically and efficiently heal using the
-"delta restore" feature
-- Serving as the basis for the cluster cloning feature
-- ...and of course, allowing for one to take full, differential, and incremental
-backups and perform full and point-in-time restores
-
-Below is one example of how PGO manages backups with both a local storage and a Amazon S3 configuration.
-
-
-
-The PostgreSQL Operator leverages a pgBackRest repository to facilitate the
-usage of the pgBackRest features in a PostgreSQL cluster. When a new PostgreSQL
-cluster is created, it simultaneously creates a pgBackRest repository.
-
-You can store your pgBackRest backups in up to four different locations and using four different storage types:
-
-- Any Kubernetes supported storage class
-- Amazon S3 (or S3 equivalents like MinIO)
-- Google Cloud Storage (GCS)
-- Azure Blob Storage
-
-PostgreSQL is automatically configured to use the `pgbackrest archive-push` command
-to archive the write-ahead log (WAL) in all repositories.
-
-## Backups
-
-PGO supports three types of pgBackRest backups:
-
-- Full: A full backup of all the contents of the PostgreSQL cluster
-- Differential: A backup of only the files that have changed since the last full backup
-- Incremental: A backup of only the files that have changed since the last full, differential, or incremental backup
-
-## Scheduling Backups
-
-Any effective disaster recovery strategy includes having regularly scheduled
-backups. PGO enables this by managing a series of Kubernetes CronJobs to ensure that backups are executed at scheduled times.
-
-Note that pgBackRest presently only supports taking one backup at a time. This may change in a future release, but for the time being we suggest that you stagger your backup times.
-
-Please see the [backup management tutorial]({{< relref "/tutorial/backup-management.md" >}}) for how to set up backup schedules
-and configure retention policies.
-
-## Restores
-
-The PostgreSQL Operator supports the ability to perform a full restore on a
-PostgreSQL cluster as well as a point-in-time-recovery. There are two types of
-ways to restore a cluster:
-
-- Restore to a new cluster
-- Restore in-place
-
-For examples of this, please see the [disaster recovery tutorial]({{< relref "/tutorial/disaster-recovery.md" >}})
-
-## Deleting a Backup
-
-{{% notice warning %}}
-If you delete a backup that is *not* set to expire, you may be unable to meet
-your retention requirements. If you are deleting backups to free space, it is
-recommended to delete your oldest backups first.
-{{% /notice %}}
-
-A backup can be deleted by running the [`pgbackrest expire`](https://pgbackrest.org/command.html#command-expire) command directly on the pgBackRest repository Pod or a Postgres instance.
diff --git a/docs/content/architecture/disaster-recovery.md b/docs/content/architecture/disaster-recovery.md
deleted file mode 100644
index 70b9a241e8..0000000000
--- a/docs/content/architecture/disaster-recovery.md
+++ /dev/null
@@ -1,113 +0,0 @@
----
-title: "Disaster Recovery"
-date:
-draft: false
-weight: 140
----
-
-Advanced high-availability and disaster recovery strategies involve spreading
-your database clusters across multiple data centers to help maximize uptime.
-In Kubernetes, this technique is known as "[federation](https://en.wikipedia.org/wiki/Federation_(information_technology))".
-Federated Kubernetes clusters can communicate with each other,
-coordinate changes, and provide resiliency for applications that have high
-uptime requirements.
-
-As of this writing, federation in Kubernetes is still in ongoing development
-and is something we monitor with intense interest. As Kubernetes federation
-continues to mature, we wanted to provide a way to deploy PostgreSQL clusters
-managed by the [PostgreSQL Operator](https://www.crunchydata.com/developers/download-postgres/containers/postgres-operator)
-that can span multiple Kubernetes clusters.
-
-At a high-level, the PostgreSQL Operator follows the "active-standby" data
-center deployment model for managing the PostgreSQL clusters across Kubernetes
-clusters. In one Kubernetes cluster, the PostgreSQL Operator deploys PostgreSQL as an
-"active" PostgreSQL cluster, which means it has one primary and one-or-more
-replicas. In another Kubernetes cluster, the PostgreSQL cluster is deployed as
-a "standby" cluster: every PostgreSQL instance is a replica.
-
-A side-effect of this is that in each of the Kubernetes clusters, the PostgreSQL
-Operator can be used to deploy both active and standby PostgreSQL clusters,
-allowing you to mix and match! While the mixing and matching may not be ideal for
-how you deploy your PostgreSQL clusters, it does allow you to perform online
-moves of your PostgreSQL data to different Kubernetes clusters as well as manual
-online upgrades.
-
-Lastly, while this feature does extend high-availability, promoting a standby
-cluster to an active cluster is **not** automatic. While the PostgreSQL clusters
-within a Kubernetes cluster support self-managed high-availability, a
-cross-cluster deployment requires someone to promote the cluster
-from standby to active.
-
-## Standby Cluster Overview
-
-Standby PostgreSQL clusters are managed like any other PostgreSQL cluster that the PostgreSQL
-Operator manages. For example, adding replicas to a standby cluster is identical to adding them to a
-primary cluster.
-
-The main difference between a primary and standby cluster is that there is no primary instance on
-the standby: one PostgreSQL instance is reading in the database changes from either the backup
-repository or via streaming replication, while other instances are replicas of it.
-
-Any replicas created in the standby cluster are known as cascading replicas, i.e., replicas
-replicating from a database server that itself is replicating from another database server. More
-information about [cascading replication](https://www.postgresql.org/docs/current/warm-standby.html#CASCADING-REPLICATION)
-can be found in the PostgreSQL documentation.
-
-Because standby clusters are effectively read-only, certain functionality
-that involves making changes to a database, e.g., PostgreSQL user changes, is
-blocked while a cluster is in standby mode. Additionally, backups and restores
-are blocked as well. While [pgBackRest](https://pgbackrest.org/) supports
-backups from standbys, this requires direct access to the primary database,
-which cannot be done until the PostgreSQL Operator supports Kubernetes
-federation.
-
-### Types of Standby Clusters
-There are three ways to deploy a standby cluster with the Postgres Operator.
-
-#### Repo-based Standby
-
-A repo-based standby will connect to a pgBackRest repo stored in an external storage system
-(S3, GCS, Azure Blob Storage, or any other Kubernetes storage system that can span multiple
-clusters). The standby cluster will receive WAL files from the repo and will apply those to the
-database.
-
-
-
-#### Streaming Standby
-
-A streaming standby relies on an authenticated connection to the primary over the network. The
-standby will receive WAL records directly from the primary as they are generated.
-
-
-
-#### Streaming Standby with an External Repo
-
-You can also configure the operator to create a cluster that takes advantage of both methods. The
-standby cluster will bootstrap from the pgBackRest repo and continue to receive WAL files as they
-are pushed to the repo. The cluster will also directly connect to primary and receive WAL records
-as they are generated. Using a repo while also streaming ensures that your cluster will still be up
-to date with the pgBackRest repo if streaming falls behind.
-
-
-
-For creating a standby Postgres cluster with PGO, please see the [disaster recovery tutorial]({{< relref "tutorial/disaster-recovery.md" >}}#standby-cluster)
-
-### Promoting a Standby Cluster
-
-There comes a time when a standby cluster needs to be promoted to an active cluster. Promoting a
-standby cluster means that the standby leader PostgreSQL instance will become a primary and start
-accepting both reads and writes. This has the net effect of pushing WAL (transaction archives) to
-the pgBackRest repository. Before doing this, we need to ensure we don't accidentally create a split-brain
-scenario.
-
-If you are promoting the standby while the primary is still running, i.e., if this is not a disaster
-scenario, you will want to [shutdown the active PostgreSQL cluster]({{< relref "tutorial/administrative-tasks.md" >}}#shutdown).
-
-The standby can be promoted once the primary is inactive, e.g., is either `shutdown` or failing.
-This process essentially removes the standby configuration from the Kubernetes cluster’s DCS, which
-triggers the promotion of the current standby leader to a primary PostgreSQL instance. You can view
-this promotion in the PostgreSQL standby leader's (soon to be active leader's) logs.
-
-Once the former standby cluster has been successfully promoted to an active PostgreSQL cluster,
-the original active PostgreSQL cluster can be safely [deleted]({{< relref "tutorial/delete-cluster.md" >}})
-and [recreated as a standby cluster]({{< relref "tutorial/disaster-recovery" >}}#standby-cluster).
diff --git a/docs/content/architecture/high-availability.md b/docs/content/architecture/high-availability.md
deleted file mode 100644
index f33f619525..0000000000
--- a/docs/content/architecture/high-availability.md
+++ /dev/null
@@ -1,211 +0,0 @@
----
-title: "High Availability"
-date:
-draft: false
-weight: 110
----
-
-One of the great things about PostgreSQL is its reliability: it is very stable
-and typically "just works." However, there are certain things that can happen in
-the environment that PostgreSQL is deployed in that can affect its uptime,
-including:
-
-- The database storage disk fails or some other hardware failure occurs
-- The network on which the database resides becomes unreachable
-- The host operating system becomes unstable and crashes
-- A key database file becomes corrupted
-- A data center is lost
-
-There may also be downtime events that are due to the normal case of operations,
-such as performing a minor upgrade, security patching of operating system,
-hardware upgrade, or other maintenance.
-
-Fortunately, PGO, the Postgres Operator from Crunchy Data, is prepared for this.
-
-
-
-The Crunchy PostgreSQL Operator supports a distributed-consensus based
-high availability (HA) system that keeps its managed PostgreSQL clusters up and
-running, even if the PostgreSQL Operator disappears. Additionally, it leverages
-Kubernetes specific features such as
-[Pod Anti-Affinity](#how-the-crunchy-postgresql-operator-uses-pod-anti-affinity)
-to limit the surface area that could lead to a PostgreSQL cluster becoming
-unavailable. The PostgreSQL Operator also supports automatic healing of failed
-primaries and leverages the efficient pgBackRest "delta restore" method, which
-eliminates the need to fully reprovision a failed cluster!
-
-The Crunchy PostgreSQL Operator also maintains high availability during a
-routine task such as a PostgreSQL minor version upgrade.
-
-For workloads that are sensitive to transaction loss, PGO supports PostgreSQL synchronous replication.
-
-The high availability backing for your PostgreSQL cluster is only as good as
-your high availability backing for Kubernetes. To learn more about creating a
-[high availability Kubernetes cluster](https://kubernetes.io/docs/tasks/administer-cluster/highly-available-master/),
-please review the [Kubernetes documentation](https://kubernetes.io/docs/tasks/administer-cluster/highly-available-master/)
-or consult your systems administrator.
-
-## The Crunchy Postgres Operator High Availability Algorithm
-
-A critical aspect of any production-grade PostgreSQL deployment is a reliable
-and effective high availability (HA) solution. Organizations want to know that
-their PostgreSQL deployments can remain available despite various issues that
-have the potential to disrupt operations, including hardware failures, network
-outages, software errors, or even human mistakes.
-
-The key portion of high availability that the PostgreSQL Operator provides is
-that it delegates the management of HA to the PostgreSQL clusters themselves.
-This ensures that the PostgreSQL Operator is not a single-point of failure for
-the availability of any of the PostgreSQL clusters that it manages, as the
-PostgreSQL Operator is only maintaining the definitions of what should be in the
-cluster (e.g. how many instances in the cluster, etc.).
-
-Each HA PostgreSQL cluster maintains its availability by using Patroni to manage
-failover when the primary becomes compromised. Patroni stores the primary’s ID in
-annotations on a Kubernetes `Endpoints` object which acts as a lease. The primary
-must periodically renew the lease to signal that it’s healthy. If the primary
-misses its deadline, replicas compare their WAL positions to see who has the most
-up-to-date data. Instances with the latest data try to overwrite the ID on the lease.
-The first to succeed becomes the new primary, and all others follow the new primary.
-
-## How The Crunchy PostgreSQL Operator Uses Pod Anti-Affinity
-
-Kubernetes has two types of Pod anti-affinity:
-
-- Preferred: With preferred (`preferredDuringSchedulingIgnoredDuringExecution`) Pod anti-affinity, Kubernetes will make a best effort to schedule Pods matching the anti-affinity rules to different Nodes. However, if it is not possible to do so, then Kubernetes may schedule one or more Pods to the same Node.
-- Required: With required (`requiredDuringSchedulingIgnoredDuringExecution`) Pod anti-affinity, Kubernetes mandates that each Pod matching the anti-affinity rules **must** be scheduled to different Nodes. However, a Pod may not be scheduled if Kubernetes cannot find a Node that does not contain a Pod matching the rules.
-
-There is a tradeoff with these two types of pod anti-affinity: while "required" anti-affinity will ensure that all the matching Pods are scheduled on different Nodes, if Kubernetes cannot find an available Node, your Postgres instance may not be scheduled. Likewise, while "preferred" anti-affinity will make a best effort to scheduled your Pods on different Nodes, Kubernetes may compromise and schedule more than one Postgres instance of the same cluster on the same Node.
-
-By understanding these tradeoffs, the makeup of your Kubernetes cluster, and your requirements, you can choose the method that makes the most sense for your Postgres deployment. We'll show examples of both methods below!
-
-For an example for how pod anti-affinity works with PGO, please see the [high availability tutorial]({{< relref "tutorial/high-availability.md" >}}#pod-anti-affinity).
-
-## Synchronous Replication: Guarding Against Transactions Loss
-
-Clusters managed by the Crunchy PostgreSQL Operator can be deployed with
-synchronous replication, which is useful for workloads that are sensitive to
-losing transactions, as PostgreSQL will not consider a transaction to be
-committed until it is committed to all synchronous replicas connected to a
-primary. This provides a higher guarantee of data consistency and, when a
-healthy synchronous replica is present, a guarantee of the most up-to-date data
-during a failover event.
-
-This comes at a cost of performance: PostgreSQL has to wait for
-a transaction to be committed on all synchronous replicas, and a connected client
-will have to wait longer than if the transaction only had to be committed on the
-primary (which is how asynchronous replication works). Additionally, there is a
-potential impact to availability: if a synchronous replica crashes, any writes
-to the primary will be blocked until a replica is promoted to become a new
-synchronous replica of the primary.
-
-## Node Affinity
-
-Kubernetes [Node Affinity](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#node-affinity)
-can be used to scheduled Pods to specific Nodes within a Kubernetes cluster.
-This can be useful when you want your PostgreSQL instances to take advantage of
-specific hardware (e.g. for geospatial applications) or if you want to have a
-replica instance deployed to a specific region within your Kubernetes cluster
-for high availability purposes.
-
-For an example for how node affinity works with PGO, please see the [high availability tutorial]({{< relref "tutorial/high-availability.md" >}}##node-affinity).
-
-## Tolerations
-
-Kubernetes [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)
-can help with the scheduling of Pods to appropriate nodes. There are many
-reasons that a Kubernetes administrator may want to use tolerations, such as
-restricting the types of Pods that can be assigned to particular Nodes.
-Reasoning and strategy for using taints and tolerations is outside the scope of
-this documentation.
-
-You can configure the tolerations for your Postgres instances on the `postgresclusters` custom resource.
-
-## Pod Topology Spread Constraints
-
-Kubernetes [Pod Topology Spread Constraints](https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/)
-can also help you efficiently schedule your workloads by ensuring your Pods are
-not scheduled in only one portion of your Kubernetes cluster. By spreading your
-Pods across your Kubernetes cluster among your various failure-domains, such as
-regions, zones, nodes, and other user-defined topology domains, you can achieve
-high availability as well as efficient resource utilization.
-
-For an example of how pod topology spread constraints work with PGO, please see
-the [high availability tutorial]({{< relref "tutorial/high-availability.md" >}}#pod-topology-spread-constraints).
-
-## Rolling Updates
-
-During the lifecycle of a PostgreSQL cluster, there are certain events that may
-require a planned restart, such as an update to a "restart required" PostgreSQL
-configuration setting (e.g. [`shared_buffers`](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-SHARED-BUFFERS))
-or a change to a Kubernetes Pod template (e.g. [changing the memory request]({{< relref "tutorial/resize-cluster.md">}}#customize-cpu-memory)).
-Restarts can be disruptive in a high availability deployment, which is
-why many setups employ a ["rolling update" strategy](https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-intro/)
-(aka a "rolling restart") to minimize or eliminate downtime during a planned
-restart.
-
-Because PostgreSQL is a stateful application, a simple rolling restart strategy
-will not work: PostgreSQL needs to ensure that there is a primary available that
-can accept reads and writes. This requires following a method that will minimize
-the amount of downtime when the primary is taken offline for a restart.
-
-The PostgreSQL Operator uses the following algorithm to perform the rolling restart to minimize any potential interruptions:
-
-1. Each replica is updated in sequential order. This follows the following
-process:
-
- 1. The replica is explicitly shut down to ensure any outstanding changes are
- flushed to disk.
-
- 2. If requested, the PostgreSQL Operator will apply any changes to the Pod.
-
- 3. The replica is brought back online. The PostgreSQL Operator waits for the
- replica to become available before it proceeds to the next replica.
-
-2. The above steps are repeated until all of the replicas are restarted.
-
-3. A controlled switchover is performed. The PostgreSQL Operator determines
-which replica is the best candidate to become the new primary. It then demotes
-the primary to become a replica and promotes the best candidate to become the
-new primary.
-
-4. The former primary follows a process similar to what is described in step 1.
-
-The downtime is thus constrained to the amount of time the switchover takes.
-
-PGO will automatically detect when to apply a rolling update.
-
-## Pod Disruption Budgets
-
-Pods in a Kubernetes cluster can experience [voluntary disruptions](https://kubernetes.io/docs/concepts/workloads/pods/disruptions/#voluntary-and-involuntary-disruptions)
-as a result of actions initiated by the application owner or a Cluster Administrator. During these
-voluntary disruptions Pod Disruption Budgets (PDBs) can be used to ensure that a minimum number of Pods
-will be running. The operator allows you to define a minimum number of Pods that should be
-available for instance sets and PgBouncer deployments in your postgrescluster. This minimum is
-configured in the postgrescluster spec and will be used to create PDBs associated to a resource defined
-in the spec. For example, the following spec will create two PDBs, one for `instance1` and one for
-the PgBouncer deployment:
-
-```
-spec:
- instances:
- - name: instance1
- replicas: 3
- minAvailable: 1
- proxy:
- pgBouncer:
- replicas: 3
- minAvailable: 1
-```
-
-{{% notice tip %}}
-The `minAvailable` field accepts number (`3`) or string percentage (`50%`) values. For more
-information see [Specifying a PodDisruptionBudget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget).
-{{% /notice %}}
-
-If `minAvailable` is set to `0`, we will not reconcile a PDB for the resource and any existing PDBs
-will be removed. This will effectively disable Pod Disruption Budgets for the resource.
-
-If `minAvailable` is not provided for an object, a default value will be defined based on the
-number of replicas defined for that object. If there is one replica, a PDB will not be created. If
-there is more than one replica defined, a minimum of one Pod will be used.
diff --git a/docs/content/architecture/monitoring.md b/docs/content/architecture/monitoring.md
deleted file mode 100644
index 071ab876a3..0000000000
--- a/docs/content/architecture/monitoring.md
+++ /dev/null
@@ -1,307 +0,0 @@
----
-title: "Monitoring"
-date:
-draft: false
-weight: 130
----
-
-
-
-While having [high availability]({{< relref "architecture/high-availability.md" >}}),
-[backups]({{< relref "architecture/backups.md" >}}), and disaster recovery systems in place helps in the event of something going wrong with your
-PostgreSQL cluster, monitoring helps you anticipate problems before they happen.
-Additionally, monitoring can help you diagnose and resolve additional issues
-that may not result in downtime, but cause degraded performance.
-
-There are many different ways to monitor systems within Kubernetes, including
-tools that come with Kubernetes itself. This is by no means to be a
-comprehensive on how to monitor everything in Kubernetes, but rather what the
-PostgreSQL Operator provides to give you an
-[out-of-the-box monitoring solution]({{< relref "installation/monitoring/_index.md" >}}).
-
-## Getting Started
-
-If you want to install the metrics stack, please visit the [installation]({{< relref "installation/monitoring/_index.md" >}})
-instructions for the [PostgreSQL Operator Monitoring]({{< relref "installation/monitoring/_index.md" >}})
-stack.
-
-## Components
-
-The [PostgreSQL Operator Monitoring]({{< relref "installation/monitoring/_index.md" >}})
-stack is made up of several open source components:
-
-- [pgMonitor](https://github.com/CrunchyData/pgmonitor), which provides the core
-of the monitoring infrastructure including the following components:
- - [postgres_exporter](https://github.com/CrunchyData/pgmonitor/tree/main/postgres_exporter),
- which provides queries used to collect metrics information about a PostgreSQL
- instance.
- - [Prometheus](https://github.com/prometheus/prometheus), a time-series
- database that scrapes and stores the collected metrics so they can be consumed
- by other services.
- - [Grafana](https://github.com/grafana/grafana), a visualization tool that
- provides charting and other capabilities for viewing the collected monitoring
- data.
- - [Alertmanager](https://github.com/prometheus/alertmanager), a tool that
- can send alerts when metrics hit a certain threshold that require someone to
- intervene.
-- [pgnodemx](https://github.com/CrunchyData/pgnodemx), a PostgreSQL extension
-that is able to pull container-specific metrics (e.g. CPU utilization, memory
-consumption) from the container itself via SQL queries.
-
-## pgnodemx and the DownwardAPI
-
-pgnodemx is able to pull and format container-specific metrics by accessing several
-Kubernetes fields that are mounted from the pod to the `database` container's filesystem.
-By default, these fields include the pod's labels and annotations, as well as the
-`database` pod's CPU and memory. These fields are mounted at the `/etc/database-containerinfo`
-path.
-
-## Visualizations
-
-Below is a brief description of all the visualizations provided by the
-[PostgreSQL Operator Monitoring]({{< relref "installation/monitoring/_index.md" >}})
-stack. Some of the descriptions may include some directional guidance on how to
-interpret the charts, though this is only to provide a starting point: actual
-causes and effects of issues can vary between systems.
-
-Many of the visualizations can be broken down based on the following groupings:
-
-- Cluster: which PostgreSQL cluster should be viewed
-- Pod: the specific Pod or PostgreSQL instance
-
-### Overview
-
-
-
-The overview provides an overview of all of the PostgreSQL clusters that are
-being monitoring by the PostgreSQL Operator Monitoring stack. This includes the
-following information:
-
-- The name of the PostgreSQL cluster and the namespace that it is in
-- The type of PostgreSQL cluster (HA [high availability] or standalone)
-- The status of the cluster, as indicate by color. Green indicates the cluster
-is available, red indicates that it is not.
-
-Each entry is clickable to provide additional cluster details.
-
-### PostgreSQL Details
-
-
-
-The PostgreSQL Details view provides more information about a specific
-PostgreSQL cluster that is being managed and monitored by the PostgreSQL
-Operator. These include many key PostgreSQL-specific metrics that help make
-decisions around managing a PostgreSQL cluster. These include:
-
-- Backup Status: The last time a backup was taken of the cluster. Green is good.
-Orange means that a backup has not been taken in more than a day and may warrant
-investigation.
-- Active Connections: How many clients are connected to the database. Too many
-clients connected could impact performance and, for values approaching 100%, can
-lead to clients being unable to connect.
-- Idle in Transaction: How many clients have a connection state of "idle in
-transaction". Too many clients in this state can cause performance issues and,
-in certain cases, maintenance issues.
-- Idle: How many clients are connected but are in an "idle" state.
-- TPS: The number of "transactions per second" that are occurring. Usually needs
-to be combined with another metric to help with analysis. "Higher is better"
-when performing benchmarking.
-- Connections: An aggregated view of active, idle, and idle in transaction
-connections.
-- Database Size: How large databases are within a PostgreSQL cluster. Typically
-combined with another metric for analysis. Helps keep track of overall disk
-usage and if any triage steps need to occur around PVC size.
-- WAL Size: How much space write-ahead logs (WAL) are taking up on disk. This
-can contribute to extra space being used on your data disk, or can give you an
-indication of how much space is being utilized on a separate WAL PVC. If you
-are using replication slots, this can help indicate if a slot is not being
-acknowledged if the numbers are much larger than the `max_wal_size` setting (the
-PostgreSQL Operator does not use slots by default).
-- Row Activity: The number of rows that are selected, inserted, updated, and
-deleted. This can help you determine what percentage of your workload is read
-vs. write, and help make database tuning decisions based on that, in conjunction
-with other metrics.
-- Replication Status: Provides guidance information on how much replication lag
-there is between primary and replica PostgreSQL instances, both in bytes and
-time. This can provide an indication of how much data could be lost in the event
-of a failover.
-
-
-
-- Conflicts / Deadlocks: These occur when PostgreSQL is unable to complete
-operations, which can result in transaction loss. The goal is for these numbers
-to be `0`. If these are occurring, check your data access and writing patterns.
-- Cache Hit Ratio: A measure of how much of the "working data", e.g. data that
-is being accessed and manipulated, resides in memory. This is used to understand
-how much PostgreSQL is having to utilize the disk. The target number of this
-should be as high as possible. How to achieve this is the subject of books, but
-certain takes efforts on your applications use PostgreSQL.
-- Buffers: The buffer usage of various parts of the PostgreSQL system. This can
-be used to help understand the overall throughput between various parts of the
-system.
-- Commit & Rollback: How many transactions are committed and rolled back.
-- Locks: The number of locks that are present on a given system.
-
-### Pod Details
-
-
-
-Pod details provide information about a given Pod or Pods that are being used
-by a PostgreSQL cluster. These are similar to "operating system" or "node"
-metrics, with the differences that these are looking at resource utilization by
-a container, not the entire node.
-
-It may be helpful to view these metrics on a "pod" basis, by using the Pod
-filter at the top of the dashboard.
-
-- Disk Usage: How much space is being consumed by a volume.
-- Disk Activity: How many reads and writes are occurring on a volume.
-- Memory: Various information about memory utilization, including the request
-and limit as well as actually utilization.
-- CPU: The amount of CPU being utilized by a Pod
-- Network Traffic: The amount of networking traffic passing through each network
-device.
-- Container Resources: The CPU and memory limits and requests.
-
-### Backups
-
-
-
-There are a variety of reasons why you need to monitoring your backups, starting
-from answering the fundamental question of "do I have backups available?"
-Backups can be used for a variety of situations, from cloning new clusters to
-restoring clusters after a disaster. Additionally, Postgres can run into issues
-if your backup repository is not healthy, e.g. if it cannot push WAL archives.
-If your backups are set up properly and healthy, you will be set up to mitigate
-the risk of data loss!
-
-The backup, or pgBackRest panel, will provide information about the overall
-state of your backups. This includes:
-
-- Recovery Window: This is an indicator of how far back you are able to restore
-your data from. This represents all of the backups and archives available in
-your backup repository. Typically, your recovery window should be close to your
-overall data retention specifications.
-- Time Since Last Backup: this indicates how long it has been since your last
-backup. This is broken down into pgBackRest backup type (full, incremental,
-differential) as well as time since the last WAL archive was pushed.
-- Backup Runtimes: How long the last backup of a given type (full, incremental
-differential) took to execute. If your backups are slow, consider providing more
-resources to the backup jobs and tweaking pgBackRest's performance tuning
-settings.
-- Backup Size: How large the backups of a given type (full, incremental,
-differential).
-- WAL Stats: Shows the metrics around WAL archive pushes. If you have failing
-pushes, you should to see if there is a transient or permanent error that is
-preventing WAL archives from being pushed. If left untreated, this could end up
-causing issues for your Postgres cluster.
-
-### PostgreSQL Service Health Overview
-
-
-
-The Service Health Overview provides information about the Kubernetes Services
-that sit in front of the PostgreSQL Pods. This provides information about the
-status of the network.
-
-- Saturation: How much of the available network to the Service is being
-consumed. High saturation may cause degraded performance to clients or create
-an inability to connect to the PostgreSQL cluster.
-- Traffic: Displays the number of transactions per minute that the Service is
-handling.
-- Errors: Displays the total number of errors occurring at a particular Service.
-- Latency: What the overall network latency is when interfacing with the
-Service.
-
-### Query Runtime
-
-
-
-Looking at the overall performance of queries can help optimize a Postgres
-deployment, both from [providing resources]({{< relref "tutorial/customize-cluster.md" >}}) to query tuning in the application
-itself.
-
-You can get a sense of the overall activity of a PostgreSQL cluster from the
-chart that is visualized above:
-
-- Queries Executed: The total number of queries executed on a system during the
-period.
-- Query runtime: The aggregate runtime of all the queries combined across the
-system that were executed in the period.
-- Query mean runtime: The average query time across all queries executed on the
-system in the given period.
-- Rows retrieved or affected: The total number of rows in a database that were
-either retrieved or had modifications made to them.
-
-PostgreSQL Operator Monitoring also further breaks down the queries so you can
-identify queries that are being executed too frequently or are taking up too
-much time.
-
-
-
-- Query Mean Runtime (Top N): This highlights the N number of slowest queries by
-average runtime on the system. This might indicate you are missing an index
-somewhere, or perhaps the query could be rewritten to be more efficient.
-- Query Max Runtime (Top N): This highlights the N number of slowest queries by
-absolute runtime. This could indicate that a specific query or the system as a
-whole may need more resources.
-- Query Total Runtime (Top N): This highlights the N of slowest queries by
-aggregate runtime. This could indicate that a ORM is looping over a single query
-and executing it many times that could possibly be rewritten as a single, faster
-query.
-
-### Alerts
-
-
-
-Alerting lets one view and receive alerts about actions that require
-intervention, for example, a HA cluster that cannot self-heal. The alerting
-system is powered by [Alertmanager](https://github.com/prometheus/alertmanager).
-
-The alerts that come installed by default include:
-
-- `PGExporterScrapeError`: The Crunchy PostgreSQL Exporter is having issues
-scraping statistics used as part of the monitoring stack.
-- `PGIsUp`: A PostgreSQL instance is down.
-- `PGIdleTxn`: There are too many connections that are in the
-"idle in transaction" state.
-- `PGQueryTime`: A single PostgreSQL query is taking too long to run. Issues a
-warning at 12 hours and goes critical after 24.
-- `PGConnPerc`: Indicates that there are too many connection slots being used.
-Issues a warning at 75% and goes critical above 90%.
-- `PGDiskSize`: Indicates that a PostgreSQL database is too large and could be in
-danger of running out of disk space. Issues a warning at 75% and goes critical
-at 90%.
-- `PGReplicationByteLag`: Indicates that a replica is too far behind a primary
-instance, which could risk data loss in a failover scenario. Issues a warning at
-50MB an goes critical at 100MB.
-- `PGReplicationSlotsInactive`: Indicates that a replication slot is inactive.
-Not attending to this can lead to out-of-disk errors.
-- `PGXIDWraparound`: Indicates that a PostgreSQL instance is nearing transaction
-ID wraparound. Issues a warning at 50% and goes critical at 75%. It's important
-that you [vacuum your database](https://info.crunchydata.com/blog/managing-transaction-id-wraparound-in-postgresql)
-to prevent this.
-- `PGEmergencyVacuum`: Indicates that autovacuum is not running or cannot keep
-up with ongoing changes, i.e. it's past its "freeze" age. Issues a warning at
-110% and goes critical at 125%.
-- `PGArchiveCommandStatus`: Indicates that the archive command, which is used
-to ship WAL archives to pgBackRest, is failing.
-- `PGSequenceExhaustion`: Indicates that a sequence is over 75% used.
-- `PGSettingsPendingRestart`: Indicates that there are settings changed on a
-PostgreSQL instance that requires a restart.
-
-Optional alerts that can be enabled:
-
-- `PGMinimumVersion`: Indicates if PostgreSQL is below a desired version.
-- `PGRecoveryStatusSwitch_Replica`: Indicates that a replica has been promoted
-to a primary.
-- `PGConnectionAbsent_Prod`: Indicates that metrics collection is absent from a
-PostgresQL instance.
-- `PGSettingsChecksum`: Indicates that PostgreSQL settings have changed from a
-previous state.
-- `PGDataChecksum`: Indicates that there are data checksum failures on a
-PostgreSQL instance. This could be a sign of data corruption.
-
-You can modify these alerts as you see fit, and add your own alerts as well!
-Please see the [installation instructions]({{< relref "installation/monitoring/_index.md" >}})
-for general setup of the PostgreSQL Operator Monitoring stack.
diff --git a/docs/content/architecture/overview.md b/docs/content/architecture/overview.md
deleted file mode 100644
index 3fc5dc8c8a..0000000000
--- a/docs/content/architecture/overview.md
+++ /dev/null
@@ -1,101 +0,0 @@
----
-title: "Overview"
-date:
-draft: false
-weight: 100
----
-
-The goal of PGO, the Postgres Operator from Crunchy Data is to provide a means to quickly get
-your applications up and running on Postgres for both development and
-production environments. To understand how PGO does this, we
-want to give you a tour of its architecture, with explains both the architecture
-of the PostgreSQL Operator itself as well as recommended deployment models for
-PostgreSQL in production!
-
-# PGO Architecture
-
-The Crunchy PostgreSQL Operator extends Kubernetes to provide a higher-level
-abstraction for rapid creation and management of PostgreSQL clusters. The
-Crunchy PostgreSQL Operator leverages a Kubernetes concept referred to as
-"[Custom Resources](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/)”
-to create several
-[custom resource definitions (CRDs)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#customresourcedefinitions)
-that allow for the management of PostgreSQL clusters.
-
-The main custom resource definition is [`postgresclusters.postgres-operator.crunchydata.com`]({{< relref "references/crd.md" >}}). This allows you to control all the information about a Postgres cluster, including:
-
-- General information
-- Resource allocation
-- High availability
-- Backup management
-- Where and how it is deployed (affinity, tolerations, topology spread constraints)
-- Disaster Recovery / standby clusters
-- Monitoring
-
-and more.
-
-PGO itself runs as a Deployment and is composed of a single container.
-
-- `operator` (image: postgres-operator) - This is the heart of the PostgreSQL
-Operator. It contains a series of Kubernetes
-[controllers](https://kubernetes.io/docs/concepts/architecture/controller/) that
-place watch events on a series of native Kubernetes resources (Jobs, Pods) as
-well as the Custom Resources that come with the PostgreSQL Operator (Pgcluster,
-Pgtask)
-
-The main purpose of PGO is to create and update information
-around the structure of a Postgres Cluster, and to relay information about the
-overall status and health of a PostgreSQL cluster. The goal is to also simplify
-this process as much as possible for users. For example, let's say we want to
-create a high-availability PostgreSQL cluster that has multiple replicas,
-supports having backups in both a local storage area and Amazon S3 and has
-built-in metrics and connection pooling, similar to:
-
-
-
-This can be accomplished with a relatively simple manifest. Please refer to the [tutorial]({{< relref "tutorial/_index.md" >}}) for how to accomplish this, or see the [Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repo.
-
-The Postgres Operator handles setting up all of the various StatefulSets, Deployments, Services and other Kubernetes objects.
-
-You will also notice that **high-availability is enabled by default** if you deploy at least one Postgres replica. The
-Crunchy PostgreSQL Operator uses a distributed-consensus method for PostgreSQL
-cluster high-availability, and as such delegates the management of each
-cluster's availability to the clusters themselves. This removes the PostgreSQL
-Operator from being a single-point-of-failure, and has benefits such as faster
-recovery times for each PostgreSQL cluster. For a detailed discussion on
-high-availability, please see the [High-Availability]({{< relref "architecture/high-availability.md" >}})
-section.
-
-## Kubernetes StatefulSets: The PGO Deployment Model
-
-PGO, the Postgres Operator from Crunchy Data, uses [Kubernetes StatefulSets](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/)
-for running Postgres instances, and will use [Deployments](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) for more ephemeral services.
-
-PGO deploys Kubernetes Statefulsets in a way to allow for creating both different Postgres instance groups and be able to support advanced operations such as rolling updates that minimize or eliminate Postgres downtime. Additional components in our
-PostgreSQL cluster, such as the pgBackRest repository or an optional PgBouncer,
-are deployed with Kubernetes Deployments.
-
-With the PGO architecture, we can also leverage Statefulsets to apply affinity and toleration rules across every Postgres instance or individual ones. For instance, we may want to force one or more of our PostgreSQL replicas to run on Nodes in a different region than
-our primary PostgreSQL instances.
-
-What's great about this is that PGO manages this for you so you don't have to worry! Being aware of
-this model can help you understand how the Postgres Operator gives you maximum
-flexibility for your PostgreSQL clusters while giving you the tools to
-troubleshoot issues in production.
-
-The last piece of this model is the use of [Kubernetes Services](https://kubernetes.io/docs/concepts/services-networking/service/)
-for accessing your PostgreSQL clusters and their various components. The
-PostgreSQL Operator puts services in front of each Deployment to ensure you have
-a known, consistent means of accessing your PostgreSQL components.
-
-Note that in some production environments, there can be delays in accessing
-Services during transition events. The PostgreSQL Operator attempts to mitigate
-delays during critical operations (e.g. failover, restore, etc.) by directly
-accessing the Kubernetes Pods to perform given actions.
-
-# Additional Architecture Information
-
-There is certainly a lot to unpack in the overall architecture of PGO. Understanding the architecture will help you to plan
-the deployment model that is best for your environment. For more information on
-the architectures of various components of the PostgreSQL Operator, please read
-onward!
diff --git a/docs/content/architecture/pgadmin4.md b/docs/content/architecture/pgadmin4.md
deleted file mode 100644
index 047db37397..0000000000
--- a/docs/content/architecture/pgadmin4.md
+++ /dev/null
@@ -1,166 +0,0 @@
----
-title: "pgAdmin 4"
-date:
-draft: false
-weight: 900
----
-
-
-
-[pgAdmin 4](https://www.pgadmin.org/) is a popular graphical user interface that
-makes it easy to work with PostgreSQL databases from a web-based client. With
-its ability to manage and orchestrate changes for PostgreSQL users, the PostgreSQL
-Operator is a natural partner to keep a pgAdmin 4 environment synchronized with
-a PostgreSQL environment.
-
-The PostgreSQL Operator lets you deploy a pgAdmin 4 environment alongside a
-PostgreSQL cluster and keeps users' database credentials synchronized. You can
-simply log into pgAdmin 4 with your PostgreSQL username and password and
-immediately have access to your databases.
-
-## Deploying pgAdmin 4
-
-{{% notice warning %}}
-Unfortunately, pgAdmin 4 is not currently compatible with PostgreSQL 15.
-{{% /notice %}}
-
-If you've done the [quickstart]({{< relref "quickstart/_index.md" >}}), add the
-following fields to the spec and reapply; if you don't have any Postgres clusters
-running, add the fields to a spec, and apply.
-
-```yaml
- userInterface:
- pgAdmin:
- image: {{< param imageCrunchyPGAdmin >}}
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-This creates a pgAdmin 4 deployment unique to this PostgreSQL cluster and synchronizes
-the PostgreSQL user information. To access pgAdmin 4, you can set up a port-forward
-to the Service, which follows the pattern `-pgadmin`, to port `5050`:
-
-```
-kubectl port-forward svc/hippo-pgadmin 5050:5050
-```
-
-Point your browser at `http://localhost:5050` and you will be prompted to log in.
-Use your database username with `@pgo` appended and your database password.
-In our case, the pgAdmin username is `hippo@pgo` and the password is found in the
-user secret, `hippo-pguser-hippo`:
-
-```
-PG_CLUSTER_USER_SECRET_NAME=hippo-pguser-hippo
-
-PGPASSWORD=$(kubectl get secrets -n postgres-operator "${PG_CLUSTER_USER_SECRET_NAME}" -o go-template='{{.data.password | base64decode}}')
-PGUSER=$(kubectl get secrets -n postgres-operator "${PG_CLUSTER_USER_SECRET_NAME}" -o go-template='{{.data.user | base64decode}}')
-```
-
-
-
-{{% notice tip %}}
-If your password does not appear to work, you can retry setting up the user by
-rotating the user password. Do this by deleting the `password` data field from
-the user secret (e.g. `hippo-pguser-hippo`).
-
-Optionally, you can also set a [custom password]({{< relref "architecture/user-management.md" >}}).
-{{% /notice %}}
-
-## User Synchronization
-
-The operator will synchronize users [defined in the spec]({{< relref "tutorial/user-management.md" >}})
-(e.g., in [`spec.users`]({{< relref "/references/crd#postgresclusterspecusersindex" >}}))
-with the pgAdmin 4 deployment. Any user created in the database without being defined in the spec will not be
-synchronized.
-
-## Custom Configuration
-
-You can adjust some pgAdmin settings through the
-[`userInterface.pgAdmin.config`]({{< relref "/references/crd#postgresclusterspecuserinterfacepgadminconfig" >}})
-field. For example, set `SHOW_GRAVATAR_IMAGE` to `False` to disable automatic profile pictures:
-
-```yaml
- userInterface:
- pgAdmin:
- config:
- settings:
- SHOW_GRAVATAR_IMAGE: False
-```
-
-You can also mount files to `/etc/pgadmin/conf.d` inside the pgAdmin container using
-[projected volumes](https://kubernetes.io/docs/concepts/storage/projected-volumes/).
-The following mounts `useful.txt` of Secret `mysecret` to `/etc/pgadmin/conf.d/useful.txt`:
-
-```yaml
- userInterface:
- pgAdmin:
- config:
- files:
- - secret:
- name: mysecret
- items:
- - key: useful.txt
- - configMap:
- name: myconfigmap
- optional: false
-```
-
-### Kerberos Configuration
-
-You can configure pgAdmin to [authenticate its users using Kerberos](https://www.pgadmin.org/docs/pgadmin4/latest/kerberos.html)
-SPNEGO. In addition to setting `AUTHENTICATION_SOURCES` and `KRB_APP_HOST_NAME`, you need to
-enable `KERBEROS_AUTO_CREATE_USER` and mount a `krb5.conf` and a keytab file:
-
-```yaml
- userInterface:
- pgAdmin:
- config:
- settings:
- AUTHENTICATION_SOURCES: ['kerberos']
- KERBEROS_AUTO_CREATE_USER: True
- KRB_APP_HOST_NAME: my.service.principal.name.local # without HTTP class
- KRB_KTNAME: /etc/pgadmin/conf.d/krb5.keytab
- files:
- - secret:
- name: mysecret
- items:
- - key: krb5.conf
- - key: krb5.keytab
-```
-
-### LDAP Configuration
-
-You can configure pgAdmin to [authenticate its users using LDAP](https://www.pgadmin.org/docs/pgadmin4/latest/ldap.html)
-passwords. In addition to setting `AUTHENTICATION_SOURCES` and `LDAP_SERVER_URI`, you need to
-enable `LDAP_AUTO_CREATE_USER`:
-
-```yaml
- userInterface:
- pgAdmin:
- config:
- settings:
- AUTHENTICATION_SOURCES: ['ldap']
- LDAP_AUTO_CREATE_USER: True
- LDAP_SERVER_URI: ldaps://my.ds.example.com
-```
-
-When using a dedicated user to bind, you can store the `LDAP_BIND_PASSWORD` setting in a Secret and
-reference it through the [`ldapBindPassword`]({{< relref "/references/crd#postgresclusterspecuserinterfacepgadminconfigldapbindpassword" >}})
-field:
-
-```yaml
- userInterface:
- pgAdmin:
- config:
- ldapBindPassword:
- name: ldappass
- key: mypw
-```
-
-## Deleting pgAdmin 4
-
-You can remove the pgAdmin 4 deployment by removing the `userInterface` field from the spec.
diff --git a/docs/content/architecture/scheduling.md b/docs/content/architecture/scheduling.md
deleted file mode 100644
index de9e248d2f..0000000000
--- a/docs/content/architecture/scheduling.md
+++ /dev/null
@@ -1,107 +0,0 @@
----
-title: "Scheduling"
-date:
-draft: false
-weight: 120
----
-
-Deploying to your Kubernetes cluster may allow for greater reliability than other
-environments, but that's only the case when it's configured correctly. Fortunately,
-PGO, the Postgres Operator from Crunchy Data, is ready to help with helpful
-default settings to ensure you make the most out of your Kubernetes environment!
-
-## High Availability By Default
-
-As shown in the [high availability tutorial]({{< relref "tutorial/high-availability.md" >}}#pod-topology-spread-constraints),
-PGO supports the use of [Pod Topology Spread Constraints](https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/)
-to customize your Pod deployment strategy, but useful defaults are already in place
-for you without any additional configuration required!
-
-PGO's default scheduling constraints for HA is implemented for the various Pods
- comprising a PostgreSQL cluster, specifically to ensure the Operator always
- deploys a High-Availability cluster architecture by default.
-
- Using Pod Topology Spread Constraints, the general scheduling guidelines are as
- follows:
-
-- Pods are only considered from the same cluster.
-- PgBouncer pods are only considered amongst other PgBouncer pods.
-- Postgres pods are considered amongst all Postgres pods and pgBackRest repo host Pods.
-- pgBackRest repo host Pods are considered amongst all Postgres pods and pgBackRest repo hosts Pods.
-- Pods are scheduled across the different `kubernetes.io/hostname` and `topology.kubernetes.io/zone` failure domains.
-- Pods are scheduled when there are fewer nodes than pods, e.g. single node.
-
-With the above configuration, your data is distributed as widely as possible
-throughout your Kubernetes cluster to maximize safety.
-
-## Customization
-
-While the default scheduling settings are designed to meet the widest variety of
-environments, they can be customized or removed as needed. Assuming a PostgresCluster
-named 'hippo', the default Pod Topology Spread Constraints applied on Postgres
-Instance and pgBackRest Repo Host Pods are as follows:
-
-```
-topologySpreadConstraints:
- - maxSkew: 1
- topologyKey: kubernetes.io/hostname
- whenUnsatisfiable: ScheduleAnyway
- labelSelector:
- matchLabels:
- postgres-operator.crunchydata.com/cluster: hippo
- matchExpressions:
- - key: postgres-operator.crunchydata.com/data
- operator: In
- values:
- - postgres
- - pgbackrest
- - maxSkew: 1
- topologyKey: topology.kubernetes.io/zone
- whenUnsatisfiable: ScheduleAnyway
- labelSelector:
- matchLabels:
- postgres-operator.crunchydata.com/cluster: hippo
- matchExpressions:
- - key: postgres-operator.crunchydata.com/data
- operator: In
- values:
- - postgres
- - pgbackrest
-```
-
-Similarly, for PgBouncer Pods they will be:
-
-```
-topologySpreadConstraints:
- - maxSkew: 1
- topologyKey: kubernetes.io/hostname
- whenUnsatisfiable: ScheduleAnyway
- labelSelector:
- matchLabels:
- postgres-operator.crunchydata.com/cluster: hippo
- postgres-operator.crunchydata.com/role: pgbouncer
- - maxSkew: 1
- topologyKey: topology.kubernetes.io/zone
- whenUnsatisfiable: ScheduleAnyway
- labelSelector:
- matchLabels:
- postgres-operator.crunchydata.com/cluster: hippo
- postgres-operator.crunchydata.com/role: pgbouncer
-```
-
-Which, as described in the [API documentation](https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods),
-means that there should be a maximum of one Pod difference within the
-`kubernetes.io/hostname` and `topology.kubernetes.io/zone` failure domains when
-considering either `data` Pods, i.e. Postgres Instance or pgBackRest repo host Pods
-from a single PostgresCluster or when considering PgBouncer Pods from a single
-PostgresCluster.
-
-Any other scheduling configuration settings, such as [Affinity, Anti-affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity),
-[Taints, Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/),
-or other [Pod Topology Spread Constraints](https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/)
-will be added in addition to these defaults. Care should be taken to ensure the
-combined effect of these settings are appropriate for your Kubernetes cluster.
-
-In cases where these defaults are not desired, PGO does provide a method to disable
-the default Pod scheduling by setting the `spec.disableDefaultPodScheduling` to
-'true'.
diff --git a/docs/content/architecture/user-management.md b/docs/content/architecture/user-management.md
deleted file mode 100644
index ed8c75bb2b..0000000000
--- a/docs/content/architecture/user-management.md
+++ /dev/null
@@ -1,111 +0,0 @@
----
-title: "User Management"
-date:
-draft: false
-weight: 125
----
-
-PGO manages PostgreSQL users that you define in [`PostgresCluster.spec.users`]({{< relref "/references/crd#postgresclusterspecusersindex" >}}).
-There, you can list their [role attributes](https://www.postgresql.org/docs/current/role-attributes.html) and which databases they can access.
-
-Below is some information on how the user and database management systems work. To try out some examples, please see the [user and database management]({{< relref "tutorial/user-management.md" >}}) section of the [tutorial]({{< relref "tutorial/_index.md" >}}).
-
-## Understanding Default User Management
-
-When you create a Postgres cluster with PGO and do not specify any additional users or databases, PGO will do the following:
-
-- Create a database that matches the name of the Postgres cluster.
-- Create an unprivileged Postgres user with the name of the cluster. This user has access to the database created in the previous step.
-- Create a Secret with the login credentials and connection details for the Postgres user in relation to the database. This is stored in a Secret named `-pguser-`. These credentials include:
- - `user`: The name of the user account.
- - `password`: The password for the user account.
- - `dbname`: The name of the database that the user has access to by default.
- - `host`: The name of the host of the database.
- This references the [Service](https://kubernetes.io/docs/concepts/services-networking/service/) of the primary Postgres instance.
- - `port`: The port that the database is listening on.
- - `uri`: A [PostgreSQL connection URI](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING)
- that provides all the information for logging into the Postgres database.
- - `jdbc-uri`: A [PostgreSQL JDBC connection URI](https://jdbc.postgresql.org/documentation/use/)
- that provides all the information for logging into the Postgres database via the JDBC driver.
-
-You can see this default behavior in the [connect to a cluster]({{< relref "tutorial/connect-cluster.md" >}}) portion of the tutorial.
-
-As an example, using our `hippo` Postgres cluster, we would see the following created:
-
-- A database named `hippo`.
-- A Postgres user named `hippo`.
-- A Secret named `hippo-pguser-hippo` that contains the user credentials and connection information.
-
-While the above defaults may work for your application, there are certain cases where you may need to customize your user and databases:
-
-- You may require access to the `postgres` superuser.
-- You may need to define privileges for your users.
-- You may need multiple databases in your cluster, e.g. in a multi-tenant application.
-- Certain users may only be able to access certain databases.
-
-## Custom Users and Databases
-
-Users and databases can be customized in the [`spec.users`]({{< relref "/references/crd#postgresclusterspecusersindex" >}}) section of the custom resource. These can be adding during cluster creation and adjusted over time, but it's important to note the following:
-
-- If `spec.users` is set during cluster creation, PGO will **not** create any default users or databases except for `postgres`. If you want additional databases, you will need to specify them.
-- For any users added in `spec.users`, PGO will created a Secret of the format `-pguser-`. This will contain the user credentials.
- - If no databases are specified, `dbname` and `uri` will not be present in the Secret.
- - If at least one `spec.users.databases` is specified, the first database in the list will be populated into the connection credentials.
-- To prevent accidental data loss, PGO does not automatically drop users. We will see how to drop a user below.
-- Similarly, to prevent accidental data loss PGO does not automatically drop databases. We will see how to drop a database below.
-- Role attributes are not automatically dropped if you remove them. You will have to set the inverse attribute to drop them (e.g. `NOSUPERUSER`).
-- The special `postgres` user can be added as one of the custom users; however, the privileges of the users cannot be adjusted.
-
-For specific examples for how to manage users, please see the [user and database management]({{< relref "tutorial/user-management.md" >}}) section of the [tutorial]({{< relref "tutorial/_index.md" >}}).
-
-## Generated Passwords
-
-PGO generates a random password for each Postgres user it creates. Postgres allows almost any character
-in its passwords, but your application may have stricter requirements. To have PGO generate a password
-without special characters, set the `spec.users.password.type` field for that user to `AlphaNumeric`.
-For complete control over a user's password, see the [custom passwords](#custom-passwords) section.
-
-To have PGO generate a new password, remove the existing `password` field from the user _Secret_.
-For example, on a Postgres cluster named `hippo` in the `postgres-operator` namespace with
-a Postgres user named `hippo`, use the following `kubectl patch` command:
-
-```shell
-kubectl patch secret -n postgres-operator hippo-pguser-hippo -p '{"data":{"password":""}}'
-```
-
-## Custom Passwords {#custom-passwords}
-
-There are cases where you may want to explicitly provide your own password for a Postgres user.
-PGO determines the password from an attribute in the user Secret called `verifier`. This contains
-a hashed copy of your password. When `verifier` changes, PGO will load the contents of the verifier
-into your Postgres cluster. This method allows for the secure transmission of the password into the
-Postgres database.
-
-Postgres provides two methods for hashing passwords: SCRAM-SHA-256 and MD5.
-PGO uses the preferred (and as of PostgreSQL 14, default) method, SCRAM-SHA-256.
-
-There are two ways you can set a custom password for a user. You can provide a plaintext password
-in the `password` field and remove the `verifier`. When PGO detects a password without a verifier
-it will generate the SCRAM `verifier` for you. Optionally, you can generate your own password and
-verifier. When both values are found in the user secret PGO will not generate anything. Once the
-password and verifier are found PGO will ensure the provided credential is properly set in postgres.
-
-### Example
-
-For example, let's say we have a Postgres cluster named `hippo` and a Postgres user named `hippo`.
-The Secret then would be called `hippo-pguser-hippo`. We want to set the password for `hippo` to
-be `datalake` and we can achieve this with a simple `kubectl patch` command. The below assumes that
-the Secret is stored in the `postgres-operator` namespace:
-
-```shell
-kubectl patch secret -n postgres-operator hippo-pguser-hippo -p \
- '{"stringData":{"password":"datalake","verifier":""}}'
-```
-
-{{% notice tip %}}
-We can take advantage of the [Kubernetes Secret](https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/secret-v1/#Secret)
-`stringData` field to specify non-binary secret data in string form.
-{{% /notice %}}
-
-PGO generates the SCRAM verifier and applies the updated password to Postgres, and you will be
-able to log in with the password `datalake`.
diff --git a/docs/content/faq/_index.md b/docs/content/faq/_index.md
deleted file mode 100644
index 6f59c11a01..0000000000
--- a/docs/content/faq/_index.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: "FAQ"
-date:
-draft: false
-weight: 105
-
-aliases:
- - /contributing
----
-
-## Project FAQ
-
-### What is The PGO Project?
-
-The PGO Project is the open source project associated with the development of [PGO](https://github.com/CrunchyData/postgres-operator), the [Postgres Operator](https://github.com/CrunchyData/postgres-operator) for Kubernetes from [Crunchy Data](https://www.crunchydata.com).
-
-PGO is a [Kubernetes Operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/), providing a declarative solution for managing your PostgreSQL clusters. Within a few moments, you can have a Postgres cluster complete with high availability, disaster recovery, and monitoring, all over secure TLS communications.
-
-PGO is the upstream project from which [Crunchy PostgreSQL for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/) is derived. You can find more information on Crunchy PostgreSQL for Kubernetes [here](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/).
-
-### What’s the difference between PGO and Crunchy PostgreSQL for Kubernetes?
-
-PGO is the Postgres Operator from Crunchy Data. It developed pursuant to the PGO Project and is designed to be a frequently released, fast-moving project where all new development happens.
-
-[Crunchy PostgreSQL for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/) is produced by taking selected releases of PGO, combining them with Crunchy Certified PostgreSQL and PostgreSQL containers certified by Crunchy Data, maintained for commercial support, and made available to customers as the Crunchy PostgreSQL for Kubernetes offering.
-
-### Where can I find support for PGO?
-
-The community can help answer questions about PGO via the [PGO mailing list](https://groups.google.com/a/crunchydata.com/forum/#!forum/postgres-operator/join).
-
-Information regarding support for PGO is available in the [Support]({{< relref "support/_index.md" >}}) section of the PGO documentation, which you can find [here]({{< relref "support/_index.md" >}}).
-
-For additional information regarding commercial support and Crunchy PostgreSQL for Kubernetes, you can [contact Crunchy Data](https://www.crunchydata.com/contact/).
-
-### Under which open source license is PGO source code available?
-
-The PGO source code is available under the [Apache License 2.0](https://github.com/CrunchyData/postgres-operator/blob/master/LICENSE.md).
-
-### Where are the release tags for PGO v5?
-
-With PGO v5, we've made some changes to our overall process. Instead of providing quarterly release
-tags as we did with PGO v4, we're focused on ongoing active development in the v5 primary
-development branch (`master`, which will become `main`). Consistent with our practices in v4,
-previews of stable releases with the release tags are made available in the
-[Crunchy Data Developer Portal](https://www.crunchydata.com/developers).
-
-These changes allow for more rapid feature development and releases in the upstream PGO project,
-while providing
-[Crunchy Postgres for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/)
-users with stable releases for production use.
-
-To the extent you have constraints specific to your use, please feel free to reach out on
-[info@crunchydata.com](mailto:info@crunchydata.com) to discuss how we can address those
-specifically.
-
-### How can I get involved with the PGO Project?
-
-PGO is developed by the PGO Project. The PGO Project that welcomes community engagement and contribution.
-
-The PGO source code and community issue trackers are hosted at [GitHub](https://github.com/CrunchyData/postgres-operator).
-
-For community questions and support, please sign up for the [PGO mailing list](https://groups.google.com/a/crunchydata.com/forum/#!forum/postgres-operator/join).
-
-For information regarding contribution, please review the contributor guide [here](https://github.com/CrunchyData/postgres-operator/blob/master/CONTRIBUTING.md).
-
-Please register for the [Crunchy Data Developer Portal mailing list](https://www.crunchydata.com/developers/newsletter) to receive updates regarding Crunchy PostgreSQL for Kubernetes releases and the [Crunchy Data newsletter](https://www.crunchydata.com/newsletter/) for general updates from Crunchy Data.
-
-### Where do I report a PGO bug?
-
-The PGO Project uses GitHub for its [issue tracking](https://github.com/CrunchyData/postgres-operator/issues/new/choose). You can file your issue [here](https://github.com/CrunchyData/postgres-operator/issues/new/choose).
-
-### How often is PGO released?
-
-The PGO team currently plans to release new builds approximately every few weeks. The PGO team will flag certain builds as “stable” at their discretion. Note that the term “stable” does not imply fitness for production usage or any kind of warranty whatsoever.
diff --git a/docs/content/guides/_index.md b/docs/content/guides/_index.md
deleted file mode 100644
index ec165cc4ff..0000000000
--- a/docs/content/guides/_index.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-title: "Guides"
-date:
-draft: false
-weight: 35
----
-
-This section contains guides on handling various scenarios when managing Postgres clusters using PGO, the Postgres Operator. These include step-by-step instructions for situations such as migrating data to a PGO managed Postgres cluster or upgrading from an older version of PGO.
-
-These guides are in no particular order: choose the guide that is most applicable to your situation.
-
-If you are looking for how to manage most day-to-day Postgres scenarios, we recommend first going through the [Tutorial]({{< relref "tutorial/_index.md" >}}).
diff --git a/docs/content/guides/data-migration.md b/docs/content/guides/data-migration.md
deleted file mode 100644
index 8752cb111c..0000000000
--- a/docs/content/guides/data-migration.md
+++ /dev/null
@@ -1,132 +0,0 @@
----
-title: "Migrate Data Volumes to New Clusters"
-date:
-draft: false
-weight: 105
----
-
-There are certain cases where you may want to migrate existing volumes to a new cluster. If so, read on for an in depth look at the steps required.
-
-## Configure your PostgresCluster CRD
-
-In order to use existing pgData, pg_wal or pgBackRest repo volumes in a new PostgresCluster, you will need to configure the `spec.dataSource.volumes` section of your PostgresCluster CRD. As shown below, there are three possible volumes you may configure, `pgDataVolume`, `pgWALVolume` and `pgBackRestVolume`. Under each, you must define the PVC name to use in the new cluster. A directory may also be defined, as needed, for cases where the existing directory name does not match the v5 directory.
-
-To help explain how these fields are used, we will consider a `pgcluster` from PGO v4, `oldhippo`. We will assume that the `pgcluster` has been deleted and only the PVCs have been left in place.
-
-**Please note that any differences in configuration or other datasources will alter this procedure significantly and that certain storage options require additional steps (see *Considerations* below)!**
-
-In a standard PGO v4.7 cluster, a primary database pod with a separate pg_wal PVC will mount its pgData PVC, named "oldhippo", at `/pgdata` and its pg_wal PVC, named "oldhippo-wal", at `/pgwal` within the pod's file system. In this pod, the standard pgData directory will be `/pgdata/oldhippo` and the standard pg_wal directory will be `/pgwal/oldhippo-wal`. The pgBackRest repo pod will mount its PVC at `/backrestrepo` and the repo directory will be `/backrestrepo/oldhippo-backrest-shared-repo`.
-
-With the above in mind, we need to reference the three PVCs we wish to migrate in the `dataSource.volumes` portion of the PostgresCluster spec. Additionally, to accommodate the PGO v5 file structure, we must also reference the pgData and pgBackRest repo directories. Note that the pg_wal directory does not need to be moved when migrating from v4 to v5!
-
-Now, we just need to populate our CRD with the information described above:
-
-```
-spec:
- dataSource:
- volumes:
- pgDataVolume:
- pvcName: oldhippo
- directory: oldhippo
- pgWALVolume:
- pvcName: oldhippo-wal
- pgBackRestVolume:
- pvcName: oldhippo-pgbr-repo
- directory: oldhippo-backrest-shared-repo
-```
-
-Lastly, it is very important that the PostgreSQL version and storage configuration in your PostgresCluster match *exactly* the existing volumes being used.
-
-If the volumes were used with PostgreSQL 13, the `spec.postgresVersion` value should be `13` and the associated `spec.image` value should refer to a PostgreSQL 13 image.
-
-Similarly, the configured data volume definitions in your PostgresCluster spec should match your existing volumes. For example, if the existing pgData PVC has a RWO access mode and is 1 Gigabyte, the relevant `dataVolumeClaimSpec` should be configured as
-
-```
-dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1G
-```
-
-With the above configuration in place, your existing PVC will be used when creating your PostgresCluster. They will be given appropriate Labels and ownership references, and the necessary directory updates will be made so that your cluster is able to find the existing directories.
-
-## Considerations
-
-### Removing PGO v4 labels
-
-When migrating data volumes from v4 to v5, PGO relabels all volumes for PGO v5, but **will not remove existing PGO v4 labels**. This results in PVCs that are labeled for both PGO v4 and v5, which can lead to unintended behavior.
-
-To avoid that, you must manually remove the `pg-cluster` and `vendor` labels, which you can do with a `kubectl` command. For instance, given a cluster named `hippo` with a dedicated pgBackRest repo, the PVC will be `hippo-pgbr-repo`, and the PGO v4 labels can be removed with the below command:
-
-```
-kubectl label pvc hippo-pgbr-repo \
- pg-cluster- \
- vendor-
-```
-
-### Proper file permissions for certain storage options
-
-Additional steps are required to set proper file permissions when using certain storage options, such as NFS and HostPath storage due to a known issue with how fsGroups are applied.
-
-When migrating from PGO v4, this will require the user to manually set the group value of the pgBackRest repo directory, and all subdirectories, to `26` to match the `postgres` group used in PGO v5. Please see [here](https://github.com/kubernetes/examples/issues/260) for more information.
-
-### Additional Considerations
-
-- An existing pg_wal volume is not required when the pg_wal directory is located on the same PVC as the pgData directory.
-- When using existing pg_wal volumes, an existing pgData volume **must** also be defined to ensure consistent naming and proper bootstrapping.
-- When migrating from PGO v4 volumes, it is recommended to use the most recently available version of PGO v4.
-- As there are many factors that may impact this procedure, it is strongly recommended that a test run be completed beforehand to ensure successful operation.
-
-## Putting it all together
-
-Now that we've identified all of our volumes and required directories, we're ready to create our new cluster!
-
-Below is a complete PostgresCluster that includes everything we've talked about. After your `PostgresCluster` is created, you should remove the `spec.dataSource.volumes` section.
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: oldhippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- dataSource:
- volumes:
- pgDataVolume:
- pvcName: oldhippo
- directory: oldhippo
- pgWALVolume:
- pvcName: oldhippo-wal
- pgBackRestVolume:
- pvcName: oldhippo-pgbr-repo
- directory: oldhippo-backrest-shared-repo
- instances:
- - name: instance1
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1G
- walVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1G
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1G
-```
diff --git a/docs/content/guides/extension-management.md b/docs/content/guides/extension-management.md
deleted file mode 100644
index 8d84277d10..0000000000
--- a/docs/content/guides/extension-management.md
+++ /dev/null
@@ -1,120 +0,0 @@
----
-title: "Extension Management"
-date:
-draft: false
-weight: 175
----
-
-[Extensions](https://www.postgresql.org/docs/current/external-extensions.html) combine functions, data types, casts, etc. -- everything you need
-to add some new feature to PostgreSQL in an easy to install package. How easy to install?
-For many extensions, like the `fuzzystrmatch` extension, it's as easy as connecting to the database and running a command like this:
-
-```
-CREATE EXTENSION fuzzystrmatch;
-```
-
-However, in other cases, an extension might require additional configuration management.
-PGO lets you add those configurations to the `PostgresCluster` spec easily.
-
-
-PGO also allows you to add a custom databse initialization script in case you would like to
-automate how and where the extension is installed.
-
-
-This guide will walk through adding custom configuration for an extension and
-automating installation, using the example of Crunchy Data's own `pgnodemx` extension.
-
-- [pgnodemx](#pgnodemx)
-
-## `pgnodemx`
-
-[`pgnodemx`](https://github.com/CrunchyData/pgnodemx) is a PostgreSQL extension
-that is able to pull container-specific metrics (e.g. CPU utilization, memory
-consumption) from the container itself via SQL queries.
-
-In order to do this, `pgnodemx` requires information from the Kubernetes [DownwardAPI](https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/)
-to be mounted on the PostgreSQL pods. Please see the `pgnodemx and the DownwardAPI`
-section of the [backup architecture]({{< relref "architecture/backups.md" >}}) page for more information on
-where and how the DownwardAPI is mounted.
-
-### `pgnodemx` Configuration
-
-To enable the `pgnodemx` extension, we need to set certain configurations. Luckily,
-this can all be done directly through the spec:
-
-```yaml
-spec:
- patroni:
- dynamicConfiguration:
- postgresql:
- parameters:
- shared_preload_libraries: pgnodemx
- pgnodemx.kdapi_enabled: on
- pgnodemx.kdapi_path: /etc/database-containerinfo
-```
-
-Those three settings will
-
-* load `pgnodemx` at start;
-* enable the `kdapi` functions (which are specific to the capture of Kubernetes DownwardAPI information);
-* tell `pgnodemx` where those DownwardAPI files are mounted (at the `/etc/dabatase-containerinfo` path).
-
-If you create a `PostgresCluster` with those configurations, you will be able to connect,
-create the extension in a database, and run the functions installed by that extension:
-
-```
-CREATE EXTENSION pgnodemx;
-SELECT * FROM proc_diskstats();
-```
-
-### Automating `pgnodemx` Creation
-
-Now that you know how to configure `pgnodemx`, let's say you want to automate the creation of
-the extension in a particular database, or in all databases. We can do that through
-a custom database initialization.
-
-First, we have to create a ConfigMap with the initialization SQL. Let's start with the
-case where we want `pgnodemx` created for us in the `hippo` database. Our initialization
-SQL file might be named `init.sql` and look like this:
-
-```
-\c hippo\\
-CREATE EXTENSION pgnodemx;
-```
-
-Now we create the ConfigMap from that file in the same namespace as our PostgresCluster will be created:
-
-```shell
-kubectl create configmap hippo-init-sql -n postgres-operator --from-file=init.sql=path/to/init.sql
-```
-
-You can check that the ConfigMap was created and has the right information:
-
-```shell
-kubectl get configmap -n postgres-operator hippo-init-sql -o yaml
-
-apiVersion: v1
-data:
- init.sql: |-
- \c hippo\\
- CREATE EXTENSION pgnodemx;
-kind: ConfigMap
-metadata:
- name: hippo-init-sql
- namespace: postgres-operator
-```
-
-Now, in addition to the spec changes we made above to allow `pgnodemx` to run,
-we add that ConfigMap's information to the PostgresCluster spec: the name of the
-ConfigMap (`hippo-init-sql`) and the key for the data (`init.sql`):
-
-```yaml
-spec:
- databaseInitSQL:
- key: init.sql
- name: hippo-init-sql
-```
-
-Apply that spec to a new or existing PostgresCluster, and the pods should spin up with
-`pgnodemx` already installed in the `hippo` database.
-
diff --git a/docs/content/guides/huge-pages.md b/docs/content/guides/huge-pages.md
deleted file mode 100644
index 7dce29b6d8..0000000000
--- a/docs/content/guides/huge-pages.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-title: "Huge Pages"
-date:
-draft: false
-weight: 100
----
-
-# Huge Pages
-
-Huge Pages, a.k.a. "Super Pages" or "Large Pages", are larger chunks of memory that can speed up your system. Normally, the chunks of memory, or "pages", used by the CPU are 4kB in size. The more memory a process needs, the more pages the CPU needs to manage. By using larger pages, the CPU can manage fewer pages and increase its efficiency. For this reason, it is generally recommended to use Huge Pages with your Postgres databases.
-
-# Configuring Huge Pages with PGO
-
-To turn Huge Pages on with PGO, you first need to have Huge Pages turned on at the OS level. This means having them enabled, and a specific number of pages preallocated, on the node(s) where you plan to schedule your pods. All processes that run on a given node and request Huge pages will be sharing this pool of pages, so it is important to allocate enough pages for all the different processes to get what they need. This system/kube-level configuration is outside the scope of this document, since the way that Huge Pages are configured at the OS/node level is dependent on your Kube environment. Consult your Kube environment documentation and any IT support you have for assistance with this step.
-
-When you enable Huge Pages in your Kube cluster, it is important to keep a few things in mind during the rest of the configuration process:
-1. What size of Huge Pages are enabled? If there are multiple sizes enabled, which one is the default? Which one do you want Postgres to use?
-2. How many pages were preallocated? Are there any other applications or processes that will be using these pages?
-3. Which nodes have Huge Pages enabled? Is it possible that more nodes will be added to the cluster? If so, will they also have Huge Pages enabled?
-
-Once Huge Pages are enabled on one or more nodes in your Kubernetes cluster, you can tell Postgres to start using them by adding some configuration to your PostgresCluster spec:
-
-{{% notice warning %}}
-Warning: setting/changing this setting will cause your database to restart.
-{{% /notice %}}
-
-```yaml
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - name: instance1
- resources:
- limits:
- hugepages-2Mi: 16Mi
- memory: 4Gi
-```
-
-This is where it is important to know the size and the number of Huge Pages available. In the spec above, the `hugepages-2Mi` line indicates that we want to use 2MiB sized pages. If your system only has 1GiB sized pages available, then you will want to use `hugepages-1Gi` as the setting instead. The value after it, `16Mi` in our example, determines the amount of pages to be allocated to this Postgres instance. If you have multiple instances, you will need to enable/allocate Huge Pages on an instance by instance basis. Keep in mind that if you have a "Highly Available" cluster, meaning you have multiple replicas, each replica will also request Huge Pages. You therefore need to be cognizant of the total amount of Huge Pages available on the node(s) and the amount your cluster is requesting. If you request more pages than are available, you might see some replicas/instances fail to start.
-
-Note: In the `instances.#.resources` spec, there are `limits` and `requests`. If a request value is not specified (like in the example above), it is presumed to be equal to the limit value. For Huge Pages, the request value must always be equal to the limit value, therefore, it is perfectly acceptable to just specify it in the `limits` section.
-
-Note: Postgres uses the system default size by default. This means that if there are multiple sizes of Huge Pages available on the node(s) and you attempt to use a size in your PostgresCluster that is not the system default, it will fail. To use a non-default size you will need to tell Postgres the size to use with the `huge_page_size` variable, which can be set via dynamic configuration:
-
-{{% notice warning %}}
-Warning: setting/changing this parameter will cause your database to restart.
-{{% /notice %}}
-
-```yaml
-patroni:
- dynamicConfiguration:
- postgresql:
- parameters:
- huge_page_size: 1GB
-```
-
-# The Kubernetes Issue
-
-There is an issue in Kubernetes where essentially, if Huge Pages are available on a node, it will tell the processes running in the pods on that node that it has Huge Pages available even if the pod has not actually requested any Huge Pages. This is an issue because by default, Postgres is set to "try" to use Huge Pages. When Postgres is led to believe that Huge Pages are available and it attempts to use Huge Pages only to find that the pod doesn't actually have any Huge Pages allocated since they were never requested, Postgres will fail.
-
-We have worked around this issue by setting `huge_pages = off` in our newest Crunchy Postgres images. PGO will automatically turn `huge_pages` back to `try` whenever Huge Pages are requested in the resources spec. Those who were already happily using Huge Pages will be unaffected, and those who were not using Huge Pages, but were attempting to run their Postgres containers on nodes that have Huge Pages enabled, will no longer see their databases crash.
-
-The only dilemma that remains is that those whose PostgresClusters are not using Huge Pages, but are running on nodes that have Huge Pages enabled, will see their `shared_buffers` set to their lowest possible setting. This is due to the way that Postgres' `initdb` works when bootstrapping a database. There are few ways to work around this issue:
-
-1. Use Huge Pages! You're already running your Postgres containers on nodes that have Huge Pages enabled, why not use them in Postgres?
-2. Create nodes in your Kubernetes cluster that don't have Huge Pages enabled, and put your Postgres containers on those nodes.
-3. If for some reason you cannot use Huge Pages in Postgres, but you must run your Postgres containers on nodes that have Huge Pages enabled, you can manually set the `shared_buffers` parameter back to a good setting using dynamic configuration:
-
-{{% notice warning %}}
-Warning: setting/changing this parameter will cause your database to restart.
-{{% /notice %}}
-
-```yaml
-patroni:
- dynamicConfiguration:
- postgresql:
- parameters:
- shared_buffers: 128MB
-```
diff --git a/docs/content/guides/logical-replication.md b/docs/content/guides/logical-replication.md
deleted file mode 100644
index 649db6ae7b..0000000000
--- a/docs/content/guides/logical-replication.md
+++ /dev/null
@@ -1,173 +0,0 @@
----
-title: "Logical Replication"
-date:
-draft: false
-weight: 150
----
-
-[Logical replication](https://www.postgresql.org/docs/current/logical-replication.html) is a Postgres feature that provides a convenient way for moving data between databases, particularly Postgres clusters that are in an active state.
-
-You can set up your PGO managed Postgres clusters to use logical replication. This guide provides an example for how to do so.
-
-## Set Up Logical Replication
-
-This example creates two separate Postgres clusters named `hippo` and `rhino`. We will logically replicate data from `rhino` to `hippo`. We can create these two Postgres clusters using the manifests below:
-
-```
----
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
----
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: rhino
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- users:
- - name: logic
- databases:
- - zoo
- options: "REPLICATION"
-```
-
-The key difference between the two Postgres clusters is this section in the `rhino` manifest:
-
-```
-users:
- - name: logic
- databases:
- - zoo
- options: "REPLICATION"
-```
-
-This creates a database called `zoo` and a user named `logic` with `REPLICATION` privileges. This will allow for replicating data logically to the `hippo` Postgres cluster.
-
-Create these two Postgres clusters. When the `rhino` cluster is ready, [log into the `zoo` database]({{< relref "tutorial/connect-cluster.md" >}}). For convenience, you can use the `kubectl exec` method of logging in:
-
-```
-kubectl exec -it -n postgres-operator -c database \
- $(kubectl get pods -n postgres-operator --selector='postgres-operator.crunchydata.com/cluster=rhino,postgres-operator.crunchydata.com/role=master' -o name) -- psql zoo
-```
-
-Let's create a simple table called `abc` that contains just integer data. We will also populate this table:
-
-```
-CREATE TABLE abc (id int PRIMARY KEY);
-INSERT INTO abc SELECT * FROM generate_series(1,10);
-```
-
-We need to grant `SELECT` privileges to the `logic` user in order for it to perform an initial data synchronization during logical replication. You can do so with the following command:
-
-```
-GRANT SELECT ON abc TO logic;
-```
-
-Finally, create a [publication](https://www.postgresql.org/docs/current/logical-replication-publication.html) that allows for the replication of data from `abc`:
-
-```
-CREATE PUBLICATION zoo FOR ALL TABLES;
-```
-
-Quit out of the `rhino` Postgres cluster.
-
-For the next step, you will need to get the connection information for how to connection as the `logic` user to the `rhino` Postgres database. You can get the key information from the following commands, which return the hostname, username, and password:
-
-```
-kubectl -n postgres-operator get secrets rhino-pguser-logic -o jsonpath={.data.host} | base64 -d
-kubectl -n postgres-operator get secrets rhino-pguser-logic -o jsonpath={.data.user} | base64 -d
-kubectl -n postgres-operator get secrets rhino-pguser-logic -o jsonpath={.data.password} | base64 -d
-```
-
-The host will be something like `rhino-primary.postgres-operator.svc` and the user will be `logic`. Further down, the guide references the password as ``. You can substitute the actual password there.
-
-Log into the `hippo` Postgres cluster. Note that we are logging into the `postgres` database within the `hippo` cluster:
-
-```
-kubectl exec -it -n postgres-operator -c database \
- $(kubectl get pods -n postgres-operator --selector='postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/role=master' -o name) -- psql
-```
-
-Create a table called `abc` that is identical to the table in the `rhino` database:
-
-```
-CREATE TABLE abc (id int PRIMARY KEY);
-```
-
-Finally, create a [subscription](https://www.postgresql.org/docs/current/logical-replication-subscription.html) that will manage the data replication from `rhino` into `hippo`:
-
-```
-CREATE SUBSCRIPTION zoo
- CONNECTION 'host=rhino-primary.postgres-operator.svc user=logic dbname=zoo password='
- PUBLICATION zoo;
-```
-
-In a few moments, you should see the data replicated into your table:
-
-```
-TABLE abc;
-```
-
-which yields:
-
-```
- id
-----
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
-(10 rows)
-```
-
-You can further test that logical replication is working by modifying the data on `rhino` in the `abc` table, and the verifying that it is replicated into `hippo`.
diff --git a/docs/content/guides/major-postgres-version-upgrade.md b/docs/content/guides/major-postgres-version-upgrade.md
deleted file mode 100644
index da63a1a31f..0000000000
--- a/docs/content/guides/major-postgres-version-upgrade.md
+++ /dev/null
@@ -1,177 +0,0 @@
----
-title: "Postgres Major Version Upgrade"
-date:
-draft: false
-weight: 100
----
-
-You can perform a PostgreSQL major version upgrade declaratively using PGO! The below guide will show you how you can upgrade Postgres to a newer major version. For minor updates, i.e. applying a bug fix release, you can follow the [applying software updates]({{< relref "/tutorial/update-cluster.md" >}}) guide in the [tutorial]({{< relref "/tutorial/_index.md" >}}).
-
-Note that major version upgrades are **permanent**: you cannot roll back a major version upgrade through declarative management at this time. If this is an issue, we recommend keeping a copy of your Postgres cluster running your previous version of Postgres.
-
-{{% notice warning %}}
-**Please note the following prior to performing a PostgreSQL major version upgrade:**
-- Any Postgres cluster being upgraded must be in a healthy state in order for the upgrade to
-complete successfully. If the cluster is experiencing issues such as Pods that are not running
-properly, or any other similar problems, those issues must be addressed before proceeding.
-- Major PostgreSQL version upgrades of PostGIS clusters are not currently supported.
-{{% /notice %}}
-
-## Step 1: Take a Full Backup
-
-Before starting your major upgrade, you should take a new full [backup]({{< relref "tutorial/backup-management.md" >}}) of your data. This adds another layer of protection in cases where the upgrade process does not complete as expected.
-
-At this point, your running cluster is ready for the major upgrade.
-
-## Step 2: Configure the Upgrade Parameters through a PGUpgrade object
-
-The next step is to create a `PGUpgrade` resource. This is the resource that tells the PGO-Upgrade controller which cluster to upgrade, what version to upgrade from, and what version to upgrade to. There are other optional fields to fill in as well, such as `Resources` and `Tolerations`; to learn more about these optional fields, check out the [Upgrade CRD API]({{< relref "references/crd.md" >}}).
-
-For instance, if you have a Postgres cluster named `hippo` running PG {{< param fromPostgresVersion >}} but want to upgrade it to PG {{< param postgresVersion >}}, the corresponding `PGUpgrade` manifest would look like this:
-
-```yaml
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PGUpgrade
-metadata:
- name: hippo-upgrade
-spec:
- image: {{< param imageCrunchyPGUpgrade >}}
- postgresClusterName: hippo
- fromPostgresVersion: {{< param fromPostgresVersion >}}
- toPostgresVersion: {{< param postgresVersion >}}
-```
-
-The `postgresClusterName` gives the name of the target Postgres cluster to upgrade and `toPostgresVersion` gives the version to update to. It may seem unnecessary to include the `fromPostgresVersion`, but that is one of the safety checks we have built into the upgrade process: in order to successfully upgrade a Postgres cluster, you have to know what version you mean to be upgrading from.
-
-One very important thing to note: upgrade objects should be made in the same namespace as the Postgres cluster that you mean to upgrade. For security, the PGO-Upgrade controller does not allow for cross-namespace processes.
-
-If you look at the status of the `PGUpgrade` object at this point, you should see a condition saying this:
-
-```
-type: "progressing",
-status: "false",
-reason: "PGClusterNotShutdown",
-message: "PostgresCluster instances still running",
-```
-
-What that means is that the upgrade process is blocked because the cluster is not yet shutdown. We are stuck ("progressing" is false) until we shutdown the cluster. So let's go ahead and do that now.
-
-## Step 3: Shutdown and Annotate the Cluster
-
-In order to kick off the upgrade process, you need to shutdown the cluster and add an annotation to the cluster signalling which PGUpgrade to run.
-
-Why do we need to add an annotation to the cluster if the PGUpgrade already has the cluster's name? This is another security mechanism--think of it as a two-key nuclear system: the `PGUpgrade` has to know which Postgres cluster to upgrade; and the Postgres cluster has to allow this upgrade to work on it.
-
-The annotation to add is `postgres-operator.crunchydata.com/allow-upgrade`, with the name of the `PGUpgrade` object as the value. So for our example above with a Postgres cluster named `hippo` and a `PGUpgrade` object named `hippo-upgrade`, we could annotate the cluster with the command
-
-```bash
-kubectl -n postgres-operator annotate postgrescluster hippo postgres-operator.crunchydata.com/allow-upgrade="hippo-upgrade"
-```
-
-To shutdown the cluster, edit the `spec.shutdown` field to true and reapply the spec with `kubectl`. For example, if you used the [tutorial]({{< relref "tutorial/_index.md" >}}) to [create your Postgres cluster]({{< relref "tutorial/create-cluster.md" >}}), you would run the following command:
-
-```
-kubectl -n postgres-operator apply -k kustomize/postgres
-```
-
-(Note: you could also change the annotation at the same time as you shutdown the cluster; the purpose of demonstrating how to annotate was primarily to show what the label would look like.)
-
-## Step 4: Watch and wait
-
-When the last Postgres Pod is terminated, the PGO-Upgrade process will kick into action, upgrading the primary database and preparing the replicas. If you are watching the namespace, you will see the PGUpgrade controller start Pods for each of those actions. But you don't have to watch the namespace to keep track of the upgrade process.
-
-To keep track of the process and see when it finishes, you can look at the `status.conditions` field of the `PGUpgrade` object. If the upgrade process encounters any blockers preventing it from finishing, the `status.conditions` field will report on those blockers. When it finishes upgrading the cluster, it will show the status conditions:
-
-```
-type: "Progressing"
-status: "false"
-reason: "PGUpgradeCompleted"
-
-type: "Succeeded"
-status: "true"
-reason: "PGUpgradeSucceeded"
-```
-
-You can also check the Postgres cluster itself to see when the upgrade has completed. When the upgrade is complete, the cluster will show the new version in its `status.postgresVersion` field.
-
-If the process encounters any errors, the upgrade process will stop to prevent further data loss; and the `PGUpgrade` object will report the failure in its status. For more specifics about the failure, you can check the logs of the individual Pods that were doing the upgrade jobs.
-
-## Step 5: Restart your Postgres cluster with the new version
-
-Once the upgrade process is complete, you can erase the `PGUpgrade` object, which will clean up any Jobs and Pods that were created during the upgrade. But as long as the process completed successfully, that `PGUpgrade` object will remain inert. If you find yourself needing to upgrade the cluster again, you will not be able to edit the existing `PGUpgrade` object with the new versions, but will have to create a new `PGUpgrade` object. Again, this is a safety mechanism to make sure that any PGUpgrade can only be run once.
-
-Likewise, you may remove the annotation on the Postgres cluster as part of the cleanup. While not necessary, it is recommended to leave your cluster without unnecessary annotations.
-
-To restart your newly upgraded Postgres cluster, you will have to update the `spec.postgresVersion` to the new version. You may also have to update the `spec.image` value to reflect the image you plan to use if that field is already filled in. Turn `spec.shutdown` to false, and PGO will restart your cluster:
-
-```
-spec:
- shutdown: false
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
-```
-
-{{% notice warning %}}
-Setting and applying the `postgresVersion` or `image` values before the upgrade will result in the upgrade process being rejected.
-{{% /notice %}}
-
-## Step 6: Complete the Post-Upgrade Tasks
-
-After the upgrade Job has completed, there will be some amount of post-upgrade processing that
-needs to be done. During the upgrade process, the upgrade Job, via [`pg_upgrade`](https://www.postgresql.org/docs/current/pgupgrade.html), will issue warnings and possibly create scripts to perform post-upgrade tasks. You can see the full output of the upgrade Job by running a command similar to this:
-
-```
-kubectl -n postgres-operator logs hippo-pgupgrade-abcd
-```
-
-While the scripts are placed on the Postgres data PVC, you may not have access to them. The below information describes what each script does and how you can execute them.
-
-In Postgres 13 and older, `pg_upgrade` creates a script called `analyze_new_cluster.sh` to perform a post-upgrade analyze using [`vacuumdb`](https://www.postgresql.org/docs/current/app-vacuumdb.html) on the database.
-
-The script provides two ways of doing so:
-
-```
-vacuumdb --all --analyze-in-stages
-```
-
-or
-
-```
-vacuumdb --all --analyze-only
-```
-
-Note that these commands need to be run as a Postgres superuser (e.g. `postgres`). For more information on the difference between the options, please see the documentation for [`vacuumdb`](https://www.postgresql.org/docs/current/app-vacuumdb.html).
-
-If you are unable to exec into the Pod, you can run `ANALYZE` directly on each of your databases.
-
-`pg_upgrade` may also create a script called `delete_old_cluster.sh`, which contains the equivalent of
-
-```
-rm -rf '/pgdata/pg{{< param fromPostgresVersion >}}'
-```
-
-When you are satisfied with the upgrade, you can execute this command to remove the old data directory. Do so at your discretion.
-
-Note that the `delete_old_cluster.sh` script does not delete the old WAL files. These are typically found in `/pgdata/pg{{< param fromPostgresVersion >}}_wal`, although they can be stored elsewhere. If you would like to delete these files, this must be done manually.
-
-If you have extensions installed you may need to upgrade those as well. For example, for the `pgaudit` extension we recommend running the following to upgrade:
-
-```sql
-DROP EXTENSION pgaudit;
-CREATE EXTENSION pgaudit;
-```
-
-`pg_upgrade` may also create a file called `update_extensions.sql` to facilitate extension upgrades. Be aware some of the recommended ways to upgrade may be outdated.
-
-Please carefully review the `update_extensions.sql` file before you run it, and if you want to upgrade `pgaudit` via this file, update the file with the above commands for `pgaudit` prior to execution. We recommend verifying all extension updates from this file with the appropriate extension documentation and their recommendation for upgrading the extension prior to execution. After you update the file, you can execute this script using `kubectl exec`, e.g.
-
-```
-$ kubectl -n postgres-operator exec -it -c database \
- $(kubectl -n postgres-operator get pods --selector='postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/role=master' -o name) -- psql -f /pgdata/update_extensions.sql
-```
-
-If you cannot exec into your Pod, you can also manually run these commands as a Postgres superuser.
-
-Ensure the execution of this and any other SQL scripts completes successfully, otherwise your data may be unavailable.
-
-Once this is done, your major upgrade is complete! Enjoy using your newer version of Postgres!
diff --git a/docs/content/guides/private-registries.md b/docs/content/guides/private-registries.md
deleted file mode 100644
index 54f8bb481c..0000000000
--- a/docs/content/guides/private-registries.md
+++ /dev/null
@@ -1,144 +0,0 @@
----
-title: "Private Registries"
-date:
-draft: false
-weight: 200
----
-
-PGO, the open source Postgres Operator, can use containers that are stored in private registries.
-There are a variety of techniques that are used to load containers from private registries,
-including [image pull secrets](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/).
-This guide will demonstrate how to install PGO and deploy a Postgres cluster using the
-[Crunchy Data Customer Portal](https://access.crunchydata.com/) registry as an example.
-
-## Create an Image Pull Secret
-
-The Kubernetes documentation provides several methods for creating
-[image pull secrets](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/).
-You can choose the method that is most appropriate for your installation. You will need to create
-image pull secrets in the namespace that PGO is deployed and in each namespace where you plan to
-deploy Postgres clusters.
-
-For example, to create an image pull secret for accessing the Crunchy Data Customer Portal image
-registry in the `postgres-operator` namespace, you can execute the following commands:
-
-```shell
-kubectl create ns postgres-operator
-
-kubectl create secret docker-registry crunchy-regcred -n postgres-operator \
- --docker-server=registry.crunchydata.com \
- --docker-username= \
- --docker-email= \
- --docker-password=
-```
-
-This creates an image pull secret named `crunchy-regcred` in the `postgres-operator` namespace.
-
-## Install PGO from a Private Registry
-
-To [install PGO]({{< relref "installation/_index.md" >}}) from a private registry, you will need to
-set an image pull secret on the installation manifest.
-
-For example, to set up an image pull secret using the [Kustomize install method]({{< relref "installation/_index.md" >}})
-to install PGO from the [Crunchy Data Customer Portal](https://access.crunchydata.com/), you can set
-the following in the `kustomize/install/default/kustomization.yaml` manifest:
-
-```yaml
-images:
-- name: postgres-operator
- newName: {{< param operatorRepositoryPrivate >}}
- newTag: {{< param postgresOperatorTag >}}
-
-patchesJson6902:
- - target:
- group: apps
- version: v1
- kind: Deployment
- name: pgo
- patch: |-
- - op: remove
- path: /spec/selector/matchLabels/app.kubernetes.io~1name
- - op: remove
- path: /spec/selector/matchLabels/app.kubernetes.io~1version
- - op: add
- path: /spec/template/spec/imagePullSecrets
- value:
- - name: crunchy-regcred
-```
-
-If you are using a version of `kubectl` prior to `v1.21.0`, you will have to create an explicit
-patch file named `install-ops.yaml`:
-
-```yaml
-- op: remove
- path: /spec/selector/matchLabels/app.kubernetes.io~1name
-- op: remove
- path: /spec/selector/matchLabels/app.kubernetes.io~1version
-- op: add
- path: /spec/template/spec/imagePullSecrets
- value:
- - name: crunchy-regcred
-```
-
-and modify the manifest to be the following:
-
-```yaml
-images:
-- name: postgres-operator
- newName: {{< param operatorRepositoryPrivate >}}
- newTag: {{< param postgresOperatorTag >}}
-
-patchesJson6902:
- - target:
- group: apps
- version: v1
- kind: Deployment
- name: pgo
- path: install-ops.yaml
-```
-
-You can then install PGO from the private registry using the standard installation procedure, e.g.:
-
-```shell
-kubectl apply --server-side -k kustomize/install/default
-```
-
-## Deploy a Postgres cluster from a Private Registry
-
-To deploy a Postgres cluster using images from a private registry, you will need to set the value of
-`spec.imagePullSecrets` on a `PostgresCluster` custom resource.
-
-For example, to deploy a Postgres cluster using images from the [Crunchy Data Customer Portal](https://access.crunchydata.com/)
-with an image pull secret in the `postgres-operator` namespace, you can use the following manifest:
-
-```yaml
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- imagePullSecrets:
- - name: crunchy-regcred
- image: {{< param imageCrunchyPostgresPrivate >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - name: instance1
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrestPrivate >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
diff --git a/docs/content/guides/storage-retention.md b/docs/content/guides/storage-retention.md
deleted file mode 100644
index 12c5782693..0000000000
--- a/docs/content/guides/storage-retention.md
+++ /dev/null
@@ -1,230 +0,0 @@
----
-title: "Storage Retention"
-date:
-draft: false
-weight: 125
----
-
-PGO uses [persistent volumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) to store Postgres data and, based on your configuration, data for backups, archives, etc. There are cases where you may want to retain your volumes for [later use]({{< relref "./data-migration.md" >}}).
-
-The below guide shows how to configure your persistent volumes (PVs) to remain after a Postgres cluster managed by PGO is deleted and to deploy the retained PVs to a new Postgres cluster.
-
-For the purposes of this exercise, we will use a Postgres cluster named `hippo`.
-
-## Modify Persistent Volume Retention
-
-Retention of persistent volumes is set using a [reclaim policy](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#reclaiming). By default, more persistent volumes have a policy of `Delete`, which removes any data on a persistent volume once there are no more persistent volume claims (PVCs) associated with it.
-
-To retain a persistent volume you will need to set the reclaim policy to `Retain`. Note that persistent volumes are cluster-wide objects, so you will need to appropriate permissions to be able to modify a persistent volume.
-
-To retain the persistent volume associated with your Postgres database, you must first determine which persistent volume is associated with the persistent volume claim for your database. First, local the persistent volume claim. For example, with the `hippo` cluster, you can do so with the following command:
-
-```
-kubectl get pvc -n postgres-operator --selector=postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/data=postgres
-```
-
-This will yield something similar to the below, which are the PVCs associated with any Postgres instance:
-
-```
-NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
-hippo-instance1-x9vq-pgdata Bound pvc-aef7ee64-4495-4813-b896-8a67edc53e58 1Gi RWO standard 6m53s
-```
-
-The `VOLUME` column contains the name of the persistent volume. You can inspect it using `kubectl get pv`, e.g.:
-
-```
-kubectl get pv pvc-aef7ee64-4495-4813-b896-8a67edc53e58
-```
-
-which should yield:
-
-```
-NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
-pvc-aef7ee64-4495-4813-b896-8a67edc53e58 1Gi RWO Delete Bound postgres-operator/hippo-instance1-x9vq-pgdata standard 8m10s
-```
-
-To modify the reclaim policy set it to `Retain`, you can run a command similar to this:
-
-```
-kubectl patch pv pvc-aef7ee64-4495-4813-b896-8a67edc53e58 -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
-```
-
-Verify that the change occurred:
-
-```
-kubectl get pv pvc-aef7ee64-4495-4813-b896-8a67edc53e58
-```
-
-should show that `Retain` is set in the `RECLAIM POLICY` column:
-
-```
-NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
-pvc-aef7ee64-4495-4813-b896-8a67edc53e58 1Gi RWO Retain Bound postgres-operator/hippo-instance1-x9vq-pgdata standard 9m53s
-```
-
-## Delete Postgres Cluster, Retain Volume
-
-{{% notice warning %}}
-**This is a potentially destructive action**. Please be sure that your volume retention is set correctly and/or you have backups in place to restore your data.
-{{% / notice %}}
-
-[Delete your Postgres cluster]({{< relref "tutorial/delete-cluster.md" >}}). You can delete it using the manifest or with a command similar to:
-
-```
-kubectl -n postgres-operator delete postgrescluster hippo
-```
-
-Wait for the Postgres cluster to finish deleting. You should then verify that the persistent volume is still there:
-
-```
-kubectl get pv pvc-aef7ee64-4495-4813-b896-8a67edc53e58
-```
-
-should yield:
-
-```
-NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
-pvc-aef7ee64-4495-4813-b896-8a67edc53e58 1Gi RWO Retain Released postgres-operator/hippo-instance1-x9vq-pgdata standard 21m
-```
-
-## Create Postgres Cluster With Retained Volume
-
-You can now create a new Postgres cluster with the retained volume. First, to aid the process, you will want to provide a label that is unique for your persistent volumes so we can identify it in the manifest. For example:
-
-```
-kubectl label pv pvc-aef7ee64-4495-4813-b896-8a67edc53e58 pgo-postgres-cluster=postgres-operator-hippo
-```
-
-(This label uses the format `-`).
-
-Next, you will need to reference this persistent volume in your Postgres cluster manifest. For example:
-
-```yaml
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - name: instance1
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- selector:
- matchLabels:
- pgo-postgres-cluster: postgres-operator-hippo
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-Wait for the Pods to come up. You may see the Postgres Pod is in a `Pending` state. You will need to go in and clear the claim on the persistent volume that you want to use for this Postgres cluster, e.g.:
-
-```
-kubectl patch pv pvc-aef7ee64-4495-4813-b896-8a67edc53e58 -p '{"spec":{"claimRef": null}}'
-```
-
-After that, your Postgres cluster will come up and will be using the previously used persistent volume!
-
-If you ultimately want the volume to be deleted, you will need to revert the reclaim policy to `Delete`, e.g.:
-
-```
-kubectl patch pv pvc-aef7ee64-4495-4813-b896-8a67edc53e58 -p '{"spec":{"persistentVolumeReclaimPolicy":"Delete"}}'
-```
-
-After doing that, the next time you delete your Postgres cluster, the volume and your data will be deleted.
-
-### Additional Notes on Storage Retention
-
-Systems using "hostpath" storage or a storage class that does not support label selectors may not be able to use the label selector method for using a retained volume volume. You would have to specify the `volumeName` directly, e.g.:
-
-```yaml
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - name: instance1
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- volumeName: "pvc-aef7ee64-4495-4813-b896-8a67edc53e58"
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-Additionally, to add additional replicas to your Postgres cluster, you will have to make changes to your spec. You can do one of the following:
-
-1. Remove the volume-specific configuration from the volume claim spec (e.g. delete `spec.instances.selector` or `spec.instances.volumeName`)
-
-2. Add a new instance set specifically for your replicas, e.g.:
-
-```yaml
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - name: instance1
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- selector:
- matchLabels:
- pgo-postgres-cluster: postgres-operator-hippo
- - name: instance2
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
diff --git a/docs/content/guides/tablespaces.md b/docs/content/guides/tablespaces.md
deleted file mode 100644
index 0bfd8ff2d8..0000000000
--- a/docs/content/guides/tablespaces.md
+++ /dev/null
@@ -1,311 +0,0 @@
----
-title: "Tablespaces in PGO"
-date:
-draft: false
-weight: 160
----
-
-{{% notice warning %}}
-PGO tablespaces currently requires enabling the `TablespaceVolumes` feature gate
-and may interfere with other features. (See below for more details.)
-{{% /notice %}}
-
-A [Tablespace](https://www.postgresql.org/docs/current/manage-ag-tablespaces.html)
-is a Postgres feature that is used to store data on a different volume than the
-primary data directory. While most workloads do not require tablespaces, they can
-be helpful for larger data sets or utilizing particular hardware to optimize
-performance on a particular Postgres object (a table, index, etc.). Some examples
-of use cases for tablespaces include:
-
-- Partitioning larger data sets across different volumes
-- Putting data onto archival systems
-- Utilizing faster/more performant hardware (or a storage class) for a particular database
-- Storing sensitive data on a volume that supports transparent data-encryption (TDE)
-
-and others.
-
-In order to use Postgres tablespaces properly in a highly-available,
-distributed system, there are several considerations to ensure proper operations:
-
-- Each tablespace must have its own volume; this means that every tablespace for
-every replica in a system must have its own volume;
-- The available filesystem paths must be consistent on each Postgres pod in a Postgres cluster;
-- The backup & disaster recovery management system must be able to safely backup
-and restore data to tablespaces.
-
-Additionally, a tablespace is a critical piece of a Postgres instance: if
-Postgres expects a tablespace to exist and the tablespace volume is unavailable,
-this could trigger a downtime scenario.
-
-While there are certain challenges with creating a Postgres cluster with
-high-availability along with tablespaces in a Kubernetes-based environment, the
-Postgres Operator adds many conveniences to make it easier to use tablespaces.
-
-## Enabling TablespaceVolumes in PGO v5
-
-In PGO v5, tablespace support is currently feature-gated. If you want to use this
-experimental feature, you will need to enable the feature via the PGO `TablespaceVolumes`
-[feature gate](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/).
-
-PGO feature gates are enabled by setting the `PGO_FEATURE_GATES` environment
-variable on the PGO Deployment. To enable tablespaces, you would want to set
-
-```
-PGO_FEATURE_GATES="TablespaceVolumes=true"
-```
-
-Please note that it is possible to enable more than one feature at a time as
-this variable accepts a comma delimited list. For example, to enable multiple features,
-you would set `PGO_FEATURE_GATES` like so:
-
-```
-PGO_FEATURE_GATES="FeatureName=true,FeatureName2=true,FeatureName3=true..."
-```
-
-## Adding TablespaceVolumes to a postgrescluster in PGO v5
-
-Once you have enabled `TablespaceVolumes` on your PGO deployment, you can add volumes to
-a new or existing cluster by adding volumes to the `spec.instances.tablespaceVolumes` field.
-
-A `TablespaceVolume` object has two fields: a name (which is required and used to set the path)
-and a `dataVolumeClaimSpec`, which describes the storage that your Postgres instance will use
-for this volume. This field behaves identically to the `dataVolumeClaimSpec` in the `instances`
-list. For example, you could use the following to create a `postgrescluster`:
-
-```yaml
-spec:
- instances:
- - name: instance1
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- tablespaceVolumes:
- - name: user
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-In this case, the `postgrescluster` will have 1Gi for the database volume and 1Gi for the tablespace
-volume, and both will be provisioned by PGO.
-
-But if you were attempting to migrate data from one `postgrescluster` to another, you could re-use
-pre-existing volumes by passing in some label selector or the `volumeName` into the
-`tablespaceVolumes.dataVolumeClaimSpec` the same way you would pass that information into the
-`instances.dataVolumeClaimSpec` field:
-
-```yaml
-spec:
- instances:
- - name: instance1
- dataVolumeClaimSpec:
- volumeName: pvc-1001c17d-c137-4f78-8505-be4b26136924 # A preexisting volume you want to reuse for PGDATA
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- tablespaceVolumes:
- - name: user
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- volumeName: pvc-3fea1531-617a-4fff-9032-6487206ce644 # A preexisting volume you want to use for this tablespace
-```
-
-Note: the `name` of the `tablespaceVolume` needs to be
-
-* unique in the instance since that name becomes part of the mount path for that volume;
-* valid as part of a path name, label, and part of a volume name.
-
-There is validation on the CRD for these requirements.
-
-Once you request those `tablespaceVolumes`, PGO takes care of creating (or reusing) those volumes,
-including mounting them to the pod at a known path (`/tablespaces/NAME`) and adding them to the
-necessary containers.
-
-### How to use Postgres Tablespaces in PGO v5
-
-After PGO has mounted the volumes at the requested locations, the startup container makes sure
-that those locations have the appropriate owner and permissions. This behavior mimics the startup
-behavior behind the `PGDATA` directory, so that when you connect to your cluster, you should be
-able to start using those tablespaces.
-
-In order to use those tablespaces in Postgres, you will first need to create the tablespace,
-including the location. As noted above, PGO mounts the requested volumes at `/tablespaces/NAME`.
-So if you request tablespaces with the names `books` and `authors`, the two volumes will be
-mounted at `/tablespaces/books` and `/tablespaces/authors`.
-
-However, in order to make sure that the directory has the appropriate ownership so that Postgres
-can use it, we create a subdirectory called `data` in each volume.
-
-To create a tablespace in Postgres, you will issue a command of the form
-
-```
-CREATE TABLESPACE name LOCATION '/path/to/dir';
-```
-
-So to create a tablespace called `books` in the new `books` volume, your command might look like
-
-```
-CREATE TABLESPACE books LOCATION '/tablespaces/books/data';
-```
-
-To break that path down: `tablespaces` is the mount point for all tablespace volumes; `books`
-is the name of the volume in the spec; and `data` is a directory created with the appropriate
-ownership by the startup script.
-
-Once you have
-
-* enabled the `TablespaceVolumes` feature gate,
-* added `tablespaceVolumes` to your cluster spec,
-* and created the tablespace in Postgres,
-
-then you are ready to use tablespaces in your cluster. For example, if you wanted to create a
-table called `books` on the `books` tablespace, you could execute the following SQL:
-
-```sql
-CREATE TABLE books (
- book_id VARCHAR2(20),
- title VARCHAR2(50)
- author_last_name VARCHAR2(30)
-)
-TABLESPACE books;
-```
-
-## Considerations
-
-### Only one pod per volume
-
-As stated above, it is important to ensure that every tablespace has its own volume
-(i.e. its own [persistent volume claim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/)).
-This is especially true for any replicas in a cluster: you don't want multiple Postgres instances
-writing to the same volume.
-
-So if you have a single named volume in your spec (for either the main PGDATA directory or
-for tablespaces), you should not raise the `spec.instances.replicas` field above 1, because if you
-did, multiple pods would try to use the same volume.
-
-### Too-long names?
-
-Different Kubernetes objects have different limits about the length of their names. For example,
-services follow the DNS label conventions: 63 characters or less, lowercase, and alphanumeric with
-hyphens U+002D allowed in between.
-
-Occasionally some PGO-managed objects will go over the limit set for that object type because of
-the user-set cluster or instance name.
-
-We do not anticipate this being a problem with the `PersistentVolumeClaim` created for a tablespace.
-The name for a `PersistentVolumeClaim` created by PGO for a tablespace will potentially be long since
-the name is a combination of the cluster, the instance, the tablespace, and the `-tablespace` suffix.
-However, a `PersistentVolumeClaim` name can be up to 253 characters in length.
-
-### Same tablespace volume names across replicas
-
-We want to make sure that every pod has a consistent filesystem because Postgres expects
-the same path on each replica.
-
-For instance, imagine on your primary Postgres, you add a tablespace with the location
-`/tablespaces/kafka/data`. If you have a replica attached to that primary, it will likewise
-try to add a tablespace at the location `/tablespaces/kafka/data`; and if that location doesn't
-exist on the replica's filesystem, Postgres will rightly complain.
-
-Therefore, if you expand your `postgrescluster` with multiple instances, you will need to make
-sure that the multiple instances have `tablespaceVolumes` with the *same names*, like so:
-
-```yaml
-spec:
- instances:
- - name: instance1
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- tablespaceVolumes:
- - name: user
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- - name: instance2
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- tablespaceVolumes:
- - name: user
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-### Tablespace backups
-
-PGO uses `pgBackRest` as our backup solution, and `pgBackRest` is built to work with tablespaces
-natively. That is, `pgBackRest` should back up the entire database, including tablespaces, without
-any additional work on your part.
-
-**Note**: `pgBackRest` does not itself use tablespaces, so all the backups will go to a single volume.
-One of the primary uses of tablespaces is to relieve disk pressure by separating the database among
-multiple volumes, but if you are running out of room on your `pgBackRest` persistent volume,
-tablespaces will not help, and you should first solve your backup space problem.
-
-### Adding tablespaces to existing clusters
-
-As with other changes made to the definition of a Postgres pod, adding `tablespaceVolumes` to an
-existing cluster may cause downtime. The act of mounting a new PVC to a Kubernetes Deployment
-causes the Pods in the deployment to restart.
-
-### Restoring from a cluster with tablespaces
-
-This functionality has not been fully tested. Enjoy!
-
-### Removing tablespaces
-
-Removing a tablespace is a nontrivial operation. Postgres does not provide a
-`DROP TABLESPACE .. CASCADE` command that would drop any associated objects with a tablespace.
-Additionally, the Postgres documentation covering the
-[`DROP TABLESPACE`](https://www.postgresql.org/docs/current/sql-droptablespace.html)
-command goes on to note:
-
-> A tablespace can only be dropped by its owner or a superuser. The tablespace
-> must be empty of all database objects before it can be dropped. It is possible
-> that objects in other databases might still reside in the tablespace even if
-> no objects in the current database are using the tablespace. Also, if the
-> tablespace is listed in the temp_tablespaces setting of any active session,
-> the DROP might fail due to temporary files residing in the tablespace.
-
-Because of this, and to avoid a situation where a Postgres cluster is left in an inconsistent
-state due to trying to remove a tablespace, PGO does not provide any means to remove tablespaces
-automatically. If you need to remove a tablespace from a Postgres deployment, we recommend
-following this procedure:
-
-1. As a database administrator:
- 1. Log into the primary instance of your cluster.
- 1. Drop any objects (tables, indexes, etc) that reside within the tablespace you wish to delete.
- 1. Delete this tablespace from the Postgres cluster using the `DROP TABLESPACE` command.
-1. As a Kubernetes user who can modify `postgrescluster` specs
- 1. Remove the `tablespaceVolumes` entries for the tablespaces you wish to remove.
-
-## More Information
-
-For more information on how tablespaces work in Postgres please refer to the
-[Postgres manual](https://www.postgresql.org/docs/current/manage-ag-tablespaces.html).
\ No newline at end of file
diff --git a/docs/content/installation/_index.md b/docs/content/installation/_index.md
deleted file mode 100644
index add5679273..0000000000
--- a/docs/content/installation/_index.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: "Installation"
-date:
-draft: false
-weight: 30
----
-
-This section provides detailed instructions for anything and everything related to installing PGO
-in your Kubernetes environment. This includes instructions for installing PGO according to a
-variety of supported installation methods, along with information for customizing the installation
-of PGO according your specific needs.
-
-Additionally, instructions are provided for installing and configuring [PGO Monitoring]({{< relref "./monitoring" >}}).
-
-## Installing PGO
-
-- [PGO Kustomize Install]({{< relref "./kustomize.md" >}})
-- [PGO Helm Install]({{< relref "./helm.md" >}})
-
-## Installing PGO Monitoring
-
-- [PGO Monitoring Kustomize Install]({{< relref "./monitoring/kustomize.md" >}})
diff --git a/docs/content/installation/helm.md b/docs/content/installation/helm.md
deleted file mode 100644
index 32781466d2..0000000000
--- a/docs/content/installation/helm.md
+++ /dev/null
@@ -1,156 +0,0 @@
----
-title: "Helm"
-date:
-draft: false
-weight: 20
----
-
-# Installing PGO Using Helm
-
-This section provides instructions for installing and configuring PGO using Helm.
-
-There are two sources for the PGO Helm chart:
-* the Postgres Operator examples repo;
-* the Helm chart hosted on the Crunchy container registry, which supports direct Helm installs.
-
-# The Postgres Operator Examples repo
-
-## Prerequisites
-
-First, go to GitHub and [fork the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork)
-repository, which contains the PGO Helm installer.
-
-[https://github.com/CrunchyData/postgres-operator-examples/fork](https://github.com/CrunchyData/postgres-operator-examples/fork)
-
-Once you have forked this repo, you can download it to your working environment with a command
-similar to this:
-
-```
-YOUR_GITHUB_UN=""
-git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/postgres-operator-examples.git"
-cd postgres-operator-examples
-```
-
-The PGO Helm chart is located in the `helm/install` directory of this repository.
-
-## Configuration
-
-The `values.yaml` file for the Helm chart contains all of the available configuration settings for
-PGO. The default `values.yaml` settings should work in most Kubernetes environments, but it may
-require some customization depending on your specific environment and needs.
-
-For instance, it might be necessary to customize the image tags that are utilized using the
-`controllerImages` setting:
-
-```yaml
-controllerImages:
- cluster: {{< param operatorRepository >}}:{{< param postgresOperatorTag >}}
-```
-
-Please note that the `values.yaml` file is located in `helm/install`.
-
-### Logging
-
-By default, PGO deploys with debug logging turned on. If you wish to disable this, you need to set the `debug` attribute in the `values.yaml` to false, e.g.:
-
-```yaml
-debug: false
-```
-
-### Installation Mode
-
-When PGO is installed, it can be configured to manage PostgreSQL clusters in all namespaces within
-the Kubernetes cluster, or just those within a single namespace. When managing PostgreSQL
-clusters in all namespaces, a ClusterRole and ClusterRoleBinding is created to ensure PGO has
-the permissions it requires to properly manage PostgreSQL clusters across all namespaces. However,
-when PGO is configured to manage PostgreSQL clusters within a single namespace only, a Role and
-RoleBinding is created instead.
-
-In order to select between these two modes when installing PGO using Helm, the `singleNamespace`
-setting in the `values.yaml` file can be utilized:
-
-```yaml
-singleNamespace: false
-```
-
-Specifically, if this setting is set to `false` (which is the default), then a ClusterRole and
-ClusterRoleBinding will be created, and PGO will manage PostgreSQL clusters in all namespaces.
-However, if this setting is set to `true`, then a Role and RoleBinding will be created instead,
-allowing PGO to only manage PostgreSQL clusters in the same namespace utilized when installing
-the PGO Helm chart.
-
-## Install
-
-Once you have configured the Helm chart according to your specific needs, it can then be installed
-using `helm`:
-
-```shell
-helm install -n helm/install
-```
-
-### Automated Upgrade Checks
-
-By default, PGO will automatically check for updates to itself and software components by making a request to a URL. If PGO detects there are updates available, it will print them in the logs. As part of the check, PGO will send aggregated, anonymized information about the current deployment to the endpoint. An upcoming release will allow for PGO to opt-in to receive and apply updates to software components automatically.
-
-PGO will check for updates upon startup and once every 24 hours. Any errors in checking will have no impact on PGO's operation. To disable the upgrade check, you can set the `disable_check_for_upgrades` value in the Helm chart to `true`.
-
-For more information about collected data, see the Crunchy Data [collection notice](https://www.crunchydata.com/developers/data-collection-notice).
-
-## Uninstall
-
-To uninstall PGO, remove all your PostgresCluster objects, then use the `helm uninstall` command:
-
-```shell
-helm uninstall -n
-```
-
-Helm [leaves the CRDs][helm-crd-limits] in place. You can remove them with `kubectl delete`:
-
-```shell
-kubectl delete -f helm/install/crds
-```
-
-# The Crunchy Container Registry
-
-## Installing directly from the registry
-
-Crunchy Data hosts an OCI registry that `helm` can use directly.
-(Not all `helm` commands support OCI registries. For more information on
-which commands can be used, see [the Helm documentation](https://helm.sh/docs/topics/registries/).)
-
-You can install PGO directly from the registry using the `helm install` command:
-
-```
-helm install pgo {{< param operatorHelmRepository >}}
-```
-
-Or to see what values are set in the default `values.yaml` before installing, you could run a
-`helm show` command just as you would with any other registry:
-
-```
-helm show values {{< param operatorHelmRepository >}}
-```
-
-## Downloading from the registry
-
-Rather than deploying directly from the Crunchy registry, you can instead use the registry as the
-source for the Helm chart.
-
-To do so, download the Helm chart from the Crunchy Container Registry:
-
-```
-# To pull down the most recent Helm chart
-helm pull {{< param operatorHelmRepository >}}
-
-# To pull down a specific Helm chart
-helm pull {{< param operatorHelmRepository >}} --version {{< param operatorVersion >}}
-```
-
-Once the Helm chart has been downloaded, uncompress the bundle
-
-```
-tar -xvf pgo-{{< param operatorVersion >}}.tgz
-```
-
-And from there, you can follow the instructions above on setting the [Configuration](#configuration)
-and installing a local Helm chart.
diff --git a/docs/content/installation/kustomize.md b/docs/content/installation/kustomize.md
deleted file mode 100644
index 7c601e3060..0000000000
--- a/docs/content/installation/kustomize.md
+++ /dev/null
@@ -1,161 +0,0 @@
----
-title: "Kustomize"
-date:
-draft: false
-weight: 10
----
-
-# Installing PGO Using Kustomize
-
-This section provides instructions for installing and configuring PGO using Kustomize.
-
-If you are deploying using the installer from the [Crunchy Data Customer Portal](https://access.crunchydata.com/), please refer to the guide there for alternative setup information.
-
-## Prerequisites
-
-First, go to GitHub and [fork the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork)
-repository, which contains the PGO Kustomize installer.
-
-[https://github.com/CrunchyData/postgres-operator-examples/fork](https://github.com/CrunchyData/postgres-operator-examples/fork)
-
-Once you have forked this repo, you can download it to your working environment with a command
-similar to this:
-
-```
-YOUR_GITHUB_UN=""
-git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/postgres-operator-examples.git"
-cd postgres-operator-examples
-```
-
-The PGO installation project is located in the `kustomize/install` directory.
-
-## Configuration
-
-While the default Kustomize install should work in most Kubernetes environments, it may be
-necessary to further customize the Kustomize project(s) according to your specific needs.
-
-For instance, to customize the image tags utilized for the PGO Deployment, the `images` setting
-in the `kustomize/install/default/kustomization.yaml` file can be modified:
-
-```yaml
-images:
-- name: postgres-operator
- newName: {{< param operatorRepository >}}
- newTag: {{< param postgresOperatorTag >}}
-```
-
-If you are deploying using the images from the [Crunchy Data Customer Portal](https://access.crunchydata.com/), please refer to the [private registries]({{< relref "guides/private-registries.md" >}}) guide for additional setup information.
-
-Please note that the Kustomize install project will also create a namespace for PGO
-by default (though it is possible to install without creating the namespace, as shown below). To
-modify the name of namespace created by the installer, the `kustomize/install/namespace/namespace.yaml`
-should be modified:
-
-```yaml
-apiVersion: v1
-kind: Namespace
-metadata:
- name: custom-namespace
-```
-
-The `namespace` setting in `kustomize/install/default/kustomization.yaml` should be
-modified accordingly.
-
-```yaml
-namespace: custom-namespace
-```
-
-By default, PGO deploys with debug logging turned on. If you wish to disable this, you need to set the `CRUNCHY_DEBUG` environmental variable to `"false"` that is found in the `kustomize/install/manager/manager.yaml` file. Alternatively, you can add the following to your `kustomize/install/manager/kustomization.yaml` to disable debug logging:
-
-```yaml
-patchesStrategicMerge:
-- |-
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: pgo
- spec:
- template:
- spec:
- containers:
- - name: operator
- env:
- - name: CRUNCHY_DEBUG
- value: "false"
-```
-
-You can also create additional Kustomize overlays to further patch and customize the installation according to your specific needs.
-
-### Installation Mode
-
-When PGO is installed, it can be configured to manage PostgreSQL clusters in all namespaces within
-the Kubernetes cluster, or just those within a single namespace. When managing PostgreSQL
-clusters in all namespaces, a ClusterRole and ClusterRoleBinding is created to ensure PGO has
-the permissions it requires to properly manage PostgreSQL clusters across all namespaces. However,
-when PGO is configured to manage PostgreSQL clusters within a single namespace only, a Role and
-RoleBinding is created instead.
-
-The installation of the necessary resources for a cluster-wide or a namespace-limited
-operator is done automatically by Kustomize, as described below in the Install section.
-The only potential change you may need to make is to the Namespace resource and the
-`namespace` field if using a namespace other than the default `postgres-operator`.
-
-## Install
-
-Once the Kustomize project has been modified according to your specific needs, PGO can then
-be installed using `kubectl` and Kustomize. To create the target namespace, run the following:
-
-```shell
-kubectl apply -k kustomize/install/namespace
-```
-
-This will create the default `postgres-operator` namespace, unless you have edited the
-`kustomize/install/namespace/namespace.yaml` resource. That `Namespace` resource should have the
-same value as the `namespace` field in the `kustomization.yaml` file (located either at
-`kustomize/install/default` or `kustomize/install/singlenamespace`, depending on whether you
-are deploying the operator with cluster-wide or namespace-limited permissions).
-
-To install PGO itself in cluster-wide mode, apply the kustomization file in the `default` folder:
-
-```shell
-kubectl apply --server-side -k kustomize/install/default
-```
-
-To install PGO itself in namespace-limited mode, apply the kustomization file in the
-`singlenamespace` folder:
-
-```shell
-kubectl apply --server-side -k kustomize/install/singlenamespace
-```
-
-The `kustomization.yaml` files in those folders take care of applying the appropriate permissions.
-
-### Automated Upgrade Checks
-
-By default, PGO will automatically check for updates to itself and software components by making a request to a URL. If PGO detects there are updates available, it will print them in the logs. As part of the check, PGO will send aggregated, anonymized information about the current deployment to the endpoint. An upcoming release will allow for PGO to opt-in to receive and apply updates to software components automatically.
-
-PGO will check for updates upon startup and once every 24 hours. Any errors in checking will have no impact on PGO's operation. To disable the upgrade check, you can set the `CHECK_FOR_UPGRADES` environmental variable on the `pgo` Deployment to `"false"`.
-
-For more information about collected data, see the Crunchy Data [collection notice](https://www.crunchydata.com/developers/data-collection-notice).
-
-## Uninstall
-
-Once PGO has been installed, it can also be uninstalled using `kubectl` and Kustomize.
-To uninstall PGO (assuming it was installed in cluster-wide mode), the following command can be
-utilized:
-
-```shell
-kubectl delete -k kustomize/install/default
-```
-
-To uninstall PGO installed with only namespace permissions, use:
-
-```shell
-kubectl delete -k kustomize/install/singlenamespace
-```
-
-The namespace created with this installation can likewise be cleaned up with:
-
-```shell
-kubectl delete -k kustomize/install/namespace
-```
diff --git a/docs/content/installation/monitoring/_index.md b/docs/content/installation/monitoring/_index.md
deleted file mode 100644
index ef3fd62963..0000000000
--- a/docs/content/installation/monitoring/_index.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: "PGO Monitoring"
-date:
-draft: false
-weight: 100
----
-
-The PGO Monitoring stack is a fully integrated solution for monitoring and visualizing metrics
-captured from PostgreSQL clusters created using PGO. By leveraging [pgMonitor][] to configure
-and integrate the various tools, components and metrics needed to effectively monitor PostgreSQL
-clusters, PGO Monitoring provides an powerful and easy-to-use solution to effectively monitor
-and visualize pertinent PostgreSQL database and container metrics. Included in the monitoring
-infrastructure are the following components:
-
-- [pgMonitor][] - Provides the configuration needed to enable the effective capture and
-visualization of PostgreSQL database metrics using the various tools comprising the PostgreSQL
-Operator Monitoring infrastructure
-- [Grafana](https://grafana.com/) - Enables visual dashboard capabilities for monitoring
-PostgreSQL clusters, specifically using Crunchy PostgreSQL Exporter data stored within Prometheus
-- [Prometheus](https://prometheus.io/) - A multi-dimensional data model with time series data,
-which is used in collaboration with the Crunchy PostgreSQL Exporter to provide and store
-metrics
-- [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) - Handles alerts
-sent by Prometheus by deduplicating, grouping, and routing them to receiver integrations.
-
-By leveraging the installation method described in this section, PGO Monitoring can be deployed
-alongside PGO.
-
-
-
-[pgMonitor]: https://github.com/CrunchyData/pgmonitor
diff --git a/docs/content/installation/monitoring/kustomize.md b/docs/content/installation/monitoring/kustomize.md
deleted file mode 100644
index 9d322d55b6..0000000000
--- a/docs/content/installation/monitoring/kustomize.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-title: "Kustomize"
-date:
-draft: false
-weight: 10
----
-
-# Installing PGO Monitoring Using Kustomize
-
-This section provides instructions for installing and configuring PGO Monitoring using Kustomize.
-
-## Prerequisites
-
-First, go to GitHub and [fork the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork)
-repository, which contains the PGO Monitoring Kustomize installer.
-
-[https://github.com/CrunchyData/postgres-operator-examples/fork](https://github.com/CrunchyData/postgres-operator-examples/fork)
-
-Once you have forked this repo, you can download it to your working environment with a command
-similar to this:
-
-```
-YOUR_GITHUB_UN=""
-git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/postgres-operator-examples.git"
-cd postgres-operator-examples
-```
-
-The PGO Monitoring project is located in the `kustomize/monitoring` directory.
-
-## Configuration
-
-While the default Kustomize install should work in most Kubernetes environments, it may be
-necessary to further customize the project according to your specific needs.
-
-For instance, by default `fsGroup` is set to `26` for the `securityContext` defined for the
-various Deployments comprising the PGO Monitoring stack:
-
-```yaml
-securityContext:
- fsGroup: 26
-```
-
-In most Kubernetes environments this setting is needed to ensure processes within the container
-have the permissions needed to write to any volumes mounted to each of the Pods comprising the PGO
-Monitoring stack. However, when installing in an OpenShift environment (and more specifically when
-using the `restricted` Security Context Constraint), the `fsGroup` setting should be removed
-since OpenShift will automatically handle setting the proper `fsGroup` within the Pod's
-`securityContext`.
-
-Additionally, within this same section it may also be necessary to modify the `supplmentalGroups`
-setting according to your specific storage configuration:
-
-```yaml
-securityContext:
- supplementalGroups : 65534
-```
-
-Therefore, the following files (located under `kustomize/monitoring`) should be modified and/or
-patched (e.g. using additional overlays) as needed to ensure the `securityContext` is properly
-defined for your Kubernetes environment:
-
-- `deploy-alertmanager.yaml`
-- `deploy-grafana.yaml`
-- `deploy-prometheus.yaml`
-
-And to modify the configuration for the various storage resources (i.e. PersistentVolumeClaims)
-created by the PGO Monitoring installer, the `kustomize/monitoring/pvcs.yaml` file can also
-be modified.
-
-Additionally, it is also possible to further customize the configuration for the various components
-comprising the PGO Monitoring stack (Grafana, Prometheus and/or AlertManager) by modifying the
-following configuration resources:
-
-- `alertmanager-config.yaml`
-- `alertmanager-rules-config.yaml`
-- `grafana-datasources.yaml`
-- `prometheus-config.yaml`
-
-Finally, please note that the default username and password for Grafana can be updated by
-modifying the Grafana Secret in file `kustomize/monitoring/grafana-secret.yaml`.
-
-## Install
-
-Once the Kustomize project has been modified according to your specific needs, PGO Monitoring can
-then be installed using `kubectl` and Kustomize:
-
-```shell
-kubectl apply -k kustomize/monitoring
-```
-
-## Uninstall
-
-And similarly, once PGO Monitoring has been installed, it can uninstalled using `kubectl` and
-Kustomize:
-
-```shell
-kubectl delete -k kustomize/monitoring
-```
diff --git a/docs/content/quickstart/_index.md b/docs/content/quickstart/_index.md
deleted file mode 100644
index 089070eb5c..0000000000
--- a/docs/content/quickstart/_index.md
+++ /dev/null
@@ -1,206 +0,0 @@
----
-title: "Quickstart"
-date:
-draft: false
-weight: 10
----
-
-Can't wait to try out the [PGO](https://github.com/CrunchyData/postgres-operator), the [Postgres Operator](https://github.com/CrunchyData/postgres-operator) from [Crunchy Data](https://www.crunchydata.com)? Let us show you the quickest possible path to getting up and running.
-
-## Prerequisites
-
-Please be sure you have the following utilities installed on your host machine:
-
-- `kubectl`
-- `git`
-
-## Installation
-
-### Step 1: Download the Examples
-
-First, go to GitHub and [fork the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repository:
-
-[https://github.com/CrunchyData/postgres-operator-examples/fork](https://github.com/CrunchyData/postgres-operator-examples/fork)
-
-Once you have forked this repo, you can download it to your working environment with a command similar to this:
-
-```
-YOUR_GITHUB_UN=""
-git clone --depth 1 "git@github.com:${YOUR_GITHUB_UN}/postgres-operator-examples.git"
-cd postgres-operator-examples
-```
-### Step 2: Install PGO, the Postgres Operator
-
-You can install PGO, the Postgres Operator from Crunchy Data, using the command below:
-
-```
-kubectl apply -k kustomize/install/namespace
-kubectl apply --server-side -k kustomize/install/default
-```
-
-This will create a namespace called `postgres-operator` and create all of the objects required to deploy PGO.
-
-To check on the status of your installation, you can run the following command:
-
-```
-kubectl -n postgres-operator get pods \
- --selector=postgres-operator.crunchydata.com/control-plane=postgres-operator \
- --field-selector=status.phase=Running
-```
-
-If the PGO Pod is healthy, you should see output similar to:
-
-```
-NAME READY STATUS RESTARTS AGE
-postgres-operator-9dd545d64-t4h8d 1/1 Running 0 3s
-```
-
-## Create a Postgres Cluster
-
-Let's create a simple Postgres cluster. You can do this by executing the following command:
-
-```
-kubectl apply -k kustomize/postgres
-```
-
-This will create a Postgres cluster named `hippo` in the `postgres-operator` namespace. You can track the progress of your cluster using the following command:
-
-```
-kubectl -n postgres-operator describe postgresclusters.postgres-operator.crunchydata.com hippo
-```
-
-## Connect to the Postgres cluster
-
-As part of creating a Postgres cluster, the Postgres Operator creates a PostgreSQL user account. The credentials for this account are stored in a Secret that has the name `-pguser-`.
-
-Within this Secret are attributes that provide information to let you log into the PostgreSQL cluster. These include:
-
-- `user`: The name of the user account.
-- `password`: The password for the user account.
-- `dbname`: The name of the database that the user has access to by default.
-- `host`: The name of the host of the database.
- This references the [Service](https://kubernetes.io/docs/concepts/services-networking/service/) of the primary Postgres instance.
-- `port`: The port that the database is listening on.
-- `uri`: A [PostgreSQL connection URI](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING)
- that provides all the information for logging into the Postgres database.
-- `jdbc-uri`: A [PostgreSQL JDBC connection URI](https://jdbc.postgresql.org/documentation/use/)
- that provides all the information for logging into the Postgres database via the JDBC driver.
-
-If you deploy your Postgres cluster with the [PgBouncer](https://www.pgbouncer.org/) connection pooler, there are additional values that are populated in the user Secret, including:
-
-- `pgbouncer-host`: The name of the host of the PgBouncer connection pooler.
- This references the [Service](https://kubernetes.io/docs/concepts/services-networking/service/) of the PgBouncer connection pooler.
-- `pgbouncer-port`: The port that the PgBouncer connection pooler is listening on.
-- `pgbouncer-uri`: A [PostgreSQL connection URI](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING)
- that provides all the information for logging into the Postgres database via the PgBouncer connection pooler.
-- `pgbouncer-jdbc-uri`: A [PostgreSQL JDBC connection URI](https://jdbc.postgresql.org/documentation/use/)
- that provides all the information for logging into the Postgres database via the PgBouncer connection pooler using the JDBC driver.
-
-Note that **all connections use TLS**. PGO sets up a PKI for your Postgres clusters. You can also choose to bring your own PKI / certificate authority; this is covered later in the documentation.
-
-### Connect via `psql` in the Terminal
-
-#### Connect Directly
-
-If you are on the same network as your PostgreSQL cluster, you can connect directly to it using the following command:
-
-```
-psql $(kubectl -n postgres-operator get secrets hippo-pguser-hippo -o go-template='{{.data.uri | base64decode}}')
-```
-
-#### Connect Using a Port-Forward
-
-In a new terminal, create a port forward:
-
-```
-PG_CLUSTER_PRIMARY_POD=$(kubectl get pod -n postgres-operator -o name \
- -l postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/role=master)
-kubectl -n postgres-operator port-forward "${PG_CLUSTER_PRIMARY_POD}" 5432:5432
-```
-
-Establish a connection to the PostgreSQL cluster.
-
-```
-PG_CLUSTER_USER_SECRET_NAME=hippo-pguser-hippo
-
-PGPASSWORD=$(kubectl get secrets -n postgres-operator "${PG_CLUSTER_USER_SECRET_NAME}" -o go-template='{{.data.password | base64decode}}') \
-PGUSER=$(kubectl get secrets -n postgres-operator "${PG_CLUSTER_USER_SECRET_NAME}" -o go-template='{{.data.user | base64decode}}') \
-PGDATABASE=$(kubectl get secrets -n postgres-operator "${PG_CLUSTER_USER_SECRET_NAME}" -o go-template='{{.data.dbname | base64decode}}') \
-psql -h localhost
-```
-
-### Connect an Application
-
-The information provided in the user Secret will allow you to connect an application directly to your PostgreSQL database.
-
-For example, let's connect [Keycloak](https://www.keycloak.org/). Keycloak is a popular open source identity management tool that is backed by a PostgreSQL database. Using the `hippo` cluster we created, we can deploy the following manifest file:
-
-```
-cat <> keycloak.yaml
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: keycloak
- namespace: postgres-operator
- labels:
- app.kubernetes.io/name: keycloak
-spec:
- selector:
- matchLabels:
- app.kubernetes.io/name: keycloak
- template:
- metadata:
- labels:
- app.kubernetes.io/name: keycloak
- spec:
- containers:
- - image: quay.io/keycloak/keycloak:latest
- name: keycloak
- env:
- - name: DB_VENDOR
- value: "postgres"
- - name: DB_ADDR
- valueFrom: { secretKeyRef: { name: hippo-pguser-hippo, key: host } }
- - name: DB_PORT
- valueFrom: { secretKeyRef: { name: hippo-pguser-hippo, key: port } }
- - name: DB_DATABASE
- valueFrom: { secretKeyRef: { name: hippo-pguser-hippo, key: dbname } }
- - name: DB_USER
- valueFrom: { secretKeyRef: { name: hippo-pguser-hippo, key: user } }
- - name: DB_PASSWORD
- valueFrom: { secretKeyRef: { name: hippo-pguser-hippo, key: password } }
- - name: KEYCLOAK_USER
- value: "admin"
- - name: KEYCLOAK_PASSWORD
- value: "admin"
- - name: PROXY_ADDRESS_FORWARDING
- value: "true"
- ports:
- - name: http
- containerPort: 8080
- - name: https
- containerPort: 8443
- readinessProbe:
- httpGet:
- path: /auth/realms/master
- port: 8080
- restartPolicy: Always
-
-EOF
-
-kubectl apply -f keycloak.yaml
-```
-
-There is a full example for how to deploy Keycloak with the Postgres Operator in the `kustomize/keycloak` folder.
-
-## Next Steps
-
-Congratulations, you've got your Postgres cluster up and running, perhaps with an application connected to it! 👏 👏 👏
-
-You can find out more about the [`postgresclusters` custom resource definition]({{< relref "references/crd.md" >}}) through the [documentation]({{< relref "references/crd.md" >}}) and through `kubectl explain`, i.e.:
-
-```
-kubectl explain postgresclusters
-```
-
-Let's work through a tutorial together to better understand the various components of PGO, the Postgres Operator, and how you can fine tune your settings to tailor your Postgres cluster to your application.
diff --git a/docs/content/references/.gitattributes b/docs/content/references/.gitattributes
deleted file mode 100644
index 230f0d5267..0000000000
--- a/docs/content/references/.gitattributes
+++ /dev/null
@@ -1,3 +0,0 @@
-# https://docs.github.com/en/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github
-# https://github.com/github/linguist/blob/v7.16.0/docs/overrides.md
-/crd.md linguist-generated
diff --git a/docs/content/references/_index.md b/docs/content/references/_index.md
deleted file mode 100644
index f5b4f37f0b..0000000000
--- a/docs/content/references/_index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "References"
-date:
-draft: false
-weight: 100
----
diff --git a/docs/content/references/components.md b/docs/content/references/components.md
deleted file mode 100644
index a8ca095edb..0000000000
--- a/docs/content/references/components.md
+++ /dev/null
@@ -1,167 +0,0 @@
----
-title: "Components and Compatibility"
-date:
-draft: false
-weight: 110
----
-
-## Kubernetes Compatibility
-
-PGO, the Postgres Operator from Crunchy Data, is tested on the following platforms:
-
-- Kubernetes 1.22-1.25
-- OpenShift 4.8-4.11
-- Rancher
-- Google Kubernetes Engine (GKE), including Anthos
-- Amazon EKS
-- Microsoft AKS
-- VMware Tanzu
-
-## Components Compatibility
-
-The following table defines the compatibility between PGO and the various component containers
-needed to deploy PostgreSQL clusters using PGO.
-
-The listed versions of Postgres show the latest minor release (e.g. {{< param postgresVersion13 >}}) of each major version (e.g. {{< param postgresVersion >}}). Older minor releases may still be compatible with PGO. We generally recommend to run the latest minor release for the [same reasons that the PostgreSQL community provides](https://www.postgresql.org/support/versioning/).
-
-Note that for the 5.0.3 release and beyond, the Postgres containers were renamed to `crunchy-postgres` and `crunchy-postgres-gis`.
-
-| PGO | pgAdmin* | pgBackRest | PgBouncer | Postgres | PostGIS |
-|-----|---------|------------|-----------|----------|---------|
-| `5.3.0` | `4.30` | `2.41` | `1.17` | `15,14,13,12,11` | `3.3,3.2,3.1,3.0,2.5,2.4` |
-| `5.2.1` | `4.30` | `2.41` | `1.17` | `14,13,12,11,10` | `3.2,3.1,3.0,2.5,2.4,2.3` |
-| `5.2.0` | `4.30` | `2.40` | `1.17` | `14,13,12,11,10` | `3.2,3.1,3.0,2.5,2.4,2.3` |
-| `5.1.4` | `4.30` | `2.41` | `1.17` | `14,13,12,11,10` | `3.2,3.1,3.0,2.5,2.4,2.3` |
-| `5.1.3` | `4.30` | `2.40` | `1.17` | `14,13,12,11,10` | `3.2,3.1,3.0,2.5,2.4,2.3` |
-| `5.1.2` | `4.30` | `2.38` | `1.16` | `14,13,12,11,10` | `3.2,3.1,3.0,2.5,2.4,2.3` |
-| `5.1.1` | `4.30` | `2.38` | `1.16` | `14,13,12,11,10` | `3.2,3.1,3.0,2.5,2.4,2.3` |
-| `5.1.0` | `4.30` | `2.38` | `1.16` | `14,13,12,11,10` | `3.1,3.0,2.5,2.4,2.3` |
-| `5.0.9` | `n/a` | `2.41` | `1.17` | `14,13,12,11,10` | `3.1,3.0,2.5,2.4,2.3` |
-| `5.0.8` | `n/a` | `2.40` | `1.17` | `14,13,12,11,10` | `3.1,3.0,2.5,2.4,2.3` |
-| `5.0.7` | `n/a` | `2.38` | `1.16` | `14,13,12,11,10` | `3,2,3.1,3.0,2.5,2.4,2.3` |
-| `5.0.6` | `n/a` | `2.38` | `1.16` | `14,13,12,11,10` | `3.2,3.1,3.0,2.5,2.4,2.3` |
-| `5.0.5` | `n/a` | `2.36` | `1.16` | `14,13,12,11,10` | `3.1,3.0,2.5,2.4,2.3` |
-| `5.0.4` | `n/a` | `2.36` | `1.16` | `14,13,12,11,10` | `3.1,3.0,2.5,2.4,2.3` |
-| `5.0.3` | `n/a` | `2.35` | `1.15` | `14,13,12,11,10` | `3.1,3.0,2.5,2.4,2.3` |
-
-_*pgAdmin 4.30 does not currently support Postgres 15._
-
-The latest Postgres containers include Patroni 2.1.3.
-
-The following are the Postgres containers available for version 5.0.2 of PGO and older:
-
-| Component | Version | PGO Version Min. | PGO Version Max. |
-|-----------|---------|------------------|------------------|
-| `crunchy-postgres-ha` | 13.4 | 5.0.0 | 5.0.2 |
-| `crunchy-postgres-ha` | 12.8 | 5.0.0 | 5.0.2 |
-| `crunchy-postgres-ha` | 11.13 | 5.0.0 | 5.0.2 |
-| `crunchy-postgres-ha` | 10.18 | 5.0.0 | 5.0.2 |
-| `crunchy-postgres-gis-ha` | 13.4-3.1 | 5.0.0 | 5.0.2 |
-| `crunchy-postgres-gis-ha` | 13.4-3.0 | 5.0.0 | 5.0.2 |
-| `crunchy-postgres-gis-ha` | 12.8-3.0 | 5.0.0 | 5.0.2 |
-| `crunchy-postgres-gis-ha` | 12.8-2.5 | 5.0.0 | 5.0.2 |
-| `crunchy-postgres-gis-ha` | 11.13-2.5 | 5.0.0 | 5.0.2 |
-| `crunchy-postgres-gis-ha` | 11.13-2.4 | 5.0.0 | 5.0.2 |
-| `crunchy-postgres-gis-ha` | 10.18-2.4 | 5.0.0 | 5.0.2 |
-| `crunchy-postgres-gis-ha` | 10.18-2.3 | 5.0.0 | 5.0.2 |
-
-### Container Tags
-
-The container tags follow one of two patterns:
-
-- `--`
-- `---` (Customer Portal only)
-
-For example, when pulling from the [customer portal](https://access.crunchydata.com/), the following would both be valid tags to reference the PgBouncer container:
-
-- `{{< param PGBouncerComponentTagUbi8 >}}`
-- `{{< param PGBouncerTagUbi8 >}}`
-
-On the [developer portal](https://www.crunchydata.com/developers/download-postgres/containers), PgBouncer would use this tag:
-
-- `{{< param PGBouncerComponentTagUbi8 >}}`
-
-PostGIS enabled containers have both the Postgres and PostGIS software versions included. For example, Postgres 14 with PostGIS 3.2 would use the following tags:
-
-- `{{< param postgres14GIS32ComponentTagUbi8 >}}`
-- `{{< param postgres14GIS32TagUbi8 >}}`
-
-## Extensions Compatibility
-
-The following table defines the compatibility between Postgres extensions and versions of Postgres they are available in. The "Postgres version" corresponds with the major version of a Postgres container.
-
-The table also lists the initial PGO version that the version of the extension is available in.
-
-| Extension | Version | Postgres Versions | Initial PGO Version |
-|-----------|---------|-------------------|---------------------|
-| `orafce` | 3.25.1 | 15, 14, 13, 12, 11 | 5.3.0 |
-| `orafce` | 3.25.1 | 14, 13, 12, 11, 10 | 5.2.1 |
-| `orafce` | 3.24.0 | 14, 13, 12, 11, 10 | 5.1.3 |
-| `orafce` | 3.22.0 | 14, 13, 12, 11, 10 | 5.0.8 |
-| `pgAudit` | 1.7.0 | 15 | 5.3.0 |
-| `pgAudit` | 1.6.2 | 14 | 5.1.0 |
-| `pgAudit` | 1.6.2 | 14 | 5.0.6 |
-| `pgAudit` | 1.6.1 | 14 | 5.0.4 |
-| `pgAudit` | 1.6.0 | 14 | 5.0.3 |
-| `pgAudit` | 1.5.2 | 13 | 5.1.0 |
-| `pgAudit` | 1.5.2 | 13 | 5.0.6 |
-| `pgAudit` | 1.5.0 | 13 | 5.0.0 |
-| `pgAudit` | 1.4.3 | 12 | 5.1.0 |
-| `pgAudit` | 1.4.1 | 12 | 5.0.0 |
-| `pgAudit` | 1.3.4 | 11 | 5.1.0 |
-| `pgAudit` | 1.3.4 | 11 | 5.0.6 |
-| `pgAudit` | 1.3.2 | 11 | 5.0.0 |
-| `pgAudit` | 1.2.4 | 10 | 5.1.0 |
-| `pgAudit` | 1.2.4 | 10 | 5.0.6 |
-| `pgAudit` | 1.2.2 | 10 | 5.0.0 |
-| `pgAudit Analyze` | 1.0.8 | 14, 13, 12, 11, 10 | 5.0.3 |
-| `pgAudit Analyze` | 1.0.7 | 13, 12, 11, 10 | 5.0.0 |
-| `pg_cron` | 1.4.2 | 15, 14, 13 | 5.3.0 |
-| `pg_cron` | 1.4.2 | 14, 13 | 5.2.1 |
-| `pg_cron` | 1.4.1 | 14, 13, 12, 11, 10 | 5.0.5 |
-| `pg_cron` | 1.3.1 | 14, 13, 12, 11, 10 | 5.0.0 |
-| `pg_partman` | 4.7.1 | 15, 14, 13, 12, 11 | 5.3.0 |
-| `pg_partman` | 4.6.2 | 14, 13, 12, 11, 10 | 5.2.0 |
-| `pg_partman` | 4.6.2 | 14, 13, 12, 11, 10 | 5.1.3 |
-| `pg_partman` | 4.6.2 | 14, 13, 12, 11, 10 | 5.0.8 |
-| `pg_partman` | 4.6.1 | 14, 13, 12, 11, 10 | 5.1.1 |
-| `pg_partman` | 4.6.1 | 14, 13, 12, 11, 10 | 5.0.6 |
-| `pg_partman` | 4.6.0 | 14, 13, 12, 11, 10 | 5.0.4 |
-| `pg_partman` | 4.5.1 | 13, 12, 11, 10 | 5.0.0 |
-| `pgnodemx` | 1.3.0 | 14, 13, 12, 11, 10 | 5.1.0 |
-| `pgnodemx` | 1.3.0 | 14, 13, 12, 11, 10 | 5.0.6 |
-| `pgnodemx` | 1.2.0 | 14, 13, 12, 11, 10 | 5.0.4 |
-| `pgnodemx` | 1.0.5 | 14, 13, 12, 11, 10 | 5.0.3 |
-| `pgnodemx` | 1.0.4 | 13, 12, 11, 10 | 5.0.0 |
-| `set_user` | 3.0.0 | 14, 13, 12, 11, 10 | 5.0.3 |
-| `set_user` | 2.0.1 | 13, 12, 11, 10 | 5.0.2 |
-| `set_user` | 2.0.0 | 13, 12, 11, 10 | 5.0.0 |
-| `TimescaleDB` | 2.8.1 | 14, 13, 12 | 5.3.0 |
-| `TimescaleDB` | 2.6.1 | 14, 13, 12 | 5.1.1 |
-| `TimescaleDB` | 2.6.1 | 14, 13, 12 | 5.0.6 |
-| `TimescaleDB` | 2.6.0 | 14, 13, 12 | 5.1.0 |
-| `TimescaleDB` | 2.5.0 | 14, 13, 12 | 5.0.3 |
-| `TimescaleDB` | 2.4.2 | 13, 12 | 5.0.3 |
-| `TimescaleDB` | 2.4.0 | 13, 12 | 5.0.2 |
-| `TimescaleDB` | 2.3.1 | 11 | 5.0.1 |
-| `TimescaleDB` | 2.2.0 | 13, 12, 11 | 5.0.0 |
-| `wal2json` | 2.4 | 14, 13, 12, 11, 10 | 5.0.3 |
-| `wal2json` | 2.3 | 13, 12, 11, 10 | 5.0.0 |
-
-### Geospatial Extensions
-
-The following extensions are available in the geospatially aware containers (`crunchy-postgres-gis`):
-
-| Extension | Version | Postgres Versions | Initial PGO Version |
-|-----------|---------|-------------------|---------------------|
-| `PostGIS` | 3.2 | 14 | 5.1.1 |
-| `PostGIS` | 3.2 | 14 | 5.0.6 |
-| `PostGIS` | 3.1 | 14, 13 | 5.0.0 |
-| `PostGIS` | 3.0 | 13, 12 | 5.0.0 |
-| `PostGIS` | 2.5 | 12, 11 | 5.0.0 |
-| `PostGIS` | 2.4 | 11, 10 | 5.0.0 |
-| `PostGIS` | 2.3 | 10 | 5.0.0 |
-| `pgrouting` | 3.1.4 | 14 | 5.0.4 |
-| `pgrouting` | 3.1.3 | 13 | 5.0.0 |
-| `pgrouting` | 3.0.5 | 13, 12 | 5.0.0 |
-| `pgrouting` | 2.6.3 | 12, 11, 10 | 5.0.0 |
diff --git a/docs/content/references/crd.md b/docs/content/references/crd.md
deleted file mode 100644
index 25eceb069e..0000000000
--- a/docs/content/references/crd.md
+++ /dev/null
@@ -1,25909 +0,0 @@
----
-title: CRD Reference
-draft: false
-weight: 100
----
-
-Packages:
-
-- [postgres-operator.crunchydata.com/v1beta1](#postgres-operatorcrunchydatacomv1beta1)
-
-
Configuration settings for the pgAdmin process. Changes to any of these values will be loaded without validation. Be careful, as you may put pgAdmin into an unusable state.
-
false
-
-
image
-
string
-
The image name to use for pgAdmin instance.
-
false
-
-
imagePullPolicy
-
enum
-
ImagePullPolicy is used to determine when Kubernetes will attempt to pull (download) container images. More info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
The image pull secrets used to pull from a private registry. Changing this value causes all running PGAdmin pods to restart. https://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/
Priority class name for the PGAdmin pod. Changing this value causes PGAdmin pod to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
ServerGroups for importing PostgresClusters to pgAdmin. To create a pgAdmin with no selectors, leave this field empty. A pgAdmin created with no `ServerGroups` will not automatically add any servers through discovery. PostgresClusters can still be added manually.
-
-
-
-Defines a PersistentVolumeClaim for pgAdmin data. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
accessModes
-
[]string
-
accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
selector is a label query over volumes to consider for binding.
-
false
-
-
storageClassName
-
string
-
storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
-
false
-
-
volumeMode
-
string
-
volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
-
false
-
-
volumeName
-
string
-
volumeName is the binding reference to the PersistentVolume backing this claim.
-
-
-
-dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
-
-
-
-dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
-
-
-
-resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-
-
-A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Configuration settings for the pgAdmin process. Changes to any of these values will be loaded without validation. Be careful, as you may put pgAdmin into an unusable state.
-
-
A Secret containing the value for the LDAP_BIND_PASSWORD setting. More info: https://www.pgadmin.org/docs/pgadmin4/latest/ldap.html
-
false
-
-
settings
-
object
-
Settings for the pgAdmin server process. Keys should be uppercase and values must be constants. More info: https://www.pgadmin.org/docs/pgadmin4/latest/config_py.html
items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional specify whether the ConfigMap or its keys must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-DownwardAPIVolumeFile represents information to create the file containing the pod field
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
-
false
-
-
mode
-
integer
-
Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
resource
-
string
-
Required: resource to select
-
true
-
-
containerName
-
string
-
Container name: required for volumes, optional for env vars
-
false
-
-
divisor
-
int or string
-
Specifies the output format of the exposed resources, defaults to "1"
items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional field specify whether the Secret or its key must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-serviceAccountToken is information about the serviceAccountToken data to project
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
path is the path relative to the mount point of the file to project the token into.
-
true
-
-
audience
-
string
-
audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.
-
false
-
-
expirationSeconds
-
integer
-
expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.
-
-
-
-Resource requirements for the PGAdmin container.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
PostgresClusterSelector selects clusters to dynamically add to pgAdmin by matching labels. An empty selector like `{}` will select ALL clusters in the namespace.
-
-
-
-PostgresClusterSelector selects clusters to dynamically add to pgAdmin by matching labels. An empty selector like `{}` will select ALL clusters in the namespace.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
effect
-
string
-
Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
-
false
-
-
key
-
string
-
Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
-
false
-
-
operator
-
string
-
Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
-
false
-
-
tolerationSeconds
-
integer
-
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
-
false
-
-
value
-
string
-
Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
conditions represent the observations of pgadmin's current state. Known .status.conditions.type are: "PersistentVolumeResizing", "Progressing", "ProxyAvailable"
-
false
-
-
observedGeneration
-
integer
-
observedGeneration represents the .metadata.generation on which the status was based.
-
-
-
-Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
- // other fields }
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
lastTransitionTime
-
string
-
lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
-
true
-
-
message
-
string
-
message is a human readable message indicating details about the transition. This may be an empty string.
-
true
-
-
reason
-
string
-
reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
-
true
-
-
status
-
enum
-
status of the condition, one of True, False, Unknown.
-
true
-
-
type
-
string
-
type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
-
true
-
-
observedGeneration
-
integer
-
observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
-
false
-
-
-
-
PGUpgrade
-
-
-
-
-
-
-PGUpgrade is the Schema for the pgupgrades API
-
-
Scheduling constraints of the PGUpgrade pod. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
-
false
-
-
image
-
string
-
The image name to use for major PostgreSQL upgrades.
-
false
-
-
imagePullPolicy
-
enum
-
ImagePullPolicy is used to determine when Kubernetes will attempt to pull (download) container images. More info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
The image pull secrets used to pull from a private registry. Changing this value causes all running PGUpgrade pods to restart. https://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/
Priority class name for the PGUpgrade pod. Changing this value causes PGUpgrade pod to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-
-
-A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Resource requirements for the PGUpgrade container.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
effect
-
string
-
Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
-
false
-
-
key
-
string
-
Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
-
false
-
-
operator
-
string
-
Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
-
false
-
-
tolerationSeconds
-
integer
-
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
-
false
-
-
value
-
string
-
Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
-
-
-
-Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
- // other fields }
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
lastTransitionTime
-
string
-
lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
-
true
-
-
message
-
string
-
message is a human readable message indicating details about the transition. This may be an empty string.
-
true
-
-
reason
-
string
-
reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
-
true
-
-
status
-
enum
-
status of the condition, one of True, False, Unknown.
-
true
-
-
type
-
string
-
type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
-
true
-
-
observedGeneration
-
integer
-
observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
-
false
-
-
-
-
PostgresCluster
-
-
-
-
-
-
-PostgresCluster is the Schema for the postgresclusters API
-
-
The secret containing the replication client certificates and keys for secure connections to the PostgreSQL server. It will need to contain the client TLS certificate, TLS key and the Certificate Authority certificate with the data keys set to tls.crt, tls.key and ca.crt, respectively. NOTE: If CustomReplicationClientTLSSecret is provided, CustomTLSSecret MUST be provided and the ca.crt provided must be the same.
The secret containing the Certificates and Keys to encrypt PostgreSQL traffic will need to contain the server TLS certificate, TLS key and the Certificate Authority certificate with the data keys set to tls.crt, tls.key and ca.crt, respectively. It will then be mounted as a volume projection to the '/pgconf/tls' directory. For more information on Kubernetes secret projections, please see https://k8s.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths NOTE: If CustomTLSSecret is provided, CustomReplicationClientTLSSecret MUST be provided and the ca.crt provided must be the same.
DatabaseInitSQL defines a ConfigMap containing custom SQL that will be run after the cluster is initialized. This ConfigMap must be in the same namespace as the cluster.
-
false
-
-
disableDefaultPodScheduling
-
boolean
-
Whether or not the PostgreSQL cluster should use the defined default scheduling constraints. If the field is unset or false, the default scheduling constraints will be used in addition to any custom constraints provided.
-
false
-
-
image
-
string
-
The image name to use for PostgreSQL containers. When omitted, the value comes from an operator environment variable. For standard PostgreSQL images, the format is RELATED_IMAGE_POSTGRES_{postgresVersion}, e.g. RELATED_IMAGE_POSTGRES_13. For PostGIS enabled PostgreSQL images, the format is RELATED_IMAGE_POSTGRES_{postgresVersion}_GIS_{postGISVersion}, e.g. RELATED_IMAGE_POSTGRES_13_GIS_3.1.
-
false
-
-
imagePullPolicy
-
enum
-
ImagePullPolicy is used to determine when Kubernetes will attempt to pull (download) container images. More info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
The image pull secrets used to pull from a private registry Changing this value causes all running pods to restart. https://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/
The specification of monitoring tools that connect to PostgreSQL
-
false
-
-
openshift
-
boolean
-
Whether or not the PostgreSQL cluster is being deployed to an OpenShift environment. If the field is unset, the operator will automatically detect the environment.
Specification of the service that exposes the PostgreSQL primary instance.
-
false
-
-
shutdown
-
boolean
-
Whether or not the PostgreSQL cluster should be stopped. When this is true, workloads are scaled to zero and CronJobs are suspended. Other resources, such as Services and Volumes, remain in place.
Run this cluster as a read-only copy of an existing cluster or archive.
-
false
-
-
supplementalGroups
-
[]integer
-
A list of group IDs applied to the process of a container. These can be useful when accessing shared file systems with constrained permissions. More info: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context
Users to create inside PostgreSQL and the databases they should access. The default creates one user that can access one database matching the PostgresCluster name. An empty list creates no users. Removing a user from this list does NOT drop the user nor revoke their access.
Projected volumes containing custom pgBackRest configuration. These files are mounted under "/etc/pgbackrest/conf.d" alongside any pgBackRest configuration generated by the PostgreSQL Operator: https://pgbackrest.org/configuration.html
-
false
-
-
global
-
map[string]string
-
Global pgBackRest configuration settings. These settings are included in the "global" section of the pgBackRest configuration generated by the PostgreSQL Operator, and then mounted under "/etc/pgbackrest/conf.d": https://pgbackrest.org/configuration.html
-
false
-
-
image
-
string
-
The image name to use for pgBackRest containers. Utilized to run pgBackRest repository hosts and backups. The image may also be set using the RELATED_IMAGE_PGBACKREST environment variable
Defines configuration for a pgBackRest dedicated repository host. This section is only applicable if at least one "volume" (i.e. PVC-based) repository is defined in the "repos" section, therefore enabling a dedicated repository host Deployment.
Defines the schedules for the pgBackRest backups Full, Differential and Incremental backup types are supported: https://pgbackrest.org/user-guide.html#concept/backup
-
-
-
-Defines the schedules for the pgBackRest backups Full, Differential and Incremental backup types are supported: https://pgbackrest.org/user-guide.html#concept/backup
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
differential
-
string
-
Defines the Cron schedule for a differential pgBackRest backup. Follows the standard Cron schedule syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax
-
false
-
-
full
-
string
-
Defines the Cron schedule for a full pgBackRest backup. Follows the standard Cron schedule syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax
-
false
-
-
incremental
-
string
-
Defines the Cron schedule for an incremental pgBackRest backup. Follows the standard Cron schedule syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax
-
-
-
-Defines a PersistentVolumeClaim spec used to create and/or bind a volume
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
accessModes
-
[]string
-
accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
selector is a label query over volumes to consider for binding.
-
false
-
-
storageClassName
-
string
-
storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
-
false
-
-
volumeMode
-
string
-
volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
-
false
-
-
volumeName
-
string
-
volumeName is the binding reference to the PersistentVolume backing this claim.
-
-
-
-resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
true
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
-
-
-
-dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional specify whether the ConfigMap or its keys must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-DownwardAPIVolumeFile represents information to create the file containing the pod field
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
-
false
-
-
mode
-
integer
-
Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
resource
-
string
-
Required: resource to select
-
true
-
-
containerName
-
string
-
Container name: required for volumes, optional for env vars
-
false
-
-
divisor
-
int or string
-
Specifies the output format of the exposed resources, defaults to "1"
items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional field specify whether the Secret or its key must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-serviceAccountToken is information about the serviceAccountToken data to project
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
path is the path relative to the mount point of the file to project the token into.
-
true
-
-
audience
-
string
-
audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.
-
false
-
-
expirationSeconds
-
integer
-
expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-
-
-A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Resource limits for backup jobs. Includes manual, scheduled and replica create backups
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
effect
-
string
-
Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
-
false
-
-
key
-
string
-
Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
-
false
-
-
operator
-
string
-
Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
-
false
-
-
tolerationSeconds
-
integer
-
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
-
false
-
-
value
-
string
-
Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
-
-
-
-Defines configuration for a pgBackRest dedicated repository host. This section is only applicable if at least one "volume" (i.e. PVC-based) repository is defined in the "repos" section, therefore enabling a dedicated repository host Deployment.
-
-
Scheduling constraints of the Dedicated repo host pod. Changing this value causes repo host to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
-
false
-
-
priorityClassName
-
string
-
Priority class name for the pgBackRest repo host pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
Tolerations of a PgBackRest repo host pod. Changing this value causes a restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
Topology spread constraints of a Dedicated repo host pod. Changing this value causes the repo host to restart. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
-
-
-
-Scheduling constraints of the Dedicated repo host pod. Changing this value causes repo host to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
-
-
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-
-
-A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Resource requirements for a pgBackRest repository host
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional specify whether the ConfigMap or its keys must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional field specify whether the Secret or its key must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
effect
-
string
-
Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
-
false
-
-
key
-
string
-
Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
-
false
-
-
operator
-
string
-
Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
-
false
-
-
tolerationSeconds
-
integer
-
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
-
false
-
-
value
-
string
-
Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
-
-
-
-TopologySpreadConstraint specifies how to spread matching pods among the given topology.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
maxSkew
-
integer
-
MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.
-
true
-
-
topologyKey
-
string
-
TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes match the node selector. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.
-
true
-
-
whenUnsatisfiable
-
string
-
WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.
LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.
-
false
-
-
minDomains
-
integer
-
MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
- For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew.
- This is an alpha field and requires enabling MinDomainsInPodTopologySpread feature gate.
-
-
-
-LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines details for performing an in-place restore using pgBackRest
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
enabled
-
boolean
-
Whether or not in-place pgBackRest restores are enabled for this PostgresCluster.
-
true
-
-
repoName
-
string
-
The name of the pgBackRest repo within the source PostgresCluster that contains the backups that should be utilized to perform a pgBackRest restore when initializing the data source for the new PostgresCluster.
Scheduling constraints of the pgBackRest restore Job. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
-
false
-
-
clusterName
-
string
-
The name of an existing PostgresCluster to use as the data source for the new PostgresCluster. Defaults to the name of the PostgresCluster being created if not provided.
-
false
-
-
clusterNamespace
-
string
-
The namespace of the cluster specified as the data source using the clusterName field. Defaults to the namespace of the PostgresCluster being created if not provided.
-
false
-
-
options
-
[]string
-
Command line options to include when running the pgBackRest restore command. https://pgbackrest.org/command.html#command-restore
-
false
-
-
priorityClassName
-
string
-
Priority class name for the pgBackRest restore Job pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-
-
-A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Resource requirements for the pgBackRest restore Job.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
effect
-
string
-
Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
-
false
-
-
key
-
string
-
Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
-
false
-
-
operator
-
string
-
Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
-
false
-
-
tolerationSeconds
-
integer
-
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
-
false
-
-
value
-
string
-
Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
-
-
-
-Resource requirements for a sidecar container
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-Resource requirements for a sidecar container
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
Scheduling constraints of a PostgreSQL pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
Minimum number of pods that should be available at a time. Defaults to one when the replicas field is greater than one.
-
false
-
-
name
-
string
-
Name that associates this set of PostgreSQL pods. This field is optional when only one instance set is defined. Each instance set in a cluster must have a unique name. The combined length of this and the cluster name must be 46 characters or less.
-
false
-
-
priorityClassName
-
string
-
Priority class name for the PostgreSQL pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
Tolerations of a PostgreSQL pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
Topology spread constraints of a PostgreSQL pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
-
-
-
-Defines a PersistentVolumeClaim for PostgreSQL data. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
accessModes
-
[]string
-
accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
selector is a label query over volumes to consider for binding.
-
false
-
-
storageClassName
-
string
-
storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
-
false
-
-
volumeMode
-
string
-
volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
-
false
-
-
volumeName
-
string
-
volumeName is the binding reference to the PersistentVolume backing this claim.
-
-
-
-resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
true
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
-
-
-
-dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Scheduling constraints of a PostgreSQL pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
-
-
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-
-
-A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A single application container that you want to run within a pod.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
name
-
string
-
Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.
-
true
-
-
args
-
[]string
-
Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
-
false
-
-
command
-
[]string
-
Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.
-
false
-
-
image
-
string
-
Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.
-
false
-
-
imagePullPolicy
-
string
-
Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated.
Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
false
-
-
stdin
-
boolean
-
Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.
-
false
-
-
stdinOnce
-
boolean
-
Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false
-
false
-
-
terminationMessagePath
-
string
-
Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.
-
false
-
-
terminationMessagePolicy
-
string
-
Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.
-
false
-
-
tty
-
boolean
-
Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.
Pod volumes to mount into the container's filesystem. Cannot be updated.
-
false
-
-
workingDir
-
string
-
Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.
-
-
-
-EnvVar represents an environment variable present in a Container.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
name
-
string
-
Name of the environment variable. Must be a C_IDENTIFIER.
-
true
-
-
value
-
string
-
Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".
Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
-
-
-
-Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
resource
-
string
-
Required: resource to select
-
true
-
-
containerName
-
string
-
Container name: required for volumes, optional for env vars
-
false
-
-
divisor
-
int or string
-
Specifies the output format of the exposed resources, defaults to "1"
PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
-
-
-
-PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
-
-
Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.
Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
-
-
-
-Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
port
-
int or string
-
Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
-
true
-
-
host
-
string
-
Optional: Host name to connect to, defaults to the pod IP.
-
-
-
-PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
-
-
Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.
Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
-
-
-
-Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
port
-
int or string
-
Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
-
true
-
-
host
-
string
-
Optional: Host name to connect to, defaults to the pod IP.
-
-
-
-Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
-
Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
false
-
-
periodSeconds
-
integer
-
How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
-
false
-
-
successThreshold
-
integer
-
Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
TCPSocket specifies an action involving a TCP port.
-
false
-
-
terminationGracePeriodSeconds
-
integer
-
Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
-
false
-
-
timeoutSeconds
-
integer
-
Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
-
-
-
-GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
port
-
integer
-
Port number of the gRPC service. Number must be in the range 1 to 65535.
-
true
-
-
service
-
string
-
Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
- If this is not specified, the default behavior is defined by gRPC.
-
-
-
-ContainerPort represents a network port in a single container.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
containerPort
-
integer
-
Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.
-
true
-
-
hostIP
-
string
-
What host IP to bind the external port to.
-
false
-
-
hostPort
-
integer
-
Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.
-
false
-
-
name
-
string
-
If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.
-
false
-
-
protocol
-
string
-
Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP".
-
-
-
-Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
-
Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
false
-
-
periodSeconds
-
integer
-
How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
-
false
-
-
successThreshold
-
integer
-
Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
TCPSocket specifies an action involving a TCP port.
-
false
-
-
terminationGracePeriodSeconds
-
integer
-
Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
-
false
-
-
timeoutSeconds
-
integer
-
Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
-
-
-
-GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
port
-
integer
-
Port number of the gRPC service. Number must be in the range 1 to 65535.
-
true
-
-
service
-
string
-
Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
- If this is not specified, the default behavior is defined by gRPC.
-
-
-
-Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
allowPrivilegeEscalation
-
boolean
-
AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.
The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.
-
false
-
-
privileged
-
boolean
-
Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.
-
false
-
-
procMount
-
string
-
procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.
-
false
-
-
readOnlyRootFilesystem
-
boolean
-
Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.
-
false
-
-
runAsGroup
-
integer
-
The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.
-
false
-
-
runAsNonRoot
-
boolean
-
Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
-
false
-
-
runAsUser
-
integer
-
The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.
The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.
The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.
The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.
-
-
-
-The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.
-
-
-
-
-
-The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
level
-
string
-
Level is SELinux level label that applies to the container.
-
false
-
-
role
-
string
-
Role is a SELinux role label that applies to the container.
-
false
-
-
type
-
string
-
Type is a SELinux type label that applies to the container.
-
false
-
-
user
-
string
-
User is a SELinux user label that applies to the container.
-
-
-
-The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
type
-
string
-
type indicates which kind of seccomp profile will be applied. Valid options are: Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.
-
true
-
-
localhostProfile
-
string
-
localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost".
-
-
-
-The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
gmsaCredentialSpec
-
string
-
GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.
-
false
-
-
gmsaCredentialSpecName
-
string
-
GMSACredentialSpecName is the name of the GMSA credential spec to use.
-
false
-
-
hostProcess
-
boolean
-
HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.
-
false
-
-
runAsUserName
-
string
-
The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
-
-
-
-StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
-
Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
false
-
-
periodSeconds
-
integer
-
How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
-
false
-
-
successThreshold
-
integer
-
Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
TCPSocket specifies an action involving a TCP port.
-
false
-
-
terminationGracePeriodSeconds
-
integer
-
Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
-
false
-
-
timeoutSeconds
-
integer
-
Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
-
-
-
-GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
port
-
integer
-
Port number of the gRPC service. Number must be in the range 1 to 65535.
-
true
-
-
service
-
string
-
Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
- If this is not specified, the default behavior is defined by gRPC.
-
-
-
-VolumeMount describes a mounting of a Volume within a container.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
mountPath
-
string
-
Path within the container at which the volume should be mounted. Must not contain ':'.
-
true
-
-
name
-
string
-
This must match the Name of a Volume.
-
true
-
-
mountPropagation
-
string
-
mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.
-
false
-
-
readOnly
-
boolean
-
Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.
-
false
-
-
subPath
-
string
-
Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root).
-
false
-
-
subPathExpr
-
string
-
Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive.
-
-
-
-Compute resources of a PostgreSQL container.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-Resource requirements for a sidecar container
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-Defines a PersistentVolumeClaim for a tablespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
accessModes
-
[]string
-
accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
selector is a label query over volumes to consider for binding.
-
false
-
-
storageClassName
-
string
-
storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
-
false
-
-
volumeMode
-
string
-
volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
-
false
-
-
volumeName
-
string
-
volumeName is the binding reference to the PersistentVolume backing this claim.
-
-
-
-dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
-
-
-
-dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
-
-
-
-resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
effect
-
string
-
Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
-
false
-
-
key
-
string
-
Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
-
false
-
-
operator
-
string
-
Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
-
false
-
-
tolerationSeconds
-
integer
-
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
-
false
-
-
value
-
string
-
Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
-
-
-
-TopologySpreadConstraint specifies how to spread matching pods among the given topology.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
maxSkew
-
integer
-
MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.
-
true
-
-
topologyKey
-
string
-
TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes match the node selector. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.
-
true
-
-
whenUnsatisfiable
-
string
-
WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.
LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.
-
false
-
-
minDomains
-
integer
-
MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
- For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew.
- This is an alpha field and requires enabling MinDomainsInPodTopologySpread feature gate.
-
-
-
-LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a separate PersistentVolumeClaim for PostgreSQL's write-ahead log. More info: https://www.postgresql.org/docs/current/wal.html
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
accessModes
-
[]string
-
accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
selector is a label query over volumes to consider for binding.
-
false
-
-
storageClassName
-
string
-
storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
-
false
-
-
volumeMode
-
string
-
volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
-
false
-
-
volumeName
-
string
-
volumeName is the binding reference to the PersistentVolume backing this claim.
-
-
-
-resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
true
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
-
-
-
-dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional specify whether the ConfigMap or its keys must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-DownwardAPIVolumeFile represents information to create the file containing the pod field
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
-
false
-
-
mode
-
integer
-
Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
resource
-
string
-
Required: resource to select
-
true
-
-
containerName
-
string
-
Container name: required for volumes, optional for env vars
-
false
-
-
divisor
-
int or string
-
Specifies the output format of the exposed resources, defaults to "1"
items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional field specify whether the Secret or its key must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-serviceAccountToken is information about the serviceAccountToken data to project
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
path is the path relative to the mount point of the file to project the token into.
-
true
-
-
audience
-
string
-
audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.
-
false
-
-
expirationSeconds
-
integer
-
expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.
-
-
-
-The secret containing the replication client certificates and keys for secure connections to the PostgreSQL server. It will need to contain the client TLS certificate, TLS key and the Certificate Authority certificate with the data keys set to tls.crt, tls.key and ca.crt, respectively. NOTE: If CustomReplicationClientTLSSecret is provided, CustomTLSSecret MUST be provided and the ca.crt provided must be the same.
-
-
items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional field specify whether the Secret or its key must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-The secret containing the Certificates and Keys to encrypt PostgreSQL traffic will need to contain the server TLS certificate, TLS key and the Certificate Authority certificate with the data keys set to tls.crt, tls.key and ca.crt, respectively. It will then be mounted as a volume projection to the '/pgconf/tls' directory. For more information on Kubernetes secret projections, please see https://k8s.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths NOTE: If CustomTLSSecret is provided, CustomReplicationClientTLSSecret MUST be provided and the ca.crt provided must be the same.
-
-
items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional field specify whether the Secret or its key must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
Defines a pgBackRest cloud-based data source that can be used to pre-populate the the PostgreSQL data directory for a new PostgreSQL cluster using a pgBackRest restore. The PGBackRest field is incompatible with the PostgresCluster field: only one data source can be used for pre-populating a new PostgreSQL cluster
Defines a pgBackRest data source that can be used to pre-populate the PostgreSQL data directory for a new PostgreSQL cluster using a pgBackRest restore. The PGBackRest field is incompatible with the PostgresCluster field: only one data source can be used for pre-populating a new PostgreSQL cluster
-
-
-
-Defines a pgBackRest cloud-based data source that can be used to pre-populate the the PostgreSQL data directory for a new PostgreSQL cluster using a pgBackRest restore. The PGBackRest field is incompatible with the PostgresCluster field: only one data source can be used for pre-populating a new PostgreSQL cluster
-
-
Projected volumes containing custom pgBackRest configuration. These files are mounted under "/etc/pgbackrest/conf.d" alongside any pgBackRest configuration generated by the PostgreSQL Operator: https://pgbackrest.org/configuration.html
-
false
-
-
global
-
map[string]string
-
Global pgBackRest configuration settings. These settings are included in the "global" section of the pgBackRest configuration generated by the PostgreSQL Operator, and then mounted under "/etc/pgbackrest/conf.d": https://pgbackrest.org/configuration.html
-
false
-
-
options
-
[]string
-
Command line options to include when running the pgBackRest restore command. https://pgbackrest.org/command.html#command-restore
-
false
-
-
priorityClassName
-
string
-
Priority class name for the pgBackRest restore Job pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
Defines the schedules for the pgBackRest backups Full, Differential and Incremental backup types are supported: https://pgbackrest.org/user-guide.html#concept/backup
-
-
-
-Defines the schedules for the pgBackRest backups Full, Differential and Incremental backup types are supported: https://pgbackrest.org/user-guide.html#concept/backup
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
differential
-
string
-
Defines the Cron schedule for a differential pgBackRest backup. Follows the standard Cron schedule syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax
-
false
-
-
full
-
string
-
Defines the Cron schedule for a full pgBackRest backup. Follows the standard Cron schedule syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax
-
false
-
-
incremental
-
string
-
Defines the Cron schedule for an incremental pgBackRest backup. Follows the standard Cron schedule syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax
-
-
-
-Defines a PersistentVolumeClaim spec used to create and/or bind a volume
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
accessModes
-
[]string
-
accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
selector is a label query over volumes to consider for binding.
-
false
-
-
storageClassName
-
string
-
storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
-
false
-
-
volumeMode
-
string
-
volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
-
false
-
-
volumeName
-
string
-
volumeName is the binding reference to the PersistentVolume backing this claim.
-
-
-
-dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
-
-
-
-dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
-
-
-
-resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-
-
-A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional specify whether the ConfigMap or its keys must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-DownwardAPIVolumeFile represents information to create the file containing the pod field
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
-
false
-
-
mode
-
integer
-
Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
resource
-
string
-
Required: resource to select
-
true
-
-
containerName
-
string
-
Container name: required for volumes, optional for env vars
-
false
-
-
divisor
-
int or string
-
Specifies the output format of the exposed resources, defaults to "1"
items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional field specify whether the Secret or its key must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-serviceAccountToken is information about the serviceAccountToken data to project
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
path is the path relative to the mount point of the file to project the token into.
-
true
-
-
audience
-
string
-
audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.
-
false
-
-
expirationSeconds
-
integer
-
expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.
-
-
-
-Resource requirements for the pgBackRest restore Job.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
effect
-
string
-
Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
-
false
-
-
key
-
string
-
Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
-
false
-
-
operator
-
string
-
Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
-
false
-
-
tolerationSeconds
-
integer
-
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
-
false
-
-
value
-
string
-
Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
-
-
-
-Defines a pgBackRest data source that can be used to pre-populate the PostgreSQL data directory for a new PostgreSQL cluster using a pgBackRest restore. The PGBackRest field is incompatible with the PostgresCluster field: only one data source can be used for pre-populating a new PostgreSQL cluster
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
repoName
-
string
-
The name of the pgBackRest repo within the source PostgresCluster that contains the backups that should be utilized to perform a pgBackRest restore when initializing the data source for the new PostgresCluster.
Scheduling constraints of the pgBackRest restore Job. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
-
false
-
-
clusterName
-
string
-
The name of an existing PostgresCluster to use as the data source for the new PostgresCluster. Defaults to the name of the PostgresCluster being created if not provided.
-
false
-
-
clusterNamespace
-
string
-
The namespace of the cluster specified as the data source using the clusterName field. Defaults to the namespace of the PostgresCluster being created if not provided.
-
false
-
-
options
-
[]string
-
Command line options to include when running the pgBackRest restore command. https://pgbackrest.org/command.html#command-restore
-
false
-
-
priorityClassName
-
string
-
Priority class name for the pgBackRest restore Job pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-
-
-A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Resource requirements for the pgBackRest restore Job.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
effect
-
string
-
Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
-
false
-
-
key
-
string
-
Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
-
false
-
-
operator
-
string
-
Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
-
false
-
-
tolerationSeconds
-
integer
-
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
-
false
-
-
value
-
string
-
Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
Defines the existing pg_wal volume and directory to use in the current PostgresCluster. Note that a defined pg_wal volume MUST be accompanied by a pgData volume.
-
-
-
-Defines the existing pg_wal volume and directory to use in the current PostgresCluster. Note that a defined pg_wal volume MUST be accompanied by a pgData volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
pvcName
-
string
-
The existing PVC name.
-
true
-
-
directory
-
string
-
The existing directory. When not set, a move Job is not created for the associated volume.
-
-
-
-DatabaseInitSQL defines a ConfigMap containing custom SQL that will be run after the cluster is initialized. This ConfigMap must be in the same namespace as the cluster.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
Key is the ConfigMap data key that points to a SQL string
Projected volumes containing custom PostgreSQL Exporter configuration. Currently supports the customization of PostgreSQL Exporter queries. If a "queries.yml" file is detected in any volume projected using this field, it will be loaded using the "extend.query-path" flag: https://github.com/prometheus-community/postgres_exporter#flags Changing the values of field causes PostgreSQL and the exporter to restart.
Changing this value causes PostgreSQL and the exporter to restart. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional specify whether the ConfigMap or its keys must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-DownwardAPIVolumeFile represents information to create the file containing the pod field
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
-
false
-
-
mode
-
integer
-
Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
resource
-
string
-
Required: resource to select
-
true
-
-
containerName
-
string
-
Container name: required for volumes, optional for env vars
-
false
-
-
divisor
-
int or string
-
Specifies the output format of the exposed resources, defaults to "1"
items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional field specify whether the Secret or its key must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-serviceAccountToken is information about the serviceAccountToken data to project
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
path is the path relative to the mount point of the file to project the token into.
-
true
-
-
audience
-
string
-
audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.
-
false
-
-
expirationSeconds
-
integer
-
expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.
items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional field specify whether the Secret or its key must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-Changing this value causes PostgreSQL and the exporter to restart. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
Patroni dynamic configuration settings. Changes to this value will be automatically reloaded without validation. Changes to certain PostgreSQL parameters cause PostgreSQL to restart. More info: https://patroni.readthedocs.io/en/latest/SETTINGS.html
-
false
-
-
leaderLeaseDurationSeconds
-
integer
-
TTL of the cluster leader lock. "Think of it as the length of time before initiation of the automatic failover process." Changing this value causes PostgreSQL to restart.
-
false
-
-
port
-
integer
-
The port on which Patroni should listen. Changing this value causes PostgreSQL to restart.
Switchover gives options to perform ad hoc switchovers in a PostgresCluster.
-
false
-
-
syncPeriodSeconds
-
integer
-
The interval for refreshing the leader lock and applying dynamicConfiguration. Must be less than leaderLeaseDurationSeconds. Changing this value causes PostgreSQL to restart.
-
-
-
-Switchover gives options to perform ad hoc switchovers in a PostgresCluster.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
enabled
-
boolean
-
Whether or not the operator should allow switchovers in a PostgresCluster
-
true
-
-
targetInstance
-
string
-
The instance that should become primary during a switchover. This field is optional when Type is "Switchover" and required when Type is "Failover". When it is not specified, a healthy replica is automatically selected.
-
false
-
-
type
-
enum
-
Type of switchover to perform. Valid options are Switchover and Failover. "Switchover" changes the primary instance of a healthy PostgresCluster. "Failover" forces a particular instance to be primary, regardless of other factors. A TargetInstance must be specified to failover. NOTE: The Failover type is reserved as the "last resort" case.
Scheduling constraints of a PgBouncer pod. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
Configuration settings for the PgBouncer process. Changes to any of these values will be automatically reloaded without validation. Be careful, as you may put PgBouncer into an unusable state. More info: https://www.pgbouncer.org/usage.html#reload
A secret projection containing a certificate and key with which to encrypt connections to PgBouncer. The "tls.crt", "tls.key", and "ca.crt" paths must be PEM-encoded certificates and keys. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths
-
false
-
-
image
-
string
-
Name of a container image that can run PgBouncer 1.15 or newer. Changing this value causes PgBouncer to restart. The image may also be set using the RELATED_IMAGE_PGBOUNCER environment variable. More info: https://kubernetes.io/docs/concepts/containers/images
Minimum number of pods that should be available at a time. Defaults to one when the replicas field is greater than one.
-
false
-
-
port
-
integer
-
Port on which PgBouncer should listen for client connections. Changing this value causes PgBouncer to restart.
-
false
-
-
priorityClassName
-
string
-
Priority class name for the pgBouncer pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
Compute resources of a PgBouncer container. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
Tolerations of a PgBouncer pod. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
Topology spread constraints of a PgBouncer pod. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
-
-
-
-Scheduling constraints of a PgBouncer pod. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
-
-
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-
-
-A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Configuration settings for the PgBouncer process. Changes to any of these values will be automatically reloaded without validation. Be careful, as you may put PgBouncer into an unusable state. More info: https://www.pgbouncer.org/usage.html#reload
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
databases
-
map[string]string
-
PgBouncer database definitions. The key is the database requested by a client while the value is a libpq-styled connection string. The special key "*" acts as a fallback. When this field is empty, PgBouncer is configured with a single "*" entry that connects to the primary PostgreSQL instance. More info: https://www.pgbouncer.org/config.html#section-databases
Files to mount under "/etc/pgbouncer". When specified, settings in the "pgbouncer.ini" file are loaded before all others. From there, other files may be included by absolute path. Changing these references causes PgBouncer to restart, but changes to the file contents are automatically reloaded. More info: https://www.pgbouncer.org/config.html#include-directive
-
false
-
-
global
-
map[string]string
-
Settings that apply to the entire PgBouncer process. More info: https://www.pgbouncer.org/config.html
-
false
-
-
users
-
map[string]string
-
Connection settings specific to particular users. More info: https://www.pgbouncer.org/config.html#section-users
items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional specify whether the ConfigMap or its keys must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-DownwardAPIVolumeFile represents information to create the file containing the pod field
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
-
false
-
-
mode
-
integer
-
Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
resource
-
string
-
Required: resource to select
-
true
-
-
containerName
-
string
-
Container name: required for volumes, optional for env vars
-
false
-
-
divisor
-
int or string
-
Specifies the output format of the exposed resources, defaults to "1"
items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional field specify whether the Secret or its key must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-serviceAccountToken is information about the serviceAccountToken data to project
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
path is the path relative to the mount point of the file to project the token into.
-
true
-
-
audience
-
string
-
audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.
-
false
-
-
expirationSeconds
-
integer
-
expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.
-
-
-
-A single application container that you want to run within a pod.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
name
-
string
-
Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.
-
true
-
-
args
-
[]string
-
Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
-
false
-
-
command
-
[]string
-
Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.
-
false
-
-
image
-
string
-
Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.
-
false
-
-
imagePullPolicy
-
string
-
Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated.
Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
false
-
-
stdin
-
boolean
-
Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false.
-
false
-
-
stdinOnce
-
boolean
-
Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false
-
false
-
-
terminationMessagePath
-
string
-
Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.
-
false
-
-
terminationMessagePolicy
-
string
-
Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.
-
false
-
-
tty
-
boolean
-
Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.
Pod volumes to mount into the container's filesystem. Cannot be updated.
-
false
-
-
workingDir
-
string
-
Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.
-
-
-
-EnvVar represents an environment variable present in a Container.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
name
-
string
-
Name of the environment variable. Must be a C_IDENTIFIER.
-
true
-
-
value
-
string
-
Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".
Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
-
-
-
-Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
resource
-
string
-
Required: resource to select
-
true
-
-
containerName
-
string
-
Container name: required for volumes, optional for env vars
-
false
-
-
divisor
-
int or string
-
Specifies the output format of the exposed resources, defaults to "1"
PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
-
-
-
-PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
-
-
Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.
Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
-
-
-
-Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
port
-
int or string
-
Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
-
true
-
-
host
-
string
-
Optional: Host name to connect to, defaults to the pod IP.
-
-
-
-PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
-
-
Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.
Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
-
-
-
-Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
port
-
int or string
-
Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
-
true
-
-
host
-
string
-
Optional: Host name to connect to, defaults to the pod IP.
-
-
-
-Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
-
Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
false
-
-
periodSeconds
-
integer
-
How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
-
false
-
-
successThreshold
-
integer
-
Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
TCPSocket specifies an action involving a TCP port.
-
false
-
-
terminationGracePeriodSeconds
-
integer
-
Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
-
false
-
-
timeoutSeconds
-
integer
-
Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
-
-
-
-GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
port
-
integer
-
Port number of the gRPC service. Number must be in the range 1 to 65535.
-
true
-
-
service
-
string
-
Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
- If this is not specified, the default behavior is defined by gRPC.
-
-
-
-ContainerPort represents a network port in a single container.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
containerPort
-
integer
-
Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.
-
true
-
-
hostIP
-
string
-
What host IP to bind the external port to.
-
false
-
-
hostPort
-
integer
-
Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this.
-
false
-
-
name
-
string
-
If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.
-
false
-
-
protocol
-
string
-
Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP".
-
-
-
-Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
-
Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
false
-
-
periodSeconds
-
integer
-
How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
-
false
-
-
successThreshold
-
integer
-
Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
TCPSocket specifies an action involving a TCP port.
-
false
-
-
terminationGracePeriodSeconds
-
integer
-
Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
-
false
-
-
timeoutSeconds
-
integer
-
Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
-
-
-
-GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
port
-
integer
-
Port number of the gRPC service. Number must be in the range 1 to 65535.
-
true
-
-
service
-
string
-
Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
- If this is not specified, the default behavior is defined by gRPC.
-
-
-
-Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
allowPrivilegeEscalation
-
boolean
-
AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.
The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.
-
false
-
-
privileged
-
boolean
-
Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.
-
false
-
-
procMount
-
string
-
procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.
-
false
-
-
readOnlyRootFilesystem
-
boolean
-
Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.
-
false
-
-
runAsGroup
-
integer
-
The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.
-
false
-
-
runAsNonRoot
-
boolean
-
Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
-
false
-
-
runAsUser
-
integer
-
The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.
The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.
The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.
The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.
-
-
-
-The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.
-
-
-
-
-
-The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
level
-
string
-
Level is SELinux level label that applies to the container.
-
false
-
-
role
-
string
-
Role is a SELinux role label that applies to the container.
-
false
-
-
type
-
string
-
Type is a SELinux type label that applies to the container.
-
false
-
-
user
-
string
-
User is a SELinux user label that applies to the container.
-
-
-
-The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
type
-
string
-
type indicates which kind of seccomp profile will be applied. Valid options are: Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.
-
true
-
-
localhostProfile
-
string
-
localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost".
-
-
-
-The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
gmsaCredentialSpec
-
string
-
GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field.
-
false
-
-
gmsaCredentialSpecName
-
string
-
GMSACredentialSpecName is the name of the GMSA credential spec to use.
-
false
-
-
hostProcess
-
boolean
-
HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.
-
false
-
-
runAsUserName
-
string
-
The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
-
-
-
-StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
-
Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
-
false
-
-
periodSeconds
-
integer
-
How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
-
false
-
-
successThreshold
-
integer
-
Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
TCPSocket specifies an action involving a TCP port.
-
false
-
-
terminationGracePeriodSeconds
-
integer
-
Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
-
false
-
-
timeoutSeconds
-
integer
-
Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
-
-
-
-GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
port
-
integer
-
Port number of the gRPC service. Number must be in the range 1 to 65535.
-
true
-
-
service
-
string
-
Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
- If this is not specified, the default behavior is defined by gRPC.
-
-
-
-VolumeMount describes a mounting of a Volume within a container.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
mountPath
-
string
-
Path within the container at which the volume should be mounted. Must not contain ':'.
-
true
-
-
name
-
string
-
This must match the Name of a Volume.
-
true
-
-
mountPropagation
-
string
-
mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.
-
false
-
-
readOnly
-
boolean
-
Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.
-
false
-
-
subPath
-
string
-
Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root).
-
false
-
-
subPathExpr
-
string
-
Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive.
-
-
-
-A secret projection containing a certificate and key with which to encrypt connections to PgBouncer. The "tls.crt", "tls.key", and "ca.crt" paths must be PEM-encoded certificates and keys. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths
-
-
items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional field specify whether the Secret or its key must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-Compute resources of a PgBouncer container. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
The port on which this service is exposed when type is NodePort or LoadBalancer. Value must be in-range and not in use or the operation will fail. If unspecified, a port will be allocated if this Service requires one. - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
-
false
-
-
type
-
enum
-
More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
-
-
-
-Resource requirements for a sidecar container
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
-
-
-The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
effect
-
string
-
Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
-
false
-
-
key
-
string
-
Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
-
false
-
-
operator
-
string
-
Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
-
false
-
-
tolerationSeconds
-
integer
-
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
-
false
-
-
value
-
string
-
Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
-
-
-
-TopologySpreadConstraint specifies how to spread matching pods among the given topology.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
maxSkew
-
integer
-
MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.
-
true
-
-
topologyKey
-
string
-
TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes match the node selector. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.
-
true
-
-
whenUnsatisfiable
-
string
-
WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.
LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.
-
false
-
-
minDomains
-
integer
-
MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
- For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew.
- This is an alpha field and requires enabling MinDomainsInPodTopologySpread feature gate.
-
-
-
-LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The port on which this service is exposed when type is NodePort or LoadBalancer. Value must be in-range and not in use or the operation will fail. If unspecified, a port will be allocated if this Service requires one. - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
-
false
-
-
type
-
enum
-
More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
-
-
-
-Run this cluster as a read-only copy of an existing cluster or archive.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
enabled
-
boolean
-
Whether or not the PostgreSQL cluster should be read-only. When this is true, WAL files are applied from a pgBackRest repository or another PostgreSQL server.
-
false
-
-
host
-
string
-
Network address of the PostgreSQL server to follow via streaming replication.
-
false
-
-
port
-
integer
-
Network port of the PostgreSQL server to follow via streaming replication.
-
false
-
-
repoName
-
string
-
The name of the pgBackRest repository to follow for WAL files.
Scheduling constraints of a pgAdmin pod. Changing this value causes pgAdmin to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
Configuration settings for the pgAdmin process. Changes to any of these values will be loaded without validation. Be careful, as you may put pgAdmin into an unusable state.
-
false
-
-
image
-
string
-
Name of a container image that can run pgAdmin 4. Changing this value causes pgAdmin to restart. The image may also be set using the RELATED_IMAGE_PGADMIN environment variable. More info: https://kubernetes.io/docs/concepts/containers/images
Priority class name for the pgAdmin pod. Changing this value causes pgAdmin to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
Compute resources of a pgAdmin container. Changing this value causes pgAdmin to restart. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
Tolerations of a pgAdmin pod. Changing this value causes pgAdmin to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration
Topology spread constraints of a pgAdmin pod. Changing this value causes pgAdmin to restart. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
-
-
-
-Defines a PersistentVolumeClaim for pgAdmin data. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
accessModes
-
[]string
-
accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
selector is a label query over volumes to consider for binding.
-
false
-
-
storageClassName
-
string
-
storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
-
false
-
-
volumeMode
-
string
-
volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
-
false
-
-
volumeName
-
string
-
volumeName is the binding reference to the PersistentVolume backing this claim.
-
-
-
-dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
-
-
-
-dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While DataSource ignores disallowed values (dropping them), DataSourceRef preserves all values, and generates an error if a disallowed value is specified. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
kind
-
string
-
Kind is the type of resource being referenced
-
true
-
-
name
-
string
-
Name is the name of resource being referenced
-
true
-
-
apiGroup
-
string
-
APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
-
-
-
-resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Scheduling constraints of a pgAdmin pod. Changing this value causes pgAdmin to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
-
-
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
-
-
-
-
-
-A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
-
-
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
-
-
-
-A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
The label key that the selector applies to.
-
true
-
-
operator
-
string
-
Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
-
true
-
-
values
-
[]string
-
An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
-
-
-
-Required. A pod affinity term, associated with the corresponding weight.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
topologyKey
-
string
-
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
false
-
-
namespaces
-
[]string
-
namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace".
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
-
-
-
-Configuration settings for the pgAdmin process. Changes to any of these values will be loaded without validation. Be careful, as you may put pgAdmin into an unusable state.
-
-
A Secret containing the value for the LDAP_BIND_PASSWORD setting. More info: https://www.pgadmin.org/docs/pgadmin4/latest/ldap.html
-
false
-
-
settings
-
object
-
Settings for the pgAdmin server process. Keys should be uppercase and values must be constants. More info: https://www.pgadmin.org/docs/pgadmin4/latest/config_py.html
items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional specify whether the ConfigMap or its keys must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-DownwardAPIVolumeFile represents information to create the file containing the pod field
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
-
false
-
-
mode
-
integer
-
Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
resource
-
string
-
Required: resource to select
-
true
-
-
containerName
-
string
-
Container name: required for volumes, optional for env vars
-
false
-
-
divisor
-
int or string
-
Specifies the output format of the exposed resources, defaults to "1"
items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
-
false
-
-
name
-
string
-
Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-
false
-
-
optional
-
boolean
-
optional field specify whether the Secret or its key must be defined
-
-
-
-Maps a string key to a path within a volume.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the key to project.
-
true
-
-
path
-
string
-
path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
-
true
-
-
mode
-
integer
-
mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
-
-
-
-serviceAccountToken is information about the serviceAccountToken data to project
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
path
-
string
-
path is the path relative to the mount point of the file to project the token into.
-
true
-
-
audience
-
string
-
audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.
-
false
-
-
expirationSeconds
-
integer
-
expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.
-
-
-
-Compute resources of a pgAdmin container. Changing this value causes pgAdmin to restart. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
limits
-
map[string]int or string
-
Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
-
false
-
-
requests
-
map[string]int or string
-
Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
The port on which this service is exposed when type is NodePort or LoadBalancer. Value must be in-range and not in use or the operation will fail. If unspecified, a port will be allocated if this Service requires one. - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
-
false
-
-
type
-
enum
-
More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
-
-
-
-The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
effect
-
string
-
Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
-
false
-
-
key
-
string
-
Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
-
false
-
-
operator
-
string
-
Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
-
false
-
-
tolerationSeconds
-
integer
-
TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
-
false
-
-
value
-
string
-
Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
-
-
-
-TopologySpreadConstraint specifies how to spread matching pods among the given topology.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
maxSkew
-
integer
-
MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. The global minimum is the minimum number of matching pods in an eligible domain or zero if the number of eligible domains is less than MinDomains. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 2/2/1: In this case, the global minimum is 1. | zone1 | zone2 | zone3 | | P P | P P | P | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.
-
true
-
-
topologyKey
-
string
-
TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. We define a domain as a particular instance of a topology. Also, we define an eligible domain as a domain whose nodes match the node selector. e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. It's a required field.
-
true
-
-
whenUnsatisfiable
-
string
-
WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location, but giving higher precedence to topologies that would help reduce the skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.
LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.
-
false
-
-
minDomains
-
integer
-
MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
- For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P | The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0. In this situation, new pod with the same labelSelector cannot be scheduled, because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, it will violate MaxSkew.
- This is an alpha field and requires enabling MinDomainsInPodTopologySpread feature gate.
-
-
-
-LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.
-
-
matchExpressions is a list of label selector requirements. The requirements are ANDed.
-
false
-
-
matchLabels
-
map[string]string
-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
-
-
-
-A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
key
-
string
-
key is the label key that the selector applies to.
-
true
-
-
operator
-
string
-
operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
-
true
-
-
values
-
[]string
-
values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
The name of this PostgreSQL user. The value may contain only lowercase letters, numbers, and hyphen so that it fits into Kubernetes metadata.
-
true
-
-
databases
-
[]string
-
Databases to which this user can connect and create objects. Removing a database from this list does NOT revoke access. This field is ignored for the "postgres" user.
-
false
-
-
options
-
string
-
ALTER ROLE options except for PASSWORD. This field is ignored for the "postgres" user. More info: https://www.postgresql.org/docs/current/role-attributes.html
-
-
-
-Properties of the password generated for this user.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
type
-
enum
-
Type of password to generate. Defaults to ASCII. Valid options are ASCII and AlphaNumeric. "ASCII" passwords contain letters, numbers, and symbols from the US-ASCII character set. "AlphaNumeric" passwords contain letters and numbers from the US-ASCII character set.
conditions represent the observations of postgrescluster's current state. Known .status.conditions.type are: "PersistentVolumeResizing", "Progressing", "ProxyAvailable"
-
false
-
-
databaseInitSQL
-
string
-
DatabaseInitSQL state of custom database initialization in the cluster
-
false
-
-
databaseRevision
-
string
-
Identifies the databases that have been installed into PostgreSQL.
-
-
-
-Condition contains details for one aspect of the current state of this API Resource.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
lastTransitionTime
-
string
-
lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
-
true
-
-
message
-
string
-
message is a human readable message indicating details about the transition. This may be an empty string.
-
true
-
-
reason
-
string
-
reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
-
true
-
-
status
-
enum
-
status of the condition, one of True, False, Unknown.
-
true
-
-
type
-
string
-
type of condition in CamelCase.
-
true
-
-
observedGeneration
-
integer
-
observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
Specifies whether or not the Job is finished executing (does not indicate success or failure).
-
true
-
-
id
-
string
-
A unique identifier for the manual backup as provided using the "pgbackrest-backup" annotation when initiating a backup.
-
true
-
-
active
-
integer
-
The number of actively running manual backup Pods.
-
false
-
-
completionTime
-
string
-
Represents the time the manual backup Job was determined by the Job controller to be completed. This field is only set if the backup completed successfully. Additionally, it is represented in RFC3339 form and is in UTC.
-
false
-
-
failed
-
integer
-
The number of Pods for the manual backup Job that reached the "Failed" phase.
-
false
-
-
startTime
-
string
-
Represents the time the manual backup Job was acknowledged by the Job controller. It is represented in RFC3339 form and is in UTC.
-
false
-
-
succeeded
-
integer
-
The number of Pods for the manual backup Job that reached the "Succeeded" phase.
-
-
-
-Status information for the pgBackRest dedicated repository host
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
apiVersion
-
string
-
APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
-
false
-
-
kind
-
string
-
Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
-
false
-
-
ready
-
boolean
-
Whether or not the pgBackRest repository host is ready for use
-
-
-
-RepoStatus the status of a pgBackRest repository
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
name
-
string
-
The name of the pgBackRest repository
-
true
-
-
bound
-
boolean
-
Whether or not the pgBackRest repository PersistentVolumeClaim is bound to a volume
-
false
-
-
replicaCreateBackupComplete
-
boolean
-
ReplicaCreateBackupReady indicates whether a backup exists in the repository as needed to bootstrap replicas.
-
false
-
-
repoOptionsHash
-
string
-
A hash of the required fields in the spec for defining an Azure, GCS or S3 repository, Utilizd to detect changes to these fields and then execute pgBackRest stanza-create commands accordingly.
-
false
-
-
stanzaCreated
-
boolean
-
Specifies whether or not a stanza has been successfully created for the repository
-
false
-
-
volume
-
string
-
The name of the volume the containing the pgBackRest repository
-
-
-
-Status information for in-place restores
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
finished
-
boolean
-
Specifies whether or not the Job is finished executing (does not indicate success or failure).
-
true
-
-
id
-
string
-
A unique identifier for the manual backup as provided using the "pgbackrest-backup" annotation when initiating a backup.
-
true
-
-
active
-
integer
-
The number of actively running manual backup Pods.
-
false
-
-
completionTime
-
string
-
Represents the time the manual backup Job was determined by the Job controller to be completed. This field is only set if the backup completed successfully. Additionally, it is represented in RFC3339 form and is in UTC.
-
false
-
-
failed
-
integer
-
The number of Pods for the manual backup Job that reached the "Failed" phase.
-
false
-
-
startTime
-
string
-
Represents the time the manual backup Job was acknowledged by the Job controller. It is represented in RFC3339 form and is in UTC.
-
false
-
-
succeeded
-
integer
-
The number of Pods for the manual backup Job that reached the "Succeeded" phase.
The number of actively running manual backup Pods.
-
false
-
-
completionTime
-
string
-
Represents the time the manual backup Job was determined by the Job controller to be completed. This field is only set if the backup completed successfully. Additionally, it is represented in RFC3339 form and is in UTC.
-
false
-
-
cronJobName
-
string
-
The name of the associated pgBackRest scheduled backup CronJob
-
false
-
-
failed
-
integer
-
The number of Pods for the manual backup Job that reached the "Failed" phase.
-
false
-
-
repo
-
string
-
The name of the associated pgBackRest repository
-
false
-
-
startTime
-
string
-
Represents the time the manual backup Job was acknowledged by the Job controller. It is represented in RFC3339 form and is in UTC.
-
false
-
-
succeeded
-
integer
-
The number of Pods for the manual backup Job that reached the "Succeeded" phase.
-
-
-
-The state of the pgAdmin user interface.
-
-
-
-
-
Name
-
Type
-
Description
-
Required
-
-
-
-
usersRevision
-
string
-
Hash that indicates which users have been installed into pgAdmin.
-
false
-
-
diff --git a/docs/content/releases/5.0.0.md b/docs/content/releases/5.0.0.md
deleted file mode 100644
index 19955c73fe..0000000000
--- a/docs/content/releases/5.0.0.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: "5.0.0"
-date:
-draft: false
-weight: 900
----
-
-Crunchy Data announces the release of the PGO, the open source Postgres Operator, 5.0.0 on June 30, 2021.
-
-To get started with PGO 5.0.0, we invite you to read through the [quickstart]({{< relref "quickstart/_index.md" >}}). We also encourage you to work through the [PGO tutorial]({{< relref "tutorial/_index.md" >}}).
-
-PGO 5.0.0 is a major release of the Postgres Operator. The focus of this release was to take the features from the previous versions of PGO, add in some new features, and allow you to deploy Kubernetes native Postgres through a fully declarative, GitOps style workflow. As with previous versions, PGO 5.0 makes it easy to deploy production ready, cloud native Postgres.
-
-Postgres clusters are now fully managed through a custom resource called [`postgrescluster.postgres-operator.crunchydata.com`]({{< relref "references/crd.md" >}}). You can also view the various attributes of the custom resource using `kubectl explain postgrescluster.postgres-operator.crunchydata.com` or `kubectl explain postgrescluster`. The custom resource can be edited at any time, and all of the changes are rolled out in a minimally disruptive way.
-
-There are [a set of examples](https://github.com/CrunchyData/postgres-operator-examples/fork) for how to use Kustomize and Helm with PGO 5.0. This example set will grow and we encourage you to contribute to it.
-
-PGO 5.0 continues to support the Postgres architecture that was built up in previous releases. This means that Postgres clusters are deployed without a single-point-of-failure and can continue operating even if PGO is unavailable. PGO 5.0 includes support for Postgres high availability, backup management, disaster recovery, monitoring, full customizability, database cloning, connection pooling, security, running with locked down container settings, and more.
-
-PGO 5.0 also continuously monitors your environment to ensure all of the components you want deployed are available. For example, if PGO detects that your connection pooler is missing, it will recreate it as you specified in the custom resource. PGO 5.0 can watch for Postgres clusters in all Kubernetes namespaces or be isolated to individual namespaces.
-
-As PGO 5.0 is a major release, it is not backwards compatible with PGO 4.x. However, you can run PGO 4.x and PGO 5.0 in the same Kubernetes cluster, which allows you to migrate Postgres clusters from 4.x to 5.0.
-
-## Changes
-
-Beyond being fully declarative, PGO 5.0 has some notable changes that you should be aware of. These include:
-
-- The minimum Kubernetes version is now 1.18. The minimum OpenShift version is 4.5. This release drops support for OpenShift 3.11.
- - We recommend running the latest bug fix releases of Kubernetes.
-- The removal of the `pgo` client. This may be reintroduced in a later release, but all actions on a Postgres cluster can be accomplished using `kubectl`, `oc`, or your preferred Kubernetes management tool (e.g. ArgoCD).
-- A fully defined `status` subresource is now available within the `postgrescluster` custom resource that provides direct insight into the current status of a PostgreSQL cluster.
-- Native Kubernetes eventing is now utilized to generate and record events related to the creation and management of PostgreSQL clusters.
-- Postgres instances now use Kubernetes Statefulsets.
-- Scheduled backups now use Kubernetes CronJobs.
-- Connections to Postgres require TLS. You can bring your own TLS infrastructure, otherwise PGO provides it for you.
-- Custom configurations for all components can be set directly on the `postgrescluster` custom resource.
-
-## Features
-
-In addition to supporting the PGO 4.x feature set, the PGO 5.0.0 adds the following new features:
-
-- Postgres minor version (bug fix) updates can be applied without having to update PGO. You only need to update the `image` attribute in the custom resource.
-- Adds support for Azure Blob Storage for storing backups. This is in addition to using Kubernetes storage, Amazon S3 (or S3-equivalents like MinIO), and Google Cloud Storage (GCS).
-- Allows for backups to be stored in up to four different locations simultaneously.
-- Backup locations can be changed during the lifetime of a Postgres cluster, e.g. moving from "posix" to "s3".
diff --git a/docs/content/releases/5.0.1.md b/docs/content/releases/5.0.1.md
deleted file mode 100644
index a8d11bbd5b..0000000000
--- a/docs/content/releases/5.0.1.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: "5.0.1"
-date:
-draft: false
-weight: 899
----
-
-Crunchy Data announces the release of [Crunchy Postgres for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/) 5.0.1.
-
-Crunchy Postgres for Kubernetes is powered by [PGO](https://github.com/CrunchyData/postgres-operator), the open source [Postgres Operator](https://github.com/CrunchyData/postgres-operator) from [Crunchy Data](https://www.crunchydata.com). [PGO](https://github.com/CrunchyData/postgres-operator) is released in conjunction with the [Crunchy Container Suite](https://github.com/CrunchyData/crunchy-containers/).
-
-Crunchy Postgres for Kubernetes 5.0.1 includes the following software versions upgrades:
-
-- [Patroni](https://patroni.readthedocs.io/) is now at 2.1.0.
-- PL/Tcl is now included in the PostGIS (`crunchy-postgres-gis-ha`) container.
-
-Read more about how you can [get started]({{< relref "quickstart/_index.md" >}}) with Crunchy Postgres for Kubernetes. We recommend [forking the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repo.
-
-## Features
-
-- Custom affinity rules and tolerations can now be added to pgBackRest restore Jobs.
-- OLM bundles can now be generated for PGO 5.
-
-## Changes
-
-- The `replicas` value for an instance set must now be greater than `0`, and at least one instance set must now be defined for a `PostgresCluster`. This is to prevent the cluster from being scaled down to `0` instances, since doing so results in the inability to scale the cluster back up.
-- Refreshed the PostgresCluster CRD documentation using the latest version of `crdoc` (`v0.3.0`).
-- The PGO test suite now includes a test to validate image pull secrets.
-- Related Image functionality has been implemented for the OLM installer as required to support offline deployments.
-- The name of the PGO Deployment and ServiceAccount has been changed to `pgo` for all installers, allowing both PGO v4.x and PGO v5.x to be run in the same namespace. If you are using Kustomize to install PGO and are upgrading from PGO 5.0.0, please see the [Upgrade Guide]({{< relref "../upgrade/_index.md" >}}) for addtional steps that must be completed as a result of this change in order to ensure a successful upgrade.
-- PGO now automatically detects whether or not it is running in an OpenShift environment.
-- Postgres users and databases can be specified in `PostgresCluster.spec.users`. The credentials stored in the `{cluster}-pguser` Secret are still valid, but they are no longer reconciled. References to that Secret should be replaced with `{cluster}-pguser-{cluster}`. Once all references are updated, the old `{cluster}-pguser` Secret can be deleted.
-- The built-in `postgres` superuser can now be managed the same way as other users. Specifying it in `PostgresCluster.spec.users` will give it a password, allowing it to connect over the network.
-- PostgreSQL data and pgBackRest repo volumes are now reconciled using labels.
-
-## Fixes
-
-- It is now possible to customize `shared_preload_libraries` when monitoring is enabled.
-- Fixed a typo in the description of the `openshift` field in the PostgresCluster CRD.
-- When a new cluster is created using an existing PostgresCluster as its dataSource, the original primary for that cluster will now properly initialize as a replica following a switchover. This is fixed with the upgrade to Patroni 2.1.0).
-- A consistent `startupInstance` name is now set in the PostgresCluster status when bootstrapping a new cluster using an existing PostgresCluster as its data source.
-- It is now possible to properly customize the `pg_hba.conf` configuration file.
diff --git a/docs/content/releases/5.0.2.md b/docs/content/releases/5.0.2.md
deleted file mode 100644
index 372c1c60fb..0000000000
--- a/docs/content/releases/5.0.2.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: "5.0.2"
-date:
-draft: false
-weight: 898
----
-
-Crunchy Data announces the release of [Crunchy Postgres for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/) 5.0.2.
-
-Crunchy Postgres for Kubernetes is powered by [PGO](https://github.com/CrunchyData/postgres-operator), the open source [Postgres Operator](https://github.com/CrunchyData/postgres-operator) from [Crunchy Data](https://www.crunchydata.com). [PGO](https://github.com/CrunchyData/postgres-operator) is released in conjunction with the [Crunchy Container Suite](https://github.com/CrunchyData/crunchy-containers/).
-
-Crunchy Postgres for Kubernetes 5.0.2 includes the following software versions upgrades:
-
-- [PostgreSQL](https://www.postgresql.org) is updated to 13.4, 12.8, 11.13, and 10.18.
-- PL/Tcl is now included in the PostGIS (`crunchy-postgres-gis-ha`) container.
-- The [TimescaleDB](https://github.com/timescale/timescaledb) extension is now at version 2.4.0.
-- The [set_user](https://github.com/pgaudit/set_user) extension is now at version 2.0.1.
-
-Read more about how you can [get started]({{< relref "quickstart/_index.md" >}}) with Crunchy Postgres for Kubernetes. We recommend [forking the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repo.
diff --git a/docs/content/releases/5.0.3.md b/docs/content/releases/5.0.3.md
deleted file mode 100644
index c1349ab88d..0000000000
--- a/docs/content/releases/5.0.3.md
+++ /dev/null
@@ -1,93 +0,0 @@
----
-title: "5.0.3"
-date:
-draft: false
-weight: 897
----
-
-
-Crunchy Data announces the release of [Crunchy Postgres for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/) 5.0.3.
-
-Crunchy Postgres for Kubernetes is powered by [PGO](https://github.com/CrunchyData/postgres-operator), the open source [Postgres Operator](https://github.com/CrunchyData/postgres-operator) from [Crunchy Data](https://www.crunchydata.com). [PGO](https://github.com/CrunchyData/postgres-operator) is released in conjunction with the [Crunchy Container Suite](https://github.com/CrunchyData/container-suite).
-
-Crunchy Postgres for Kubernetes 5.0.3 includes the following software versions upgrades:
-
-- [PostgreSQL](https://www.postgresql.org) 14 is now available.
-- [pgBackRest](https://pgbackrest.org/) is updated to version 2.35.
-- [Patroni](https://patroni.readthedocs.io/) is updated to version 2.1.1.
-- The [pgAudit](https://github.com/pgaudit/pgaudit) extension is now at version 1.6.0.
-- The [pgAudit Analyze](https://github.com/pgaudit/pgaudit_analyze) extension is now at version 1.0.8.
-- The [pgnodemx](https://github.com/CrunchyData/pgnodemx) extension is now at version 1.0.5.
-- The [set_user](https://github.com/pgaudit/set_user) extension is now at version 3.0.0.
-- The [wal2json](https://github.com/eulerto/wal2json) extension is now at version 2.4.
-
-Read more about how you can [get started]({{< relref "quickstart/_index.md" >}}) with Crunchy Postgres for Kubernetes. We recommend [forking the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repo.
-
-## Features
-
-- The Postgres containers are renamed. `crunchy-postgres-ha` is now `crunchy-postgres`, and `crunchy-postgres-gis-ha` is now `crunchy-postgres-gis`.
-- Some network filesystems are sensitive to Linux user and group permissions. Process GIDs can now be configured through `PostgresCluster.spec.supplementalGroups` for when your PVs don't advertise their [GID requirements](https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#access-control).
-- A replica service is now automatically reconciled for access to Postgres replicas within a cluster.
-- The Postgres primary service and PgBouncer service can now each be configured to have either a `ClusterIP`, `NodePort` or `LoadBalancer` service type. Suggested by Bryan A. S. (@bryanasdev000).
-- [Pod Topology Spread Constraints](https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/) can now be specified for Postgres instances, the pgBackRest dedicated repository host as well as PgBouncer. Suggested by Annette Clewett.
-- Default topology spread constraints are included to ensure PGO always attempts to deploy a high availability cluster architecture.
-- PGO can now execute a custom SQL script when initializing a Postgres cluster.
-- Custom resource requests and limits are now configurable for all `init` containers, therefore ensuring the desired [Quality of Service (QoS)](https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/) class can be assigned to the various Pods comprising a cluster.
-- Custom resource requests and limits are now configurable for all Jobs created for a `PostgresCluster`.
-- A [Pod Priority Class](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/) is configurable for the Pods created for a `PostgresCluster`.
-- An `imagePullPolicy` can now be configured for Pods created for a `PostgresCluster`.
-- Existing `PGDATA`, Write-Ahead Log (WAL) and pgBackRest repository volumes can now be migrated from PGO v4 to PGO v5 by specifying a `volumes` data source when creating a `PostgresCluster`.
-- There is now a [migration guide available for moving Postgres clusters between PGO v4 to PGO v5]({{< relref "upgrade/v4tov5/_index.md" >}}).
-- The pgAudit extension is now enabled by default in all clusters.
-- There is now additional validation for PVC definitions within the `PostgresCluster` spec to ensure successful PVC reconciliation.
-- Postgres server certificates are now automatically reloaded when they change.
-
-## Changes
-
-- The supplemental group `65534` is no longer applied by default. Upgrading the operator will perform a rolling update on all `PostgresCluster` custom resources to remove it.
-
- If you need this GID for your network filesystem, you should perform the following steps when upgrading:
-
- 1. Before deploying the new operator, deploy the new CRD. You can get the new CRD from the [Postgres Operator Examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repository and executing the following command:
- ```console
- $ kubectl apply -k kustomize/install
- ```
-
- 2. Add the group to your existing `PostgresCluster` custom resource:
- ```console
- $ kubectl edit postgrescluster/hippo
-
- kind: PostgresCluster
- …
- spec:
- supplementalGroups:
- - 65534
- …
- ```
-
- _or_
-
- ```console
- $ kubectl patch postgrescluster/hippo --type=merge --patch='{"spec":{"supplementalGroups":[65534]}}'
- ```
-
- _or_
-
- by modifying `spec.supplementalGroups` in your manifest.
-
- 3. Deploy the new operator. If you are using an up-to-date version of the manifest, you can run:
- ```console
- $ kubectl apply -k kustomize/install
- ```
-
-- A dedicated pgBackRest repository host is now only deployed if a `volume` repository is configured. This means that deployments that use only cloud-based (`s3`, `gcs`, `azure`) repos will no longer see a dedicated repository host, nor will `SSHD` run in within that Postgres cluster. As a result of this change, the `spec.backups.pgbackrest.repoHost.dedicated` section is removed from the `PostgresCluster` spec, and all settings within it are consolidated under the `spec.backups.pgbackrest.repoHost` section. When upgrading please update the `PostgresCluster` spec to ensure any settings from section `spec.backups.pgbackrest.repoHost.dedicated` are moved into section `spec.backups.pgbackrest.repoHost`.
-- PgBouncer now uses SCRAM when authenticating into Postgres.
-- Generated Postgres certificates include the FQDN and other local names of the primary Postgres service. To regenerate the certificate of an existing cluster, delete the `tls.key` field from its certificate secret. Suggested by @ackerr01.
-
-## Fixes
-
-- Validation for the PostgresCluster spec is updated to ensure at least one repo is always defined for section `spec.backups.pgbackrest.repos`.
-- A restore will now complete successfully If `max_connections` and/or `max_worker_processes` is configured to a value higher than the default when backing up the Postgres database. Reported by Tiberiu Patrascu (@tpatrascu).
-- The installation documentation now properly defines how to set the `PGO_TARGET_NAMESPACE` environment variable for a single namespace installation.
-- Ensure the full allocation of shared memory is available to Postgres containers. Reported by Yuyang Zhang (@helloqiu).
-- OpenShift auto-detection logic now looks for the presence of the `SecurityContextConstraints` API to avoid false positives when APIs with an `openshift.io` Group suffix are installed in non-OpenShift clusters. Reported by Jean-Daniel.
diff --git a/docs/content/releases/5.0.4.md b/docs/content/releases/5.0.4.md
deleted file mode 100644
index ea9e41bf74..0000000000
--- a/docs/content/releases/5.0.4.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: "5.0.4"
-date:
-draft: false
-weight: 896
----
-
-
-Crunchy Data announces the release of [Crunchy Postgres for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/) 5.0.4.
-
-Crunchy Postgres for Kubernetes is powered by [PGO](https://github.com/CrunchyData/postgres-operator), the open source [Postgres Operator](https://github.com/CrunchyData/postgres-operator) from [Crunchy Data](https://www.crunchydata.com). [PGO](https://github.com/CrunchyData/postgres-operator) is released in conjunction with the [Crunchy Container Suite](https://github.com/CrunchyData/container-suite).
-
-Crunchy Postgres for Kubernetes 5.0.4 includes the following software versions upgrades:
-
-- [PostgreSQL](https://www.postgresql.org) versions 14.1, 13.5, 12.9, 11.14, and 10.19 are now available.
-- [PostGIS](http://postgis.net/) version 3.1.4 is now available.
-- [pgBackRest](https://pgbackrest.org/) is now at version 2.36.
-- [PgBouncer](https://www.pgbouncer.org/) is now at version 1.16.
-- The [pgAudit](https://github.com/pgaudit/pgaudit) extension is now at version 1.6.1.
-- The [pgnodemx](https://github.com/CrunchyData/pgnodemx) extension is now at version 1.2.0.
-- The [pg_partman](https://github.com/pgpartman/pg_partman) extension is now at version 4.6.0.
-- The [TimescaleDB](https://github.com/timescale/timescaledb) extension is now at version 2.5.0.
-
-Read more about how you can [get started]({{< relref "quickstart/_index.md" >}}) with Crunchy Postgres for Kubernetes. We recommend [forking the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repo.
-
-## Features
-
-- The JDBC connection string for the Postgres database and a PgBouncer instance is now available in the User Secret using `jdbc-uri` and `pgbouncer-jdbc-uri` respectively.
-- Editing the `password` field of a User Secret now [changes a password]({{< relref "architecture/user-management.md" >}}#custom-passwords), instead of having to create a verifier.
-
-## Changes
-
-- [PostGIS](https://postgis.net/) is now automatically enabled when using the `crunchy-postgres-gis` container.
-- The [Downward API](https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/) is mounted to the `database` containers.
-- [pgnodemx](https://github.com/CrunchyData/pgnodemx) can now be enabled and used without having to enable monitoring.
-- The description of the `name` field for an instance set now states that a name is only optional when a single instance set is defined.
-
-## Fixes
-
-- Fix issue when performing a restore with PostgreSQL 14. Specifically, if there are mismatched PostgreSQL configuration parameters, PGO will resume replay and let PostgreSQL crash so PGO can ultimately fix it, vs. the restore pausing indefinitely.
-- The pgBackRest Pod no longer automatically mounts the default Service Account. Reported by (@Shrivastava-Varsha).
-- The Jobs that move data between volumes now have the correct Security Context set.
-- The UBI 8 `crunchy-upgrade` container contains all recent PostgreSQL versions that can be upgraded.
-- Ensure controller references are used for all objects that need them, instead of owner references.
-- It is no longer necessary to have external WAL volumes enabled in order to upgrade a PGO v4 cluster to PGO v5 using the "Migrate From Backups" or "Migrate Using a Standby Cluster" upgrade methods.
diff --git a/docs/content/releases/5.0.5.md b/docs/content/releases/5.0.5.md
deleted file mode 100644
index 4504bf198a..0000000000
--- a/docs/content/releases/5.0.5.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: "5.0.5"
-date:
-draft: false
-weight: 895
----
-
-
-Crunchy Data announces the release of [Crunchy Postgres for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/) 5.0.5.
-
-Crunchy Postgres for Kubernetes is powered by [PGO](https://github.com/CrunchyData/postgres-operator), the open source [Postgres Operator](https://github.com/CrunchyData/postgres-operator) from [Crunchy Data](https://www.crunchydata.com). [PGO](https://github.com/CrunchyData/postgres-operator) is released in conjunction with the [Crunchy Container Suite](https://github.com/CrunchyData/container-suite).
-
-Crunchy Postgres for Kubernetes 5.0.5 includes the following software versions upgrades:
-
-- [PostgreSQL](https://www.postgresql.org) versions 14.2, 13.6, 12.10, 11.15, and 10.20 are now available.
-
-Read more about how you can [get started]({{< relref "quickstart/_index.md" >}}) with Crunchy Postgres for Kubernetes. We recommend [forking the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repo.
-
-
-## Features
-
-- A S3, GCS or Azure data source can now be configured when bootstrapping a new PostgresCluster. This allows existing cloud-based pgBackRest repositories to be utilized to bootstrap new clusters, while also ensuring those new clusters create and utilize their own pgBackRest repository for archives and backups (rather than writing to the repo utilized to bootstrap the cluster).
-- It is now possible to configure the number of workers for the PostgresCluster controller.
-
-## Fixes
-
-- Reduce scope of automatic OpenShift environment detection. This looks specifically for the existence of the `SecurityContextConstraint` API.
-- An external IP is no longer copied to the primary service (e.g. `hippo-primary`) when the `LoadBalancer` service type has been configured for PostgreSQL.
-- pgBackRest no longer logs to log `/tmp` emptyDir by default. Instead, pgBackRest logs to either the `PGDATA` volume (if running inside of a PG instance Pod) or a pgBackRest repository volume (if running inside a dedicated repo host Pod).
-- All pgBackRest configuration resources are now copied from the source cluster when cloning a PG cluster.
-- Image pull secrets are now set on directory move jobs.
-- Resources are now properly set on the `nss-wrapper-init` container.
diff --git a/docs/content/releases/5.1.0.md b/docs/content/releases/5.1.0.md
deleted file mode 100644
index c7fc0940c9..0000000000
--- a/docs/content/releases/5.1.0.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: "5.1.0"
-date:
-draft: false
-weight: 850
----
-
-Crunchy Data announces the release of [Crunchy Postgres for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/) 5.1.0.
-
-Crunchy Postgres for Kubernetes is powered by [PGO](https://github.com/CrunchyData/postgres-operator), the open source [Postgres Operator](https://github.com/CrunchyData/postgres-operator) from [Crunchy Data](https://www.crunchydata.com). [PGO](https://github.com/CrunchyData/postgres-operator) is released in conjunction with the [Crunchy Container Suite](https://github.com/CrunchyData/container-suite).
-
-Crunchy Postgres for Kubernetes 5.1.0 includes the following software versions upgrades:
-
-- [Patroni](https://patroni.readthedocs.io/) is now at version 2.1.3.
-- [pgAdmin 4](https://www.pgadmin.org/) is now at version 4.30
-- [pgBackRest](https://pgbackrest.org/) is updated to version 2.38.
-- The [pgAudit](https://github.com/pgaudit/pgaudit) extension is now at version 1.6.2 (PG 14), 1.5.2 (PG 13), 1.4.3 (PG 12), 1.3.4 (PG 11) & 1.2.4 (PG 10).
-- The [pgnodemx](https://github.com/CrunchyData/pgnodemx) extension is now at version 1.3.0.
-- The [TimescaleDB](https://github.com/timescale/timescaledb) extension is now at version 2.6.0.
-
-Read more about how you can [get started]({{< relref "quickstart/_index.md" >}}) with Crunchy Postgres for Kubernetes. We recommend [forking the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repo.
-
-## Major Features
-
-### pgAdmin 4 Integration
-
-PGO v5.1 reintroduces the pgAdmin 4 integration from [PGO v4](https://access.crunchydata.com/documentation/postgres-operator/4.7.5/architecture/pgadmin4/). v5.1 adds the [`spec.userInterace.pgAdmin`]({{< relref "references/crd.md" >}}#postgresclusterspecuserinterfacepgadmin) section to the `PostgresCluster` custom resource to enable pgAdmin 4 integration for a Postgres cluster. Any users defined in `spec.users` are are synced with pgAdmin 4, allowing for a seamless management experience.
-
-Please see the [pgAdmin 4 section](https://access.crunchydata.com/documentation/postgres-operator/v5/architecture/pgadmin4/) of the PGO documentation for more information about this integration.
-
-### Removal of SSH Requirement for Local Backups
-
-Previous versions of PGO relied on the use of `ssh` to take backups and store archive files on Kubernetes-managed storage. PGO v5.1 now uses mTLS to securely transfer and manage these files.
-
-The upgrade to pgBackRest TLS is seamless and transparent if using related image environment variables with your PGO Deployment (please see the [PostgresCluster CRD reference](https://access.crunchydata.com/documentation/postgres-operator/v5/references/crd/) for more information). This is because PGO will automatically handle updating all image tags across all existing PostgresCluster's following the upgrade to v5.1, seamlessly rolling out any new images as required for proper pgBackRest TLS functionality.
-
-If you are not using related image environment variables, and are instead explicitly defining images via the `image` fields in your PostgresCluster spec, then an additional step is required in order to ensure a seamless upgrade. Specifically, all `postgrescluster.spec.image` and `postgrescluster.spec.backups.pgbackrest.image` fields must first be updated to specify images containing pgBackRest 2.38. Therefore, prior to upgrading, please update all `postgrescluster.spec.image` and `postgrescluster.spec.backups.pgbackrest.image` fields to the latest versions of the `crunchy-postgres` and `crunchy-pgbackrest` containers available per the [Components and Compatibility guide](https://access.crunchydata.com/documentation/postgres-operator/v5/references/components/) (please note that the `crunchy-postgres` container should be updated to the latest version available for the major version of PostgreSQL currently being utilized within a cluster).
-
-In the event that PGO is upgraded to v5.1 _before_ updating your image tags, simply update any `image` fields in your PostgresCluster spec as soon as possible following the upgrade.
-
-## Features
-
-- Set [Pod Disruption Budgets]({{< relref "architecture/high-availability.md" >}}#pod-disruption-budgets) (PDBs) for both Postgres and PgBouncer instances.
-- Postgres configuration changes requiring a database restart are now automatically rolled out to all instances in the cluster.
-- Do not recreate instance Pods for changes that only require a Postgres restart. These types of changes are now applied more quickly.
-- Support for [manual switchovers or failovers]({{< relref "tutorial/administrative-tasks.md">}}#changing-the-primary).
-- Rotate PgBouncer TLS certificates without downtime.
-- Add support for using Active Directory for securely authenticating with PostgreSQL using the GSSAPI.
-- Support for using [AWS IAM roles with S3]({{< relref "tutorial/backups.md" >}}#using-an-aws-integrated-identity-provider-and-role) with backups when PGO is deployed in EKS.
-- The characters used for password generation can now be controlled using the `postgrescluster.spec.users.password.type` parameter. Choices are `AlphaNumeric` and `ASCII`; defaults to `ASCII`.
-- Introduction for automatically checking for updates for PGO and Postgres components. If an update is discovered, it is included in the PGO logs.
-
-## Changes
-
-- As a result of [a fix in PgBouncer v1.16](https://github.com/libusual/libusual/commit/ab960074cb7a), PGO no longer sets verbosity settings in the PgBouncer configuration to catch missing `%include` directives. Users can increase verbosity in their own configuration files to maintain the previous behavior.
-- The Postgres `archive_timeout` setting now defaults to 60 seconds (`60s`), which matches the behavior from PGO v4. If you do not require for WAL files to be generated once a minute (e.g. generally idle system where a window of data-loss is acceptable or a development system), you can set this to `0`:
-
-```yaml
-spec:
- patroni:
- dynamicConfiguration:
- postgresql:
- parameters:
- archive_timeout: 0
-```
-- All Pods now have `enableServiceLinks` set to `false` in order to ensure injected environment variables do not conflict with the various applications running within.
-
-## Fixes
-
-- The names of CronJobs created for scheduled backups are shortened to `--` to allow for longer PostgresCluster names.
diff --git a/docs/content/releases/5.1.1.md b/docs/content/releases/5.1.1.md
deleted file mode 100644
index 0734b1083e..0000000000
--- a/docs/content/releases/5.1.1.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: "5.1.1"
-date:
-draft: false
-weight: 849
----
-
-Crunchy Data announces the release of [Crunchy Postgres for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/) 5.1.1.
-
-Crunchy Postgres for Kubernetes is powered by [PGO](https://github.com/CrunchyData/postgres-operator), the open source [Postgres Operator](https://github.com/CrunchyData/postgres-operator) from [Crunchy Data](https://www.crunchydata.com). [PGO](https://github.com/CrunchyData/postgres-operator) is released in conjunction with the [Crunchy Container Suite](https://github.com/CrunchyData/container-suite).
-
-Crunchy Postgres for Kubernetes 5.1.1 includes the following software versions upgrades:
-
-- [PostgreSQL](https://www.postgresql.org) versions 14.3, 13.7, 12.11, 11.16, and 10.21 are now available.
-- [PostGIS](http://postgis.net/) version 3.2.1 is now available.
-- The [pg_partman](https://github.com/pgpartman/pg_partman) extension is now at version 4.6.1.
-- The [TimescaleDB](https://github.com/timescale/timescaledb) extension is now at version 2.6.1.
-
-Read more about how you can [get started]({{< relref "quickstart/_index.md" >}}) with Crunchy Postgres for Kubernetes. We recommend [forking the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repo.
-
-## Fixes
-
-- It is now possible to perform major PostgreSQL version upgrades when using an external WAL directory.
-- The documentation for pgAdmin 4 now clearly states that any pgAdmin user created by PGO will have a `@pgo` suffix.
diff --git a/docs/content/releases/5.1.2.md b/docs/content/releases/5.1.2.md
deleted file mode 100644
index ab8f2d69a6..0000000000
--- a/docs/content/releases/5.1.2.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: "5.1.2"
-date:
-draft: false
-weight: 848
----
-
-Crunchy Data announces the release of [Crunchy Postgres for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/) 5.1.2.
-
-Crunchy Postgres for Kubernetes is powered by [PGO](https://github.com/CrunchyData/postgres-operator), the open source [Postgres Operator](https://github.com/CrunchyData/postgres-operator) from [Crunchy Data](https://www.crunchydata.com). [PGO](https://github.com/CrunchyData/postgres-operator) is released in conjunction with the [Crunchy Container Suite](https://github.com/CrunchyData/container-suite).
-
-Crunchy Postgres for Kubernetes 5.1.2 includes the following software versions upgrades:
-
-- [PostgreSQL](https://www.postgresql.org) version 14.4 is now available.
-
-Read more about how you can [get started]({{< relref "quickstart/_index.md" >}}) with Crunchy Postgres for Kubernetes. We recommend [forking the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repo.
diff --git a/docs/content/releases/5.2.0.md b/docs/content/releases/5.2.0.md
deleted file mode 100644
index a3bf374182..0000000000
--- a/docs/content/releases/5.2.0.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: "5.2.0"
-date:
-draft: false
-weight: 847
----
-
-Crunchy Data announces the release of [Crunchy Postgres for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/) 5.2.0.
-
-Crunchy Postgres for Kubernetes is powered by [PGO](https://github.com/CrunchyData/postgres-operator), the open source [Postgres Operator](https://github.com/CrunchyData/postgres-operator) from [Crunchy Data](https://www.crunchydata.com). [PGO](https://github.com/CrunchyData/postgres-operator) is released in conjunction with the [Crunchy Container Suite](https://github.com/CrunchyData/crunchy-containers).
-
-Read more about how you can [get started]({{< relref "quickstart/_index.md" >}}) with Crunchy Postgres for Kubernetes. We recommend [forking the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repo.
-
-## Major Features
-
-This and all PGO v5 releases are compatible with a brand new `pgo` command line interface.
-Please see the [`pgo` CLI documentation](https://access.crunchydata.com/documentation/postgres-operator-client/latest)
-for its release notes and more details.
-
-## Features
-
-- Added the ability to customize and influence the scheduling of pgBackRest backup Jobs using `affinity` and `tolerations`.
-- You can now pause the reconciliation and rollout of changes to a PostgreSQL cluster using the `spec.paused` field.
-- Leaf certificates provisioned by PGO as part of a PostgreSQL cluster's TLS infrastructure are now automatically rotated prior to expiration.
-- PGO now has support for feature gates.
-- You can now add custom sidecars to both PostgreSQL instance Pods and PgBouncer Pods using the `spec.instances.containers` and `spec.proxy.pgBouncer.containers` fields.
-- It is now possible to configure standby clusters to replicate from a remote primary using streaming replication.
-- Added the ability to provide a custom `nodePort` for the primary PostgreSQL, pgBouncer and pgAdmin services.
-- Added the ability to define custom labels and annotations for the primary PostgreSQL, pgBouncer and pgAdmin services.
-
-## Changes
-
-- All containers are now run with the minimum capabilities required by the container runtime.
-- The PGO documentation now includes instructions for rotating the root TLS certificate.
-- A `fsGroupChangePolicy` of `OnRootMismatch` is now set on all Pods.
-- The `runAsNonRoot` security setting is on every container rather than every pod.
-
-## Fixes
-
-- A better timeout has been set for the `pg_ctl` `start` and `stop` commands that are run during a restore.
-- A restore can now be re-attempted if PGO is unable to cleanly start or stop the database during a previous restore attempt.
diff --git a/docs/content/releases/5.3.0.md b/docs/content/releases/5.3.0.md
deleted file mode 100644
index d3bfafed10..0000000000
--- a/docs/content/releases/5.3.0.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: "5.3.0"
-date:
-draft: false
-weight: 846
----
-
-Crunchy Data announces the release of [Crunchy Postgres for Kubernetes](https://www.crunchydata.com/products/crunchy-postgresql-for-kubernetes/) 5.3.0.
-
-Crunchy Postgres for Kubernetes is powered by [PGO](https://github.com/CrunchyData/postgres-operator), the open source [Postgres Operator](https://github.com/CrunchyData/postgres-operator) from [Crunchy Data](https://www.crunchydata.com). [PGO](https://github.com/CrunchyData/postgres-operator) is released in conjunction with the [Crunchy Container Suite](https://github.com/CrunchyData/crunchy-containers).
-
-Crunchy Postgres for Kubernetes 5.3.0 includes the following software versions upgrades:
-
-- [PostgreSQL](https://www.postgresql.org) version 15.1 is now available.
-- [pgMonitor](https://github.com/CrunchyData/pgmonitor) is now at version 4.8.0.
-- The [`controller-runtime`](https://github.com/kubernetes-sigs/controller-runtime) libraries have been updated to 0.12.3.
-- [Go](https://go.dev/) 1.19 is now utilized to build Crunchy Postgres for Kubernetes.
-
-Additionally, the [pgo CLI](https://access.crunchydata.com/documentation/postgres-operator-client/latest) version 0.2.0 is now available.
-
-Read more about how you can [get started](https://access.crunchydata.com/documentation/postgres-operator/latest/quickstart/) with Crunchy Postgres for Kubernetes. We recommend [forking the Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repo.
-
-_**Note:** TimescaleDB and pgAdmin 4 are not currently supported for use with PostgeSQL 15_.
-
-## Features
-
-- PostgreSQL 15 support.
-- Enable TLS for the PostgreSQL exporter using the new `spec.monitoring.pgmonitor.exporter.customTLSSecret` field.
-- Configure pgBackRest for IPv6 environments using the `postgres-operator.crunchydata.com/pgbackrest-ip-version` annotation.
-- Configure the [TTL](https://kubernetes.io/docs/concepts/workloads/controllers/job/#ttl-mechanism-for-finished-jobs) for pgBackRest backup Jobs.
-- Use Helm's [OCI registry capability](https://helm.sh/docs/topics/registries/) to install Crunchy Postgres for Kubernetes.
-
-## Changes
-
-- JIT is now explicitly disabled for the monitoring user, allowing users to opt-into using JIT elsewhere in the database without impacting exporter functionality. Contributed by Kirill Petrov (@chobostar).
-- PGO now logs both `stdout` and `stderr` when running a SQL file referenced via `spec.databaseInitSQL` during database initialization. Contributed by Jeff Martin (@jmartin127).
-- The `pgnodemx` and `pg_stat_statements` extensions are now automatically upgraded.
-- The `postgres-startup` init container now logs an error message if the version of PostgreSQL installed in the image does not match the PostgreSQL version specified using `spec.postgresVersion`.
-- Limit the monitoring user to local connections using SCRAM authentication. Contributed by Scott Zelenka (@szelenka)
-- Skip a scheduled backup when the prior one is still running. Contributed by Scott Zelenka (@szelenka)
-- The`dataSource.volumes` migration strategy had been improved to better handle `PGDATA` directories with invalid permissions and a missing `postgresql.conf` file.
-
-## Fixes
-
-- A `psycopg2` error is no longer displayed when connecting to a database using pgAdmin 4.
-- With the exception of the `--repo` option itself, PGO no longer prevents users from specifying pgBackRest options containing the string "repo" (e.g. `--repo1-retention-full`).
-- PGO now properly filters Jobs by namespace when reconciling restore or data migrations Job, ensuring PostgresClusters with the same name can be created within different namespaces.
-- The Major PostgreSQL Upgrades API (`PGUpgrade`) now properly handles clusters that have various extensions enabled.
diff --git a/docs/content/releases/_index.md b/docs/content/releases/_index.md
deleted file mode 100644
index 7ea3840539..0000000000
--- a/docs/content/releases/_index.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "Release Notes"
-date:
-draft: false
-weight: 103
----
diff --git a/docs/content/support/_index.md b/docs/content/support/_index.md
deleted file mode 100644
index 0999a7cca0..0000000000
--- a/docs/content/support/_index.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: "Support"
-date:
-draft: false
-weight: 110
----
-
-There are a few options available for community support of the [PGO: the Postgres Operator](https://github.com/CrunchyData/postgres-operator):
-
-- **If you believe you have found a bug** or have a detailed feature request: please open [an issue on GitHub](https://github.com/CrunchyData/postgres-operator/issues/new/choose). The Postgres Operator community and the Crunchy Data team behind the PGO is generally active in responding to issues.
-- **For general questions or community support**: please join the [PostgreSQL Operator community mailing list](https://groups.google.com/a/crunchydata.com/forum/#!forum/postgres-operator/join) at [https://groups.google.com/a/crunchydata.com/forum/#!forum/postgres-operator/join](https://groups.google.com/a/crunchydata.com/forum/#!forum/postgres-operator/join),
-
-In all cases, please be sure to provide as many details as possible in regards to your issue, including:
-
-- Your Platform (e.g. Kubernetes vX.YY.Z)
-- Operator Version (e.g. {{< param operatorVersion >}})
-- A detailed description of the issue, as well as steps you took that lead up to the issue
-- Any relevant logs
-- Any additional information you can provide that you may find helpful
-
-For production and commercial support of the PostgreSQL Operator, please
-[contact Crunchy Data](https://www.crunchydata.com/contact/) at [info@crunchydata.com](mailto:info@crunchydata.com) for information regarding an [Enterprise Support Subscription](https://www.crunchydata.com/about/value-of-subscription/).
diff --git a/docs/content/tutorial/_index.md b/docs/content/tutorial/_index.md
deleted file mode 100644
index db7477da91..0000000000
--- a/docs/content/tutorial/_index.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: "Tutorial"
-date:
-draft: false
-weight: 20
----
-
-Ready to get started with [PGO](https://github.com/CrunchyData/postgres-operator), the [Postgres Operator](https://github.com/CrunchyData/postgres-operator) from [Crunchy Data](https://www.crunchydata.com)? Us too!
-
-This tutorial covers several concepts around day-to-day life managing a Postgres cluster with PGO. While going through and looking at various "HOWTOs" with PGO, we will also cover concepts and features that will help you have a successful cloud native Postgres journey!
-
-In this tutorial, you will learn:
-
-- How to create a Postgres cluster
-- How to connect to a Postgres cluster
-- How to scale and create a high availability (HA) Postgres cluster
-- How to resize your cluster
-- How to set up proper disaster recovery and manage backups and restores
-- How to apply software updates to Postgres and other components
-- How to set up connection pooling
-- How to delete your cluster
-
-and more.
-
-You will also see:
-
-- How PGO helps your Postgres cluster achieve high availability
-- How PGO can heal your Postgres cluster and ensure all objects are present and available
-- How PGO sets up disaster recovery
-- How to manage working with PGO in a single namespace or in a cluster-wide installation of PGO.
-
-[Let's get started]({{< relref "./getting-started.md" >}})!
diff --git a/docs/content/tutorial/administrative-tasks.md b/docs/content/tutorial/administrative-tasks.md
deleted file mode 100644
index 8946ef6db8..0000000000
--- a/docs/content/tutorial/administrative-tasks.md
+++ /dev/null
@@ -1,276 +0,0 @@
----
-title: "Administrative Tasks"
-date:
-draft: false
-weight: 105
----
-
-## Manually Restarting PostgreSQL
-
-There are times when you might need to manually restart PostgreSQL. This can be done by adding or updating a custom annotation to the cluster's `spec.metadata.annotations` section. PGO will notice the change and perform a [rolling restart]({{< relref "/architecture/high-availability.md" >}}#rolling-update).
-
-For example, if you have a cluster named `hippo` in the namespace `postgres-operator`, all you need to do is patch the hippo PostgresCluster with the following:
-
-```shell
-kubectl patch postgrescluster/hippo -n postgres-operator --type merge \
- --patch '{"spec":{"metadata":{"annotations":{"restarted":"'"$(date)"'"}}}}'
-```
-
-Watch your hippo cluster: you will see the rolling update has been triggered and the restart has begun.
-
-## Shutdown
-
-You can shut down a Postgres cluster by setting the `spec.shutdown` attribute to `true`. You can do this by editing the manifest, or, in the case of the `hippo` cluster, executing a command like the below:
-
-```
-kubectl patch postgrescluster/hippo -n postgres-operator --type merge \
- --patch '{"spec":{"shutdown": true}}'
-```
-
-The effect of this is that all the Kubernetes workloads for this cluster are
-scaled to 0. You can verify this with the following command:
-
-```
-kubectl get deploy,sts,cronjob --selector=postgres-operator.crunchydata.com/cluster=hippo
-
-NAME READY UP-TO-DATE AVAILABLE AGE
-deployment.apps/hippo-pgbouncer 0/0 0 0 1h
-
-NAME READY AGE
-statefulset.apps/hippo-00-lwgx 0/0 1h
-
-NAME SCHEDULE SUSPEND ACTIVE
-cronjob.batch/hippo-repo1-full @daily True 0
-```
-
-To turn a Postgres cluster that is shut down back on, you can set `spec.shutdown` to `false`.
-
-## Pausing Reconciliation and Rollout
-
-You can pause the Postgres cluster reconciliation process by setting the
-`spec.paused` attribute to `true`. You can do this by editing the manifest, or,
-in the case of the `hippo` cluster, executing a command like the below:
-
-```
-kubectl patch postgrescluster/hippo -n postgres-operator --type merge \
- --patch '{"spec":{"paused": true}}'
-```
-
-Pausing a cluster will suspend any changes to the cluster’s current state until
-reconciliation is resumed. This allows you to fully control when changes to
-the PostgresCluster spec are rolled out to the Postgres cluster. While paused,
-no statuses are updated other than the "Progressing" condition.
-
-To resume reconciliation of a Postgres cluster, you can either set `spec.paused`
-to `false` or remove the setting from your manifest.
-
-## Rotating TLS Certificates
-
-Credentials should be invalidated and replaced (rotated) as often as possible
-to minimize the risk of their misuse. Unlike passwords, every TLS certificate
-has an expiration, so replacing them is inevitable.
-
-In fact, PGO automatically rotates the client certificates that it manages *before*
-the expiration date on the certificate. A new client certificate will be generated
-after 2/3rds of its working duration; so, for instance, a PGO-created certificate
-with an expiration date 12 months in the future will be replaced by PGO around the
-eight month mark. This is done so that you do not have to worry about running into
-problems or interruptions of service with an expired certificate.
-
-### Triggering a Certificate Rotation
-
-If you want to rotate a single client certificate, you can regenerate the certificate
-of an existing cluster by deleting the `tls.key` field from its certificate Secret.
-
-Is it time to rotate your PGO root certificate? All you need to do is delete the `pgo-root-cacert` secret. PGO will regenerate it and roll it out seamlessly, ensuring your apps continue communicating with the Postgres cluster without having to update any configuration or deal with any downtime.
-
-```bash
-kubectl delete secret pgo-root-cacert
-```
-
-{{% notice note %}}
-PGO only updates secrets containing the generated root certificate. It does not touch custom certificates.
-{{% /notice %}}
-
-### Rotating Custom TLS Certificates
-
-When you use your own TLS certificates with PGO, you are responsible for replacing them appropriately.
-Here's how.
-
-PGO automatically detects and loads changes to the contents of PostgreSQL server
-and replication Secrets without downtime. You or your certificate manager need
-only replace the values in the Secret referenced by `spec.customTLSSecret`.
-
-If instead you change `spec.customTLSSecret` to refer to a new Secret or new fields,
-PGO will perform a [rolling restart]({{< relref "/architecture/high-availability.md" >}}#rolling-update).
-
-{{% notice info %}}
-When changing the PostgreSQL certificate authority, make sure to update
-[`customReplicationTLSSecret`]({{< relref "/tutorial/customize-cluster.md" >}}#customize-tls) as well.
-{{% /notice %}}
-
-PGO automatically notifies PgBouncer when there are changes to the contents of
-PgBouncer certificate Secrets. Recent PgBouncer versions load those changes
-without downtime, but versions prior to 1.16.0 need to be restarted manually.
-There are a few ways to restart an older version PgBouncer to reload Secrets:
-
-1. Store the new certificates in a new Secret. Edit the PostgresCluster object
- to refer to the new Secret, and PGO will perform a rolling restart of PgBouncer.
- ```yaml
- spec:
- proxy:
- pgBouncer:
- customTLSSecret:
- name: hippo.pgbouncer.new.tls
- ```
-
- _or_
-
-2. Replace the old certificates in the current Secret. PGO doesn't notice when
- the contents of your Secret change, so you need to trigger a rolling restart
- of PgBouncer. Edit the PostgresCluster object to add a unique annotation.
- The name and value are up to you, so long as the value differs from the
- previous value.
- ```yaml
- spec:
- proxy:
- pgBouncer:
- metadata:
- annotations:
- restarted: Q1-certs
- ```
-
- This `kubectl patch` command uses your local date and time:
-
- ```shell
- kubectl patch postgrescluster/hippo --type merge \
- --patch '{"spec":{"proxy":{"pgBouncer":{"metadata":{"annotations":{"restarted":"'"$(date)"'"}}}}}}'
- ```
-
-## Changing the Primary
-
-There may be times when you want to change the primary in your HA cluster. This can be done
-using the `patroni.switchover` section of the PostgresCluster spec. It allows
-you to enable switchovers in your PostgresClusters, target a specific instance as the new
-primary, and run a failover if your PostgresCluster has entered a bad state.
-
-Let's go through the process of performing a switchover!
-
-First you need to update your spec to prepare your cluster to change the primary. Edit your spec
-to have the following fields:
-
-```yaml
-spec:
- patroni:
- switchover:
- enabled: true
-```
-
-After you apply this change, PGO will be looking for the trigger to perform a switchover in your
-cluster. You will trigger the switchover by adding the `postgres-operator.crunchydata.com/trigger-switchover`
-annotation to your custom resource. The best way to set this annotation is
-with a timestamp, so you know when you initiated the change.
-
-For example, for our `hippo` cluster, we can run the following command to trigger the switchover:
-
-```shell
-kubectl annotate -n postgres-operator postgrescluster hippo \
- postgres-operator.crunchydata.com/trigger-switchover="$(date)"
-```
-
-{{% notice tip %}}
-If you want to perform another switchover you can re-run the annotation command and add the `--overwrite` flag:
-
-```shell
-kubectl annotate -n postgres-operator postgrescluster hippo --overwrite \
- postgres-operator.crunchydata.com/trigger-switchover="$(date)"
-```
-{{% /notice %}}
-
-PGO will detect this annotation and use the Patroni API to request a change to the current primary!
-
-The roles on your database instance Pods will start changing as Patroni works. The new primary
-will have the `master` role label, and the old primary will be updated to `replica`.
-
-The status of the switch will be tracked using the `status.patroni.switchover` field. This will be set
-to the value defined in your trigger annotation. If you use a timestamp as the annotation this is
-another way to determine when the switchover was requested.
-
-After the instance Pod labels have been updated and `status.patroni.switchover` has been set, the
-primary has been changed on your cluster!
-
-{{% notice info %}}
-After changing the primary, we recommend that you disable switchovers by setting `spec.patroni.switchover.enabled`
-to false or remove the field from your spec entirely. If the field is removed the corresponding
-status will also be removed from the PostgresCluster.
-{{% /notice %}}
-
-
-#### Targeting an instance
-
-Another option you have when switching the primary is providing a target instance as the new
-primary. This target instance will be used as the candidate when performing the switchover.
-The `spec.patroni.switchover.targetInstance` field takes the name of the instance that you are switching to.
-
-This name can be found in a couple different places; one is as the name of the StatefulSet and
-another is on the database Pod as the `postgres-operator.crunchydata.com/instance` label. The
-following commands can help you determine who is the current primary and what name to use as the
-`targetInstance`:
-
-```shell-session
-$ kubectl get pods -l postgres-operator.crunchydata.com/cluster=hippo \
- -L postgres-operator.crunchydata.com/instance \
- -L postgres-operator.crunchydata.com/role
-
-NAME READY STATUS RESTARTS AGE INSTANCE ROLE
-hippo-instance1-jdb5-0 3/3 Running 0 2m47s hippo-instance1-jdb5 master
-hippo-instance1-wm5p-0 3/3 Running 0 2m47s hippo-instance1-wm5p replica
-```
-
-In our example cluster `hippo-instance1-jdb5` is currently the primary meaning we want to target
-`hippo-instance1-wm5p` in the switchover. Now that you know which instance is currently the
-primary and how to find your `targetInstance`, let's update your cluster spec:
-
-```yaml
-spec:
- patroni:
- switchover:
- enabled: true
- targetInstance: hippo-instance1-wm5p
-```
-
-After applying this change you will once again need to trigger the switchover by annotating the
-PostgresCluster (see above commands). You can verify the switchover has completed by checking the
-Pod role labels and `status.patroni.switchover`.
-
-#### Failover
-
-Finally, we have the option to failover when your cluster has entered an unhealthy state. The
-only spec change necessary to accomplish this is updating the `spec.patroni.switchover.type`
-field to the `Failover` type. One note with this is that a `targetInstance` is required when
-performing a failover. Based on the example cluster above, assuming `hippo-instance1-wm5p` is still
-a replica, we can update the spec:
-
-```yaml
-spec:
- patroni:
- switchover:
- enabled: true
- targetInstance: hippo-instance1-wm5p
- type: Failover
-```
-
-Apply this spec change and your PostgresCluster will be prepared to perform the failover. Again
-you will need to trigger the switchover by annotating the PostgresCluster (see above commands)
-and verify that the Pod role labels and `status.patroni.switchover` are updated accordingly.
-
-{{% notice warning %}}
-Errors encountered in the switchover process can leave your cluster in a bad
-state. If you encounter issues, found in the operator logs, you can update the spec to fix the
-issues and apply the change. Once the change has been applied, PGO will attempt to perform the
-switchover again.
-{{% /notice %}}
-
-## Next Steps
-
-We've covered a lot in terms of building, maintaining, scaling, customizing, restarting, and expanding our Postgres cluster. However, there may come a time where we need to [delete our Postgres cluster]({{< relref "delete-cluster.md" >}}). How do we do that?
diff --git a/docs/content/tutorial/backup-management.md b/docs/content/tutorial/backup-management.md
deleted file mode 100644
index 176c4fd435..0000000000
--- a/docs/content/tutorial/backup-management.md
+++ /dev/null
@@ -1,127 +0,0 @@
----
-title: "Backup Management"
-date:
-draft: false
-weight: 82
----
-
-In the [previous section]({{< relref "./backups.md" >}}), we looked at a brief overview of the full disaster recovery feature set that PGO provides and explored how to [configure backups for our Postgres cluster]({{< relref "./backups.md" >}}).
-
-Now that we have backups set up, lets look at some of the various backup management tasks we can perform. These include:
-
-- Setting up scheduled backups
-- Setting backup retention policies
-- Taking one-off / ad hoc backups
-
-## Managing Scheduled Backups
-
-PGO sets up your Postgres clusters so that they are continuously archiving the [write-ahead log](https://www.postgresql.org/docs/current/wal-intro.html):
-your data is constantly being stored in your backup repository. Effectively, this is a backup!
-
-However, in a [disaster recovery]({{< relref "./disaster-recovery.md" >}}) scenario, you likely want to get your Postgres cluster back up and running as quickly as possible (e.g. a short "[recovery time objective (RTO)](https://en.wikipedia.org/wiki/Disaster_recovery#Recovery_Time_Objective)"). What helps accomplish this is to take periodic backups. This makes it faster to restore!
-
-[pgBackRest](https://pgbackrest.org/), the backup management tool used by PGO, provides different backup types to help both from a space management and RTO optimization perspective. These backup types include:
-
-- `full`: A backup of your entire Postgres cluster. This is the largest of all of the backup types.
-- `differential`: A backup of all of the data since the last `full` backup.
-- `incremental`: A backup of all of the data since the last `full`, `differential`, or `incremental` backup.
-
-Selecting the appropriate backup strategy for your Postgres cluster is outside the scope of this tutorial, but let's look at how we can set up scheduled backups.
-
-Backup schedules are stored in the `spec.backups.pgbackrest.repos.schedules` section. Each value in this section
-accepts a [cron-formatted](https://docs.k8s.io/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax) string
-that dictates the backup schedule.
-
-Let's say that our backup policy is to take a full backup weekly on Sunday at 1am and take differential backups daily at 1am on every day except Sunday.
-We would want to add configuration to our spec that looks similar to:
-
-```
-spec:
- backups:
- pgbackrest:
- repos:
- - name: repo1
- schedules:
- full: "0 1 * * 0"
- differential: "0 1 * * 1-6"
-```
-
-To manage scheduled backups, PGO will create several Kubernetes [CronJobs](https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/)
-that will perform backups on the specified periods. The backups will use the [configuration that you specified]({{< relref "./backups.md" >}}).
-
-Ensuring you take regularly scheduled backups is important to maintaining Postgres cluster health.
-However, you don't need to keep all of your backups: this could cause you to run out of space!
-As such, it's also important to set a backup retention policy.
-
-## Managing Backup Retention
-
-PGO lets you set backup retention on full and differential backups. When a full backup expires,
-either through your retention policy or through manual expiration, pgBackRest will clean up any
-backup and WAL files associated with it. For example, if you have a full backup with four associated
-incremental backups, when the full backup expires, all of its incremental backups also expire.
-
-There are two different types of backup retention you can set:
-
-- `count`: This is based on the number of backups you want to keep. This is the default.
-- `time`: This is based on the total number of days you would like to keep a backup.
-
-Let's look at an example where we keep full backups for 14 days. The most convenient way to do this
-is through the `spec.backups.pgbackrest.global` section:
-
-```
-spec:
- backups:
- pgbackrest:
- global:
- repo1-retention-full: "14"
- repo1-retention-full-type: time
-```
-
-The full list of available configuration options is in the [pgBackRest configuration](https://pgbackrest.org/configuration.html) guide.
-
-## Taking a One-Off Backup
-
-There are times where you may want to take a one-off backup, such as before major application changes
-or updates. This is not your typical declarative action -- in fact a one-off backup is imperative
-in its nature! -- but it is possible to take a one-off backup of your Postgres cluster with PGO.
-
-First, you need to configure the `spec.backups.pgbackrest.manual` section to be able to take a one-off backup.
-This contains information about the type of backup you want to take and any other [pgBackRest configuration](https://pgbackrest.org/configuration.html) options.
-
-Let's configure the custom resource to take a one-off full backup:
-
-```
-spec:
- backups:
- pgbackrest:
- manual:
- repoName: repo1
- options:
- - --type=full
-```
-
-This does not trigger the one-off backup -- you have to do that by adding the
-`postgres-operator.crunchydata.com/pgbackrest-backup` annotation to your custom resource.
-The best way to set this annotation is with a timestamp, so you know when you initialized the backup.
-
-For example, for our `hippo` cluster, we can run the following command to trigger the one-off backup:
-
-```shell
-kubectl annotate -n postgres-operator postgrescluster hippo \
- postgres-operator.crunchydata.com/pgbackrest-backup="$(date)"
-```
-
-PGO will detect this annotation and create a new, one-off backup Job!
-
-If you intend to take one-off backups with similar settings in the future, you can leave those in the spec; just update the annotation to a different value the next time you are taking a backup.
-
-To re-run the command above, you will need to add the `--overwrite` flag so the annotation's value can be updated, i.e.
-
-```shell
-kubectl annotate -n postgres-operator postgrescluster hippo --overwrite \
- postgres-operator.crunchydata.com/pgbackrest-backup="$(date)"
-```
-
-## Next Steps
-
-We've covered the fundamental tasks with managing backups. What about [restores]({{< relref "./disaster-recovery.md" >}})? Or [cloning data into new Postgres clusters]({{< relref "./disaster-recovery.md" >}})? Let's explore!
diff --git a/docs/content/tutorial/backups.md b/docs/content/tutorial/backups.md
deleted file mode 100644
index 0138cd1706..0000000000
--- a/docs/content/tutorial/backups.md
+++ /dev/null
@@ -1,397 +0,0 @@
----
-title: "Backup Configuration"
-date:
-draft: false
-weight: 80
----
-
-An important part of a healthy Postgres cluster is maintaining backups. PGO optimizes its use of open source [pgBackRest](https://pgbackrest.org/) to be able to support terabyte size databases. What's more, PGO makes it convenient to perform many common and advanced actions that can occur during the lifecycle of a database, including:
-
-- Setting automatic backup schedules and retention policies
-- Backing data up to multiple locations
- - Support for backup storage in Kubernetes, AWS S3 (or S3-compatible systems like MinIO), Google Cloud Storage (GCS), and Azure Blob Storage
-- Taking one-off / ad hoc backups
-- Performing a "point-in-time-recovery"
-- Cloning data to a new instance
-
-and more.
-
-Let's explore the various disaster recovery features in PGO by first looking at how to set up backups.
-
-## Understanding Backup Configuration and Basic Operations
-
-The backup configuration for a PGO managed Postgres cluster resides in the
-`spec.backups.pgbackrest` section of a custom resource. In addition to indicating which
-version of pgBackRest to use, this section allows you to configure the fundamental
-backup settings for your Postgres cluster, including:
-
-- `spec.backups.pgbackrest.configuration` - allows to add additional configuration and references to Secrets that are needed for configuration your backups. For example, this may reference a Secret that contains your S3 credentials.
-- `spec.backups.pgbackrest.global` - a convenience to apply global [pgBackRest configuration](https://pgbackrest.org/configuration.html). An example of this may be setting the global pgBackRest logging level (e.g. `log-level-console: info`), or provide configuration to optimize performance.
-- `spec.backups.pgbackrest.repos` - information on each specific pgBackRest backup repository.
- This allows you to configure where and how your backups and WAL archive are stored.
- You can keep backups in up to four (4) different locations!
-
-You can configure the `repos` section based on the backup storage system you are looking to use. Specifically, you configure your `repos` section according to the storage type you are using. There are four storage types available in `spec.backups.pgbackrest.repos`:
-
-| Storage Type | Description |
-|--------------| ------------ |
-| `azure` | For use with Azure Blob Storage. |
-| `gcs` | For use with Google Cloud Storage (GCS). |
-| `s3` | For use with Amazon S3 or any S3 compatible storage system such as MinIO. |
-| `volume` | For use with a Kubernetes [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/). |
-
-
-Regardless of the backup storage system you select, you **must** assign a name to `spec.backups.pgbackrest.repos.name`, e.g. `repo1`. pgBackRest follows the convention of assigning configuration to a specific repository using a `repoN` format, e.g. `repo1`, `repo2`, etc. You can customize your configuration based upon the name that you assign in the spec. We will cover this topic further in the multi-repository example.
-
-By default, backups are stored in a directory that follows the pattern `pgbackrest/repoN` where `N` is the number of the repo. This typically does not present issues when storing your backup information in a Kubernetes volume, but it can present complications if you are storing all of your backups in the same backup in a blob storage system like S3/GCS/Azure. You can avoid conflicts by setting the `repoN-path` variable in `spec.backups.pgbackrest.global`. The convention we recommend for setting this variable is `/pgbackrest/$NAMESPACE/$CLUSTER_NAME/repoN`. For example, if I have a cluster named `hippo` in the namespace `postgres-operator`, I would set the following:
-
-```
-spec:
- backups:
- pgbackrest:
- global:
- repo1-path: /pgbackrest/postgres-operator/hippo/repo1
-```
-
-As mentioned earlier, you can store backups in up to four different repositories. You can also mix and match, e.g. you could store your backups in two different S3 repositories. Each storage type does have its own required attributes that you need to set. We will cover that later in this section.
-
-Now that we've covered the basics, let's learn how to set up our backup repositories!
-
-## Setting Up a Backup Repository
-
-As mentioned above, PGO, the Postgres Operator from Crunchy Data, supports multiple ways to store backups. Let's look into each method and see how you can ensure your backups and archives are being safely stored!
-
-## Using Kubernetes Volumes
-
-The simplest way to get started storing backups is to use a Kubernetes Volume. This was already configure as part of the [create a Postgres cluster]({{< relref "./create-cluster.md">}}) example. Let's take a closer look at some of that configuration:
-
-```
-- name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-The one requirement of volume is that you need to fill out the `volumeClaimSpec` attribute. This attribute uses the same format as a [persistent volume claim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) spec! In fact, we performed a similar set up when we [created a Postgres cluster]({{< relref "./create-cluster.md">}}).
-
-In the above example, we assume that the Kubernetes cluster is using a default storage class. If your cluster does not have a default storage class, or you wish to use a different storage class, you will have to set `spec.backups.pgbackrest.repos.volume.volumeClaimSpec.storageClassName`.
-
-## Using S3
-
-Setting up backups in S3 requires a few additional modifications to your custom resource spec
-and either
-- the use of a Secret to protect your S3 credentials, or
-- setting up identity providers in AWS to allow pgBackRest to assume a role with permissions.
-
-### Using S3 Credentials
-
-There is an example for creating a Postgres cluster that uses S3 for backups in the `kustomize/s3` directory in the [Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repository. In this directory, there is a file called `s3.conf.example`. Copy this example file to `s3.conf`:
-
-```
-cp s3.conf.example s3.conf
-```
-
-Note that `s3.conf` is protected from commit by a `.gitignore`.
-
-Open up `s3.conf`, you will see something similar to:
-
-```
-[global]
-repo1-s3-key=
-repo1-s3-key-secret=
-```
-
-Replace the values with your AWS S3 credentials and save.
-
-Now, open up `kustomize/s3/postgres.yaml`. In the `s3` section, you will see something similar to:
-
-```
-s3:
- bucket: ""
- endpoint: ""
- region: ""
-```
-
-Again, replace these values with the values that match your S3 configuration. For `endpoint`, only use the domain and, if necessary, the port (e.g. `s3.us-east-2.amazonaws.com`).
-
-Note that `region` is required by S3, as does pgBackRest. If you are using a storage system with a S3 compatibility layer that does not require `region`, you can fill in region with a random value.
-
-If you are using MinIO, you may need to set the URI style to use `path` mode. You can do this from the global settings, e.g. for `repo1`:
-
-```yaml
-spec:
- backups:
- pgbackrest:
- global:
- repo1-s3-uri-style: path
-```
-
-When your configuration is saved, you can deploy your cluster:
-
-```
-kubectl apply -k kustomize/s3
-```
-
-Watch your cluster: you will see that your backups and archives are now being stored in S3!
-
-### Using an AWS-integrated identity provider and role
-
-If you deploy PostgresClusters to AWS Elastic Kubernetes Service, you can take advantage of their
-IAM role integration. When you attach a certain annotation to your PostgresCluster spec, AWS will
-automatically mount an AWS token and other needed environment variables. These environment
-variables will then be used by pgBackRest to assume the identity of a role that has permissions
-to upload to an S3 repository.
-
-This method requires [additional setup in AWS IAM](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html).
-Use the procedure in the linked documentation for the first two steps described below:
-
-1. Create an OIDC provider for your EKS cluster.
-2. Create an IAM policy for bucket access and an IAM role with a trust relationship with the
-OIDC provider in step 1.
-
-The third step is to associate that IAM role with a ServiceAccount, but there's no need to
-do that manually, as PGO does that for you. First, make a note of the IAM role's `ARN`.
-
-You can then make the following changes to the files in the `kustomize/s3` directory in the
-[Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repository:
-
-1\. Add the `s3` section to the spec in `kustomize/s3/postgres.yaml` as discussed in the
-[Using S3 Credentials](#using-s3-credentials) section above. In addition to that, add the required `eks.amazonaws.com/role-arn`
-annotation to the PostgresCluster spec using the IAM `ARN` that you noted above.
-
-For instance, given an IAM role with the ARN `arn:aws:iam::123456768901:role/allow_bucket_access`,
-you would add the following to the PostgresCluster spec:
-
-```
-spec:
- metadata:
- annotations:
- eks.amazonaws.com/role-arn: "arn:aws:iam::123456768901:role/allow_bucket_access"
-```
-
-That `annotations` field will get propagated to the ServiceAccounts that require it automatically.
-
-2\. Copy the `s3.conf.example` file to `s3.conf`:
-
-```
-cp s3.conf.example s3.conf
-```
-
-Update that `kustomize/s3/s3.conf` file so that it looks like this:
-
-```
-[global]
-repo1-s3-key-type=web-id
-```
-
-That `repo1-s3-key-type=web-id` line will tell
-[pgBackRest](https://pgbackrest.org/configuration.html#section-repository/option-repo-s3-key-type)
-to use the IAM integration.
-
-With those changes saved, you can deploy your cluster:
-
-```
-kubectl apply -k kustomize/s3
-```
-
-And watch as it spins up and backs up to S3 using pgBackRest's IAM integration.
-
-## Using Google Cloud Storage (GCS)
-
-Similar to S3, setting up backups in Google Cloud Storage (GCS) requires a few additional modifications to your custom resource spec and the use of a Secret to protect your GCS credentials.
-
-There is an example for creating a Postgres cluster that uses GCS for backups in the `kustomize/gcs` directory in the [Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repository. In order to configure this example to use GCS for backups, you will need do two things.
-
-First, copy your GCS key secret (which is a JSON file) into `kustomize/gcs/gcs-key.json`. Note that a `.gitignore` directive prevents you from committing this file.
-
-Next, open the `postgres.yaml` file and edit `spec.backups.pgbackrest.repos.gcs.bucket` to the name of the GCS bucket that you want to back up to.
-
-Save this file, and then run:
-
-```
-kubectl apply -k kustomize/gcs
-```
-
-Watch your cluster: you will see that your backups and archives are now being stored in GCS!
-
-## Using Azure Blob Storage
-
-Similar to the above, setting up backups in Azure Blob Storage requires a few additional modifications to your custom resource spec and the use of a Secret to protect your Azure Storage credentials.
-
-There is an example for creating a Postgres cluster that uses Azure for backups in the `kustomize/azure` directory in the [Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repository. In this directory, there is a file called `azure.conf.example`. Copy this example file to `azure.conf`:
-
-```
-cp azure.conf.example azure.conf
-```
-
-Note that `azure.conf` is protected from commit by a `.gitignore`.
-
-Open up `azure.conf`, you will see something similar to:
-
-```
-[global]
-repo1-azure-account=
-repo1-azure-key=
-```
-
-Replace the values with your Azure credentials and save.
-
-Now, open up `kustomize/azure/postgres.yaml`. In the `azure` section, you will see something similar to:
-
-```
-azure:
- container: ""
-```
-
-Again, replace these values with the values that match your Azure configuration.
-
-When your configuration is saved, you can deploy your cluster:
-
-```
-kubectl apply -k kustomize/azure
-```
-
-Watch your cluster: you will see that your backups and archives are now being stored in Azure!
-
-## Set Up Multiple Backup Repositories
-
-It is possible to store backups in multiple locations! For example, you may want to keep your backups both within your Kubernetes cluster and S3. There are many reasons for doing this:
-
-- It is typically faster to heal Postgres instances when your backups are closer
-- You can set different backup retention policies based upon your available storage
-- You want to ensure that your backups are distributed geographically
-
-and more.
-
-PGO lets you store your backups in up to four locations simultaneously. You can mix and match: for example, you can store backups both locally and in GCS, or store your backups in two different GCS repositories. It's up to you!
-
-There is an example in the [Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repository in the `kustomize/multi-backup-repo` folder that sets up backups in four different locations using each storage type. You can modify this example to match your desired backup topology.
-
-### Additional Notes
-
-While storing Postgres archives (write-ahead log [WAL] files) occurs in parallel when saving data to multiple pgBackRest repos, you cannot take parallel backups to different repos at the same time. PGO will ensure that all backups are taken serially. Future work in pgBackRest will address parallel backups to different repos. Please don't confuse this with parallel backup: pgBackRest does allow for backups to use parallel processes when storing them to a single repo!
-
-## Encryption
-
-You can encrypt your backups using AES-256 encryption using the CBC mode. This can be used independent of any encryption that may be supported by an external backup system.
-
-To encrypt your backups, you need to set the cipher type and provide a passphrase. The passphrase should be long and random (e.g. the pgBackRest documentation recommends `openssl rand -base64 48`). The passphrase should be kept in a Secret.
-
-Let's use our `hippo` cluster as an example. Let's create a new directory. First, create a file called `pgbackrest-secrets.conf` in this directory. It should look something like this:
-
-```
-[global]
-repo1-cipher-pass=your-super-secure-encryption-key-passphrase
-```
-
-This contains the passphrase used to encrypt your data.
-
-Next, create a `kustomization.yaml` file that looks like this:
-
-```yaml
-namespace: postgres-operator
-
-secretGenerator:
-- name: hippo-pgbackrest-secrets
- files:
- - pgbackrest-secrets.conf
-
-generatorOptions:
- disableNameSuffixHash: true
-
-resources:
-- postgres.yaml
-```
-
-Finally, create the manifest for the Postgres cluster in a file named `postgres.yaml` that is similar to the following:
-
-```yaml
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- configuration:
- - secret:
- name: hippo-pgbackrest-secrets
- global:
- repo1-cipher-type: aes-256-cbc
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-
-```
-
-Notice the reference to the Secret that contains the encryption key:
-
-```yaml
-spec:
- backups:
- pgbackrest:
- configuration:
- - secret:
- name: hippo-pgbackrest-secrets
-```
-
-as well as the configuration for enabling AES-256 encryption using the CBC mode:
-
-```yaml
-spec:
- backups:
- pgbackrest:
- global:
- repo1-cipher-type: aes-256-cbc
-```
-
-You can now create a Postgres cluster that has encrypted backups!
-
-### Limitations
-
-Currently the encryption settings cannot be changed on backups after they are established.
-
-## Custom Backup Configuration
-
-Most of your backup configuration can be configured through the `spec.backups.pgbackrest.global` attribute, or through information that you supply in the ConfigMap or Secret that you refer to in `spec.backups.pgbackrest.configuration`. You can also provide additional Secret values if need be, e.g. `repo1-cipher-pass` for encrypting backups.
-
-The full list of [pgBackRest configuration options](https://pgbackrest.org/configuration.html) is available here:
-
-[https://pgbackrest.org/configuration.html](https://pgbackrest.org/configuration.html)
-
-## IPv6 Support
-
-If you are running your cluster in an IPv6-only environment, you will need to add an annotation to your PostgresCluster so that PGO knows to set pgBackRest's `tls-server-address` to an IPv6 address. Otherwise, `tls-server-address` will be set to `0.0.0.0`, making pgBackRest inaccessible, and backups will not run. The annotation should be added as shown below:
-
-```yaml
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
- annotations:
- postgres-operator.crunchydata.com/pgbackrest-ip-version: IPv6
-```
-
-## Next Steps
-
-We've now seen how to use PGO to get our backups and archives set up and safely stored. Now let's take a look at [backup management]({{< relref "./backup-management.md" >}}) and how we can do things such as set backup frequency, set retention policies, and even take one-off backups!
diff --git a/docs/content/tutorial/connect-cluster.md b/docs/content/tutorial/connect-cluster.md
deleted file mode 100644
index 513bf207b7..0000000000
--- a/docs/content/tutorial/connect-cluster.md
+++ /dev/null
@@ -1,200 +0,0 @@
----
-title: "Connect to a Postgres Cluster"
-date:
-draft: false
-weight: 30
----
-
-It's one thing to [create a Postgres cluster]({{< relref "./create-cluster.md" >}}); it's another thing to connect to it. Let's explore how PGO makes it possible to connect to a Postgres cluster!
-
-## Background: Services, Secrets, and TLS
-
-PGO creates a series of Kubernetes [Services](https://kubernetes.io/docs/concepts/services-networking/service/) to provide stable endpoints for connecting to your Postgres databases. These endpoints make it easy to provide a consistent way for your application to maintain connectivity to your data. To inspect what services are available, you can run the following command:
-
-```
-kubectl -n postgres-operator get svc --selector=postgres-operator.crunchydata.com/cluster=hippo
-```
-
-will yield something similar to:
-
-```
-NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
-hippo-ha ClusterIP 10.103.73.92 5432/TCP 3h14m
-hippo-ha-config ClusterIP None 3h14m
-hippo-pods ClusterIP None 3h14m
-hippo-primary ClusterIP None 5432/TCP 3h14m
-hippo-replicas ClusterIP 10.98.110.215 5432/TCP 3h14m
-```
-
-You do not need to worry about most of these Services, as they are used to help manage the overall health of your Postgres cluster. For the purposes of connecting to your database, the Service of interest is called `hippo-primary`. Thanks to PGO, you do not need to even worry about that, as that information is captured within a Secret!
-
-When your Postgres cluster is initialized, PGO will bootstrap a database and Postgres user that your application can access. This information is stored in a Secret named with the pattern `-pguser-`. For our `hippo` cluster, this Secret is called `hippo-pguser-hippo`. This Secret contains the information you need to connect your application to your Postgres database:
-
-- `user`: The name of the user account.
-- `password`: The password for the user account.
-- `dbname`: The name of the database that the user has access to by default.
-- `host`: The name of the host of the database.
- This references the [Service](https://kubernetes.io/docs/concepts/services-networking/service/) of the primary Postgres instance.
-- `port`: The port that the database is listening on.
-- `uri`: A [PostgreSQL connection URI](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING)
- that provides all the information for logging into the Postgres database.
-- `jdbc-uri`: A [PostgreSQL JDBC connection URI](https://jdbc.postgresql.org/documentation/use/) that provides
- all the information for logging into the Postgres database via the JDBC driver.
-
-All connections are over TLS. PGO provides its own certificate authority (CA) to allow you to securely connect your applications to your Postgres clusters. This allows you to use the [`verify-full` "SSL mode"](https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-SSLMODE-STATEMENTS) of Postgres, which provides eavesdropping protection and prevents MITM attacks. You can also choose to bring your own CA, which is described later in this tutorial in the [Customize Cluster]({{< relref "./customize-cluster.md" >}}) section.
-
-### Modifying Service Type, NodePort Value and Metadata
-
-By default, PGO deploys Services with the `ClusterIP` Service type. Based on how you want to expose your database,
-you may want to modify the Services to use a different
-[Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types)
-and [NodePort value](https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport).
-
-You can modify the Services that PGO manages from the following attributes:
-
-- `spec.service` - this manages the Service for connecting to a Postgres primary.
-- `spec.proxy.pgBouncer.service` - this manages the Service for connecting to the PgBouncer connection pooler.
-- `spec.userInterface.pgAdmin.service` - this manages the Service for connecting to the pgAdmin management tool.
-
-For example, say you want to set the Postgres primary to use a `NodePort` service, a specific `nodePort` value, and set
-a specific annotation and label, you would add the following to your manifest:
-
-```yaml
-spec:
- service:
- metadata:
- annotations:
- my-annotation: value1
- labels:
- my-label: value2
- type: NodePort
- nodePort: 32000
-```
-
-For our `hippo` cluster, you would see the Service type and nodePort modification as well as the annotation and label.
-For example:
-
-```
-kubectl -n postgres-operator get svc --selector=postgres-operator.crunchydata.com/cluster=hippo
-```
-
-will yield something similar to:
-
-```
-NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
-hippo-ha NodePort 10.105.57.191 5432:32000/TCP 48s
-hippo-ha-config ClusterIP None 48s
-hippo-pods ClusterIP None 48s
-hippo-primary ClusterIP None 5432/TCP 48s
-hippo-replicas ClusterIP 10.106.18.99 5432/TCP 48s
-```
-
-and the top of the output from running
-
-```
-kubectl -n postgres-operator describe svc hippo-ha
-```
-
-will show our custom annotation and label have been added:
-
-```
-Name: hippo-ha
-Namespace: postgres-operator
-Labels: my-label=value2
- postgres-operator.crunchydata.com/cluster=hippo
- postgres-operator.crunchydata.com/patroni=hippo-ha
-Annotations: my-annotation: value1
-```
-
-Note that setting the `nodePort` value is not allowed when using the (default) `ClusterIP` type, and it must be in-range
-and not otherwise in use or the operation will fail. Additionally, be aware that any annotations or labels provided here
-will win in case of conflicts with any annotations or labels a user configures elsewhere.
-
-Finally, if you are exposing your Services externally and are relying on TLS
-verification, you will need to use the [custom TLS]({{< relref "tutorial/customize-cluster.md" >}}#customize-tls)
-features of PGO).
-
-## Connect an Application
-
-For this tutorial, we are going to connect [Keycloak](https://www.keycloak.org/), an open source
-identity management application. Keycloak can be deployed on Kubernetes and is backed by a Postgres
-database. While we provide an [example of deploying Keycloak and a PostgresCluster](https://github.com/CrunchyData/postgres-operator-examples/tree/main/kustomize/keycloak)
-in the [Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples)
-repository, the manifest below deploys it using our `hippo` cluster that is already running:
-
-```
-kubectl apply --filename=- <}}) cluster!
diff --git a/docs/content/tutorial/connection-pooling.md b/docs/content/tutorial/connection-pooling.md
deleted file mode 100644
index ff9130374e..0000000000
--- a/docs/content/tutorial/connection-pooling.md
+++ /dev/null
@@ -1,239 +0,0 @@
----
-title: "Connection Pooling"
-date:
-draft: false
-weight: 100
----
-
-Connection pooling can be helpful for scaling and maintaining overall availability between your application and the database. PGO helps facilitate this by supporting the [PgBouncer](https://www.pgbouncer.org/) connection pooler and state manager.
-
-Let's look at how we can a connection pooler and connect it to our application!
-
-## Adding a Connection Pooler
-
-Let's look at how we can add a connection pooler using the `kustomize/keycloak` example in the [Postgres Operator examples](https://github.com/CrunchyData/postgres-operator-examples/fork) repository.
-
-Connection poolers are added using the `spec.proxy` section of the custom resource. Currently, the only connection pooler supported is [PgBouncer](https://www.pgbouncer.org/).
-
-The only required attribute for adding a PgBouncer connection pooler is to set the `spec.proxy.pgBouncer.image` attribute. In the `kustomize/keycloak/postgres.yaml` file, add the following YAML to the spec:
-
-```
-proxy:
- pgBouncer:
- image: {{< param imageCrunchyPGBouncer >}}
-```
-
-(You can also find an example of this in the `kustomize/examples/high-availability` example).
-
-Save your changes and run:
-
-```
-kubectl apply -k kustomize/keycloak
-```
-
-PGO will detect the change and create a new PgBouncer Deployment!
-
-That was fairly easy to set up, so now let's look at how we can connect our application to the connection pooler.
-
-## Connecting to a Connection Pooler
-
-When a connection pooler is deployed to the cluster, PGO adds additional information to the user Secrets to allow for applications to connect directly to the connection pooler. Recall that in this example, our user Secret is called `keycloakdb-pguser-keycloakdb`. Describe the user Secret:
-
-```
-kubectl -n postgres-operator describe secrets keycloakdb-pguser-keycloakdb
-```
-
-You should see that there are several new attributes included in this Secret that allow for you to connect to your Postgres instance via the connection pooler:
-
-- `pgbouncer-host`: The name of the host of the PgBouncer connection pooler.
- This references the [Service](https://kubernetes.io/docs/concepts/services-networking/service/) of the PgBouncer connection pooler.
-- `pgbouncer-port`: The port that the PgBouncer connection pooler is listening on.
-- `pgbouncer-uri`: A [PostgreSQL connection URI](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING)
- that provides all the information for logging into the Postgres database via the PgBouncer connection pooler.
-- `pgbouncer-jdbc-uri`: A [PostgreSQL JDBC connection URI](https://jdbc.postgresql.org/documentation/use/) that provides
- all the information for logging into the Postgres database via the PgBouncer connection pooler using the JDBC driver.
- Note that by default, the connection string disable JDBC managing prepared transactions for
- [optimal use with PgBouncer](https://www.pgbouncer.org/faq.html#how-to-use-prepared-statements-with-transaction-pooling).
-
-Open up the file in `kustomize/keycloak/keycloak.yaml`. Update the `DB_ADDR` and `DB_PORT` values to be the following:
-
-```
-- name: DB_ADDR
- valueFrom: { secretKeyRef: { name: keycloakdb-pguser-keycloakdb, key: pgbouncer-host } }
-- name: DB_PORT
- valueFrom: { secretKeyRef: { name: keycloakdb-pguser-keycloakdb, key: pgbouncer-port } }
-```
-
-This changes Keycloak's configuration so that it will now connect through the connection pooler.
-
-Apply the changes:
-
-```
-kubectl apply -k kustomize/keycloak
-```
-
-Kubernetes will detect the changes and begin to deploy a new Keycloak Pod. When it is completed, Keycloak will now be connected to Postgres via the PgBouncer connection pooler!
-
-## TLS
-
-PGO deploys every cluster and component over TLS. This includes the PgBouncer connection pooler. If you are using your own [custom TLS setup]({{< relref "./customize-cluster.md" >}}#customize-tls), you will need to provide a Secret reference for a TLS key / certificate pair for PgBouncer in `spec.proxy.pgBouncer.customTLSSecret`.
-
-Your TLS certificate for PgBouncer should have a Common Name (CN) setting that matches the PgBouncer Service name. This is the name of the cluster suffixed with `-pgbouncer`. For example, for our `hippo` cluster this would be `hippo-pgbouncer`. For the `keycloakdb` example, it would be `keycloakdb-pgbouncer`.
-
-To customize the TLS for PgBouncer, you will need to create a Secret in the Namespace of your Postgres cluster that contains the TLS key (`tls.key`), TLS certificate (`tls.crt`) and the CA certificate (`ca.crt`) to use. The Secret should contain the following values:
-
-```
-data:
- ca.crt:
- tls.crt:
- tls.key:
-```
-
-For example, if you have files named `ca.crt`, `keycloakdb-pgbouncer.key`, and `keycloakdb-pgbouncer.crt` stored on your local machine, you could run the following command:
-
-```
-kubectl create secret generic -n postgres-operator keycloakdb-pgbouncer.tls \
- --from-file=ca.crt=ca.crt \
- --from-file=tls.key=keycloakdb-pgbouncer.key \
- --from-file=tls.crt=keycloakdb-pgbouncer.crt
-```
-
-You can specify the custom TLS Secret in the `spec.proxy.pgBouncer.customTLSSecret.name` field in your `postgrescluster.postgres-operator.crunchydata.com` custom resource, e.g.:
-
-```
-spec:
- proxy:
- pgBouncer:
- customTLSSecret:
- name: keycloakdb-pgbouncer.tls
-```
-
-## Customizing
-
-The PgBouncer connection pooler is highly customizable, both from a configuration and Kubernetes deployment standpoint. Let's explore some of the customizations that you can do!
-
-### Configuration
-
-[PgBouncer configuration](https://www.pgbouncer.org/config.html) can be customized through `spec.proxy.pgBouncer.config`. After making configuration changes, PGO will roll them out to any PgBouncer instance and automatically issue a "reload".
-
-There are several ways you can customize the configuration:
-
-- `spec.proxy.pgBouncer.config.global`: Accepts key-value pairs that apply changes globally to PgBouncer.
-- `spec.proxy.pgBouncer.config.databases`: Accepts key-value pairs that represent PgBouncer [database definitions](https://www.pgbouncer.org/config.html#section-databases).
-- `spec.proxy.pgBouncer.config.users`: Accepts key-value pairs that represent [connection settings applied to specific users](https://www.pgbouncer.org/config.html#section-users).
-- `spec.proxy.pgBouncer.config.files`: Accepts a list of files that are mounted in the `/etc/pgbouncer` directory and loaded before any other options are considered using PgBouncer's [include directive](https://www.pgbouncer.org/config.html#include-directive).
-
-For example, to set the connection pool mode to `transaction`, you would set the following configuration:
-
-```
-spec:
- proxy:
- pgBouncer:
- config:
- global:
- pool_mode: transaction
-```
-
-For a reference on [PgBouncer configuration](https://www.pgbouncer.org/config.html) please see:
-
-[https://www.pgbouncer.org/config.html](https://www.pgbouncer.org/config.html)
-
-### Replicas
-
-PGO deploys one PgBouncer instance by default. You may want to run multiple PgBouncer instances to have some level of redundancy, though you still want to be mindful of how many connections are going to your Postgres database!
-
-You can manage the number of PgBouncer instances that are deployed through the `spec.proxy.pgBouncer.replicas` attribute.
-
-### Resources
-
-You can manage the CPU and memory resources given to a PgBouncer instance through the `spec.proxy.pgBouncer.resources` attribute. The layout of `spec.proxy.pgBouncer.resources` should be familiar: it follows the same pattern as the standard Kubernetes structure for setting [container resources](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/).
-
-For example, let's say we want to set some CPU and memory limits on our PgBouncer instances. We could add the following configuration:
-
-```
-spec:
- proxy:
- pgBouncer:
- resources:
- limits:
- cpu: 200m
- memory: 128Mi
-```
-
-As PGO deploys the PgBouncer instances using a [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) these changes are rolled out using a rolling update to minimize disruption between your application and Postgres instances!
-
-### Annotations / Labels
-
-You can apply custom annotations and labels to your PgBouncer instances through the `spec.proxy.pgBouncer.metadata.annotations` and `spec.proxy.pgBouncer.metadata.labels` attributes respectively. Note that any changes to either of these two attributes take precedence over any other custom labels you have added.
-
-### Pod Anti-Affinity / Pod Affinity / Node Affinity
-
-You can control the [pod anti-affinity, pod affinity, and node affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) through the `spec.proxy.pgBouncer.affinity` attribute, specifically:
-
-- `spec.proxy.pgBouncer.affinity.nodeAffinity`: controls node affinity for the PgBouncer instances.
-- `spec.proxy.pgBouncer.affinity.podAffinity`: controls Pod affinity for the PgBouncer instances.
-- `spec.proxy.pgBouncer.affinity.podAntiAffinity`: controls Pod anti-affinity for the PgBouncer instances.
-
-Each of the above follows the [standard Kubernetes specification for setting affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity).
-
-For example, to set a preferred Pod anti-affinity rule for the `kustomize/keycloak` example, you would want to add the following to your configuration:
-
-```
-spec:
- proxy:
- pgBouncer:
- affinity:
- podAntiAffinity:
- preferredDuringSchedulingIgnoredDuringExecution:
- - weight: 1
- podAffinityTerm:
- labelSelector:
- matchLabels:
- postgres-operator.crunchydata.com/cluster: keycloakdb
- postgres-operator.crunchydata.com/role: pgbouncer
- topologyKey: kubernetes.io/hostname
-```
-
-### Tolerations
-
-You can deploy PgBouncer instances to [Nodes with Taints](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) by setting [Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) through `spec.proxy.pgBouncer.tolerations`. This attribute follows the Kubernetes standard tolerations layout.
-
-For example, if there were a set of Nodes with a Taint of `role=connection-poolers:NoSchedule` that you want to schedule your PgBouncer instances to, you could apply the following configuration:
-
-```
-spec:
- proxy:
- pgBouncer:
- tolerations:
- - effect: NoSchedule
- key: role
- operator: Equal
- value: connection-poolers
-```
-
-Note that setting a toleration does not necessarily mean that the PgBouncer instances will be assigned to Nodes with those taints. [Tolerations act as a **key**: they allow for you to access Nodes](https://blog.crunchydata.com/blog/kubernetes-pod-tolerations-and-postgresql-deployment-strategies). If you want to ensure that your PgBouncer instances are deployed to specific nodes, you need to combine setting tolerations with node affinity.
-
-### Pod Spread Constraints
-
-Besides using affinity, anti-affinity and tolerations, you can also set [Topology Spread Constraints](https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/) through `spec.proxy.pgBouncer.topologySpreadConstraints`. This attribute follows the Kubernetes standard topology spread contraint layout.
-
-For example, since each of of our pgBouncer Pods will have the standard `postgres-operator.crunchydata.com/role: pgbouncer` Label set, we can use this Label when determining the `maxSkew`. In the example below, since we have 3 nodes with a `maxSkew` of 1 and we've set `whenUnsatisfiable` to `ScheduleAnyway`, we should ideally see 1 Pod on each of the nodes, but our Pods can be distributed less evenly if other constraints keep this from happening.
-
-```
- proxy:
- pgBouncer:
- replicas: 3
- topologySpreadConstraints:
- - maxSkew: 1
- topologyKey: my-node-label
- whenUnsatisfiable: ScheduleAnyway
- labelSelector:
- matchLabels:
- postgres-operator.crunchydata.com/role: pgbouncer
-```
-
-If you want to ensure that your PgBouncer instances are deployed more evenly (or not deployed at all), you need to update `whenUnsatisfiable` to `DoNotSchedule`.
-
-## Next Steps
-
-Now that we can enable connection pooling in a cluster, let’s explore some [administrative tasks]({{< relref "administrative-tasks.md" >}}) such as manually restarting PostgreSQL using PGO. How do we do that?
diff --git a/docs/content/tutorial/create-cluster.md b/docs/content/tutorial/create-cluster.md
deleted file mode 100644
index 46674d3bfd..0000000000
--- a/docs/content/tutorial/create-cluster.md
+++ /dev/null
@@ -1,88 +0,0 @@
----
-title: "Create a Postgres Cluster"
-date:
-draft: false
-weight: 20
----
-
-If you came here through the [quickstart]({{< relref "quickstart/_index.md" >}}), you may have already created a cluster. If you created a cluster by using the example in the `kustomize/postgres` directory, feel free to skip to connecting to a cluster, or read onward for a more in depth look into cluster creation!
-
-## Create a Postgres Cluster
-
-Creating a Postgres cluster is pretty simple. Using the example in the `kustomize/postgres` directory, all we have to do is run:
-
-```
-kubectl apply -k kustomize/postgres
-```
-
-and PGO will create a simple Postgres cluster named `hippo` in the `postgres-operator` namespace. You can track the status of your Postgres cluster using `kubectl describe` on the `postgresclusters.postgres-operator.crunchydata.com` custom resource:
-
-```
-kubectl -n postgres-operator describe postgresclusters.postgres-operator.crunchydata.com hippo
-```
-
-and you can track the state of the Postgres Pod using the following command:
-
-```
-kubectl -n postgres-operator get pods \
- --selector=postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/instance
-```
-
-### What Just Happened?
-
-PGO created a Postgres cluster based on the information provided to it in the Kustomize manifests located in the `kustomize/postgres` directory. Let's better understand what happened by inspecting the `kustomize/postgres/postgres.yaml` file:
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - name: instance1
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-When we ran the `kubectl apply` command earlier, what we did was create a `PostgresCluster` custom resource in Kubernetes. PGO detected that we added a new `PostgresCluster` resource and started to create all the objects needed to run Postgres in Kubernetes!
-
-What else happened? PGO read the value from `metadata.name` to provide the Postgres cluster with the name `hippo`. Additionally, PGO knew which containers to use for Postgres and pgBackRest by looking at the values in `spec.image` and `spec.backups.pgbackrest.image` respectively. The value in `spec.postgresVersion` is important as it will help PGO track which major version of Postgres you are using.
-
-PGO knows how many Postgres instances to create through the `spec.instances` section of the manifest. While `name` is optional, we opted to give it the name `instance1`. We could have also created multiple replicas and instances during cluster initialization, but we will cover that more when we discuss how to [scale and create a HA Postgres cluster]({{< relref "./high-availability.md" >}}).
-
-A very important piece of your `PostgresCluster` custom resource is the `dataVolumeClaimSpec` section. This describes the storage that your Postgres instance will use. It is modeled after the [Persistent Volume Claim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/). If you do not provide a `spec.instances.dataVolumeClaimSpec.storageClassName`, then the default storage class in your Kubernetes environment is used.
-
-As part of creating a Postgres cluster, we also specify information about our backup archive. PGO uses [pgBackRest](https://pgbackrest.org/), an open source backup and restore tool designed to handle terabyte-scale backups. As part of initializing our cluster, we can specify where we want our backups and archives ([write-ahead logs or WAL](https://www.postgresql.org/docs/current/wal-intro.html)) stored. We will talk about this portion of the `PostgresCluster` spec in greater depth in the [disaster recovery]({{< relref "./backups.md" >}}) section of this tutorial, and also see how we can store backups in Amazon S3, Google GCS, and Azure Blob Storage.
-
-## Troubleshooting
-
-### PostgreSQL / pgBackRest Pods Stuck in `Pending` Phase
-
-The most common occurrence of this is due to PVCs not being bound. Ensure that you have set up your storage options correctly in any `volumeClaimSpec`. You can always update your settings and reapply your changes with `kubectl apply`.
-
-Also ensure that you have enough persistent volumes available: your Kubernetes administrator may need to provision more.
-
-If you are on OpenShift, you may need to set `spec.openshift` to `true`.
-
-
-## Next Steps
-
-We're up and running -- now let's [connect to our Postgres cluster]({{< relref "./connect-cluster.md" >}})!
diff --git a/docs/content/tutorial/customize-cluster.md b/docs/content/tutorial/customize-cluster.md
deleted file mode 100644
index d158e0160a..0000000000
--- a/docs/content/tutorial/customize-cluster.md
+++ /dev/null
@@ -1,467 +0,0 @@
----
-title: "Customize a Postgres Cluster"
-date:
-draft: false
-weight: 60
----
-
-Postgres is known for its ease of customization; PGO helps you to roll out changes efficiently and without disruption. After [resizing the resources]({{< relref "./resize-cluster.md" >}}) for our Postgres cluster in the previous step of this tutorial, lets see how we can tweak our Postgres configuration to optimize its usage of them.
-
-## Custom Postgres Configuration
-
-Part of the trick of managing multiple instances in a Postgres cluster is ensuring all of the configuration
-changes are propagated to each of them. This is where PGO helps: when you make a Postgres configuration
-change for a cluster, PGO will apply it to all of the Postgres instances.
-
-For example, in our previous step we added CPU and memory limits of `2.0` and `4Gi` respectively. Let's tweak some of the Postgres settings to better use our new resources. We can do this in the `spec.patroni.dynamicConfiguration` section. Here is an example updated manifest that tweaks several settings:
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - name: instance1
- replicas: 2
- resources:
- limits:
- cpu: 2.0
- memory: 4Gi
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- patroni:
- dynamicConfiguration:
- postgresql:
- parameters:
- max_parallel_workers: 2
- max_worker_processes: 2
- shared_buffers: 1GB
- work_mem: 2MB
-```
-
-In particular, we added the following to `spec`:
-
-```
-patroni:
- dynamicConfiguration:
- postgresql:
- parameters:
- max_parallel_workers: 2
- max_worker_processes: 2
- shared_buffers: 1GB
- work_mem: 2MB
-```
-
-Apply these updates to your Postgres cluster with the following command:
-
-```
-kubectl apply -k kustomize/postgres
-```
-
-PGO will go and apply these settings, restarting each Postgres instance when necessary. You can verify that the changes are present using the Postgres `SHOW` command, e.g.
-
-```
-SHOW work_mem;
-```
-
-should yield something similar to:
-
-```
- work_mem
-----------
- 2MB
-```
-
-## Customize TLS
-
-All connections in PGO use TLS to encrypt communication between components. PGO sets up a PKI and certificate authority (CA) that allow you create verifiable endpoints. However, you may want to bring a different TLS infrastructure based upon your organizational requirements. The good news: PGO lets you do this!
-
-If you want to use the TLS infrastructure that PGO provides, you can skip the rest of this section and move on to learning how to [apply software updates]({{< relref "./update-cluster.md" >}}).
-
-### How to Customize TLS
-
-There are a few different TLS endpoints that can be customized for PGO, including those of the Postgres cluster and controlling how Postgres instances authenticate with each other. Let's look at how we can customize TLS by defining
-
-* a `spec.customTLSSecret`, used to both identify the cluster and encrypt communications; and
-* a `spec.customReplicationTLSSecret`, used for replication authentication.
-
-(For more information on the `spec.customTLSSecret` and `spec.customReplicationTLSSecret` fields, see the [`PostgresCluster CRD`]({{< relref "references/crd.md" >}}).)
-
-To customize the TLS for a Postgres cluster, you will need to create two Secrets in the Namespace of your Postgres cluster. One of these Secrets will be the `customTLSSecret` and the other will be the `customReplicationTLSSecret`. Both secrets contain a TLS key (`tls.key`), TLS certificate (`tls.crt`) and CA certificate (`ca.crt`) to use.
-
-Note: If `spec.customTLSSecret` is provided you **must** also provide `spec.customReplicationTLSSecret` and both must contain the same `ca.crt`.
-
-The custom TLS and custom replication TLS Secrets should contain the following fields (though see below for a workaround if you cannot control the field names of the Secret's `data`):
-
-```
-data:
- ca.crt:
- tls.crt:
- tls.key:
-```
-
-For example, if you have files named `ca.crt`, `hippo.key`, and `hippo.crt` stored on your local machine, you could run the following command to create a Secret from those files:
-
-```
-kubectl create secret generic -n postgres-operator hippo-cluster.tls \
- --from-file=ca.crt=ca.crt \
- --from-file=tls.key=hippo.key \
- --from-file=tls.crt=hippo.crt
-```
-
-After you create the Secrets, you can specify the custom TLS Secret in your `postgrescluster.postgres-operator.crunchydata.com` custom resource. For example, if you created a `hippo-cluster.tls` Secret and a `hippo-replication.tls` Secret, you would add them to your Postgres cluster:
-
-```
-spec:
- customTLSSecret:
- name: hippo-cluster.tls
- customReplicationTLSSecret:
- name: hippo-replication.tls
-```
-
-If you're unable to control the key-value pairs in the Secret, you can create a mapping to tell
-the Postgres Operator what key holds the expected value. That would look similar to this:
-
-```
-spec:
- customTLSSecret:
- name: hippo.tls
- items:
- - key:
- path: tls.crt
- - key:
- path: tls.key
- - key:
- path: ca.crt
-```
-
-For instance, if the `hippo.tls` Secret had the `tls.crt` in a key named `hippo-tls.crt`, the
-`tls.key` in a key named `hippo-tls.key`, and the `ca.crt` in a key named `hippo-ca.crt`,
-then your mapping would look like:
-
-```
-spec:
- customTLSSecret:
- name: hippo.tls
- items:
- - key: hippo-tls.crt
- path: tls.crt
- - key: hippo-tls.key
- path: tls.key
- - key: hippo-ca.crt
- path: ca.crt
-```
-
-Note: Although the custom TLS and custom replication TLS Secrets share the same `ca.crt`, they do not share the same `tls.crt`:
-
-* Your `spec.customTLSSecret` TLS certificate should have a Common Name (CN) setting that matches the primary Service name. This is the name of the cluster suffixed with `-primary`. For example, for our `hippo` cluster this would be `hippo-primary`.
-* Your `spec.customReplicationTLSSecret` TLS certificate should have a Common Name (CN) setting that matches `_crunchyrepl`, which is the preset replication user.
-
-As with the other changes, you can roll out the TLS customizations with `kubectl apply`.
-
-## Labels
-
-There are several ways to add your own custom Kubernetes [Labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/) to your Postgres cluster.
-
-- Cluster: You can apply labels to any PGO managed object in a cluster by editing the `spec.metadata.labels` section of the custom resource.
-- Postgres: You can apply labels to a Postgres instance set and its objects by editing `spec.instances.metadata.labels`.
-- pgBackRest: You can apply labels to pgBackRest and its objects by editing `postgresclusters.spec.backups.pgbackrest.metadata.labels`.
-- PgBouncer: You can apply labels to PgBouncer connection pooling instances by editing `spec.proxy.pgBouncer.metadata.labels`.
-
-## Annotations
-
-There are several ways to add your own custom Kubernetes [Annotations](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) to your Postgres cluster.
-
-- Cluster: You can apply annotations to any PGO managed object in a cluster by editing the `spec.metadata.annotations` section of the custom resource.
-- Postgres: You can apply annotations to a Postgres instance set and its objects by editing `spec.instances.metadata.annotations`.
-- pgBackRest: You can apply annotations to pgBackRest and its objects by editing `spec.backups.pgbackrest.metadata.annotations`.
-- PgBouncer: You can apply annotations to PgBouncer connection pooling instances by editing `spec.proxy.pgBouncer.metadata.annotations`.
-
-## Pod Priority Classes
-
-PGO allows you to use [pod priority classes](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/) to indicate the relative importance of a pod by setting a `priorityClassName` field on your Postgres cluster. This can be done as follows:
-
-- Instances: Priority is defined per instance set and is applied to all Pods in that instance set by editing the `spec.instances.priorityClassName` section of the custom resource.
-- Dedicated Repo Host: Priority defined under the repoHost section of the spec is applied to the dedicated repo host by editing the `spec.backups.pgbackrest.repoHost.priorityClassName` section of the custom resource.
-- PgBouncer: Priority is defined under the pgBouncer section of the spec and will apply to all PgBouncer Pods by editing the `spec.proxy.pgBouncer.priorityClassName` section of the custom resource.
-- Backup (manual and scheduled): Priority is defined under the `spec.backups.pgbackrest.jobs.priorityClassName` section and applies that priority to all pgBackRest backup Jobs (manual and scheduled).
-- Restore (data source or in-place): Priority is defined for either a "data source" restore or an in-place restore by editing the `spec.dataSource.postgresCluster.priorityClassName` section of the custom resource.
-- Data Migration: The priority defined for the first instance set in the spec (array position 0) is used for the PGDATA and WAL migration Jobs. The pgBackRest repo migration Job will use the priority class applied to the repoHost.
-
-## Separate WAL PVCs
-
-PostgreSQL commits transactions by storing changes in its [Write-Ahead Log (WAL)](https://www.postgresql.org/docs/current/wal-intro.html). Because the way WAL files are accessed and
-utilized often differs from that of data files, and in high-performance situations, it can desirable to put WAL files on separate storage volume. With PGO, this can be done by adding
-the `walVolumeClaimSpec` block to your desired instance in your PostgresCluster spec, either when your cluster is created or anytime thereafter:
-
-```
-spec:
- instances:
- - name: instance
- walVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-This volume can be removed later by removing the `walVolumeClaimSpec` section from the instance. Note that when changing the WAL directory, care is taken so as not to lose any WAL files. PGO only
-deletes the PVC once there are no longer any WAL files on the previously configured volume.
-
-## Custom Sidecar Containers
-
-PGO allows you to configure custom
-[sidecar Containers](https://kubernetes.io/docs/concepts/workloads/pods/#how-pods-manage-multiple-containers)
-for your PostgreSQL instance and pgBouncer Pods.
-
-To use the custom sidecar features, you will need to enable
-them via the PGO
-[feature gate](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/).
-
-PGO feature gates are enabled by setting the `PGO_FEATURE_GATES` environment
-variable on the PGO Deployment. For a feature named 'FeatureName', that would
-look like
-
-```
-PGO_FEATURE_GATES="FeatureName=true"
-```
-
-Please note that it is possible to enable more than one feature at a time as
-this variable accepts a comma delimited list, for example:
-
-```
-PGO_FEATURE_GATES="FeatureName=true,FeatureName2=true,FeatureName3=true..."
-```
-
-{{% notice warning %}}
-Any feature name added to `PGO_FEATURE_GATES` must be defined by PGO and must be
-set to true or false. Any misconfiguration will prevent PGO from deploying.
-See the [considerations](#considerations) below for additional guidance.
-{{% /notice %}}
-
-### Custom Sidecar Containers for PostgreSQL Instance Pods
-
-To configure custom sidecar Containers for any of your PostgreSQL instance Pods
-you will need to enable that feature via the PGO feature gate.
-
-As mentioned above, PGO feature gates are enabled by setting the `PGO_FEATURE_GATES`
-environment variable on the PGO Deployment. For the PostgreSQL instance sidecar
-container feature, that will be
-
-```
-PGO_FEATURE_GATES="InstanceSidecars=true"
-```
-
-Once this feature is enabled, you can add your custom
-[Containers](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#container-v1-core)
-as an array to `spec.instances.containers`. See the [custom sidecar example](#custom-sidecar-example)
-below for more information!
-
-### Custom Sidecar Containers for pgBouncer Pods
-
-Similar to your PostgreSQL instance Pods, to configure custom sidecar Containers
-for your pgBouncer Pods you will need to enable it via the PGO feature gate.
-
-As mentioned above, PGO feature gates are enabled by setting the `PGO_FEATURE_GATES`
-environment variable on the PGO Deployment. For the pgBouncer custom sidecar
-container feature, that will be
-
-```
-PGO_FEATURE_GATES="PGBouncerSidecars=true"
-```
-
-Once this feature is enabled, you can add your custom
-[Containers](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#container-v1-core)
-as an array to `spec.proxy.pgBouncer.containers`. See the [custom sidecar example](#custom-sidecar-example)
-below for more information!
-
-### Custom Sidecar Example
-
-As a simple example, consider
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: sidecar-hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - name: instance1
- containers:
- - name: testcontainer
- image: mycontainer1:latest
- - name: testcontainer2
- image: mycontainer1:latest
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- proxy:
- pgBouncer:
- image: {{< param imageCrunchyPGBouncer >}}
- containers:
- - name: bouncertestcontainer1
- image: mycontainer1:latest
-```
-
-In the above example, we've added two sidecar Containers to the `instance1` Pod
-and one sidecar container to the `pgBouncer` Pod. These Containers can be
-defined in the manifest at any time, but the Containers will not be added to their
-respective Pods until the feature gate is enabled.
-
-### Considerations
-
-- Volume mounts and other Pod details are subject to change between releases.
-- The custom sidecar features are currently feature-gated. Any sidecar Containers,
- as well as any settings included in their configuration, are added and used at
- your own risk. Improperly configured sidecar Containers could impact the health
- and/or security of your PostgreSQL cluster!
-- When adding a sidecar container, we recommend adding a unique prefix to the
- container name to avoid potential naming conflicts with the official PGO
- containers.
-
-## Database Initialization SQL
-
-PGO can run SQL for you as part of the cluster creation and initialization process. PGO runs the SQL using the psql client so you can use meta-commands to connect to different databases, change error handling, or set and use variables. Its capabilities are described in the [psql documentation](https://www.postgresql.org/docs/current/app-psql.html).
-
-### Initialization SQL ConfigMap
-
-The Postgres cluster spec accepts a reference to a ConfigMap containing your init SQL file. Update your cluster spec to include the ConfigMap name, `spec.databaseInitSQL.name`, and the data key, `spec.databaseInitSQL.key`, for your SQL file. For example, if you create your ConfigMap with the following command:
-
-```
-kubectl -n postgres-operator create configmap hippo-init-sql --from-file=init.sql=/path/to/init.sql
-```
-
-You would add the following section to your Postgrescluster spec:
-
-```
-spec:
- databaseInitSQL:
- key: init.sql
- name: hippo-init-sql
-```
-
-{{% notice note %}}
-The ConfigMap must exist in the same namespace as your Postgres cluster.
-{{% /notice %}}
-
-After you add the ConfigMap reference to your spec, apply the change with `kubectl apply -k kustomize/postgres`. PGO will create your `hippo` cluster and run your initialization SQL once the cluster has started. You can verify that your SQL has been run by checking the `databaseInitSQL` status on your Postgres cluster. While the status is set, your init SQL will not be run again. You can check cluster status with the `kubectl describe` command:
-
-```
-kubectl -n postgres-operator describe postgresclusters.postgres-operator.crunchydata.com hippo
-```
-
-{{% notice warning %}}
-
-In some cases, due to how Kubernetes treats PostgresCluster status, PGO may run your SQL commands more than once. Please ensure that the commands defined in your init SQL are idempotent.
-
-{{% /notice %}}
-
-Now that `databaseInitSQL` is defined in your cluster status, verify database objects have been created as expected. After verifying, we recommend removing the `spec.databaseInitSQL` field from your spec. Removing the field from the spec will also remove `databaseInitSQL` from the cluster status.
-
-### PSQL Usage
-PGO uses the psql interactive terminal to execute SQL statements in your database. Statements are passed in using standard input and the filename flag (e.g. `psql -f -`).
-
-SQL statements are executed as superuser in the default maintenance database. This means you have full control to create database objects, extensions, or run any SQL statements that you might need.
-
-#### Integration with User and Database Management
-
-If you are creating users or databases, please see the [User/Database Management]({{< relref "tutorial/user-management.md" >}}) documentation. Databases created through the user management section of the spec can be referenced in your initialization sql. For example, if a database `zoo` is defined:
-
-```
-spec:
- users:
- - name: hippo
- databases:
- - "zoo"
-```
-
-You can connect to `zoo` by adding the following `psql` meta-command to your SQL:
-
-```
-\c zoo
-create table t_zoo as select s, md5(random()::text) from generate_Series(1,5) s;
-```
-
-#### Transaction support
-
-By default, `psql` commits each SQL command as it completes. To combine multiple commands into a single [transaction](https://www.postgresql.org/docs/current/tutorial-transactions.html), use the [`BEGIN`](https://www.postgresql.org/docs/current/sql-begin.html) and [`COMMIT`](https://www.postgresql.org/docs/current/sql-commit.html) commands.
-
-```
-BEGIN;
-create table t_random as select s, md5(random()::text) from generate_Series(1,5) s;
-COMMIT;
-```
-
-#### PSQL Exit Code and Database Init SQL Status
-
-The exit code from `psql` will determine when the `databaseInitSQL` status is set. When `psql` returns `0` the status will be set and SQL will not be run again. When `psql` returns with an error exit code the status will not be set. PGO will continue attempting to execute the SQL as part of its reconcile loop until `psql` returns normally. If `psql` exits with a failure, you will need to edit the file in your ConfigMap to ensure your SQL statements will lead to a successful `psql` return. The easiest way to make live changes to your ConfigMap is to use the following `kubectl edit` command:
-
-```
-kubectl -n edit configmap hippo-init-sql
-```
-
-Be sure to transfer any changes back over to your local file. Another option is to make changes in your local file and use `kubectl --dry-run` to create a template and pipe the output into `kubectl apply`:
-
-```
-kubectl create configmap hippo-init-sql --from-file=init.sql=/path/to/init.sql --dry-run=client -o yaml | kubectl apply -f -
-```
-
-{{% notice tip %}}
-If you edit your ConfigMap and your changes aren't showing up, you may be waiting for PGO to reconcile your cluster. After some time, PGO will automatically reconcile the cluster or you can trigger reconciliation by applying any change to your cluster (e.g. with `kubectl apply -k kustomize/postgres`).
-{{% /notice %}}
-
-To ensure that `psql` returns a failure exit code when your SQL commands fail, set the `ON_ERROR_STOP` [variable](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-VARIABLES) as part of your SQL file:
-
-```
-\set ON_ERROR_STOP
-\echo Any error will lead to exit code 3
-create table t_random as select s, md5(random()::text) from generate_Series(1,5) s;
-```
-
-## Troubleshooting
-
-### Changes Not Applied
-
-If your Postgres configuration settings are not present, ensure that you are using the syntax that Postgres expects.
-You can see this in the [Postgres configuration documentation](https://www.postgresql.org/docs/current/runtime-config.html).
-
-## Next Steps
-
-You've now seen how you can further customize your Postgres cluster, but what about [managing users and databases]({{< relref "./user-management.md" >}})? That's a great question that is answered in the [next section]({{< relref "./user-management.md" >}}).
diff --git a/docs/content/tutorial/delete-cluster.md b/docs/content/tutorial/delete-cluster.md
deleted file mode 100644
index e83fd65a95..0000000000
--- a/docs/content/tutorial/delete-cluster.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: "Delete a Postgres Cluster"
-date:
-draft: false
-weight: 110
----
-
-There comes a time when it is necessary to delete your cluster. If you have been [following along with the example](https://github.com/CrunchyData/postgres-operator-examples), you can delete your Postgres cluster by simply running:
-
-```
-kubectl delete -k kustomize/postgres
-```
-
-PGO will remove all of the objects associated with your cluster.
-
-With data retention, this is subject to the [retention policy of your PVC](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#reclaiming). For more information on how Kubernetes manages data retention, please refer to the [Kubernetes docs on volume reclaiming](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#reclaiming).
diff --git a/docs/content/tutorial/disaster-recovery.md b/docs/content/tutorial/disaster-recovery.md
deleted file mode 100644
index a63a0bc811..0000000000
--- a/docs/content/tutorial/disaster-recovery.md
+++ /dev/null
@@ -1,608 +0,0 @@
----
-title: "Disaster Recovery and Cloning"
-date:
-draft: false
-weight: 85
----
-
-Perhaps someone accidentally dropped the `users` table. Perhaps you want to clone your production database to a step-down environment. Perhaps you want to exercise your disaster recovery system (and it is important that you do!).
-
-Regardless of scenario, it's important to know how you can perform a "restore" operation with PGO to be able to recovery your data from a particular point in time, or clone a database for other purposes.
-
-Let's look at how we can perform different types of restore operations. First, let's understand the core restore properties on the custom resource.
-
-## Restore Properties
-
-{{% notice info %}}
-
-As of v5.0.5, PGO offers the ability to restore from an existing PostgresCluster or a remote
-cloud-based data source, such as S3, GCS, etc. For more on that, see the [Clone From Backups Stored in S3 / GCS / Azure Blob Storage](#cloud-based-data-source) section.
-
-Note that you **cannot** use both a local PostgresCluster data source and a remote cloud-based data
-source at one time; if both the `dataSource.postgresCluster` and `dataSource.pgbackrest` fields
-are filled in, the local PostgresCluster data source will take precedence.
-
-{{% /notice %}}
-
-There are several attributes on the custom resource that are important to understand as part of the restore process. All of these attributes are grouped together in the [`spec.dataSource.postgresCluster`]({{< relref "/references/crd#postgresclusterspecdatasourcepostgrescluster" >}}) section of the custom resource.
-
-Please review the table below to understand how each of these attributes work in the context of setting up a restore operation.
-
-- `spec.dataSource.postgresCluster.clusterName`: The name of the cluster that you are restoring from. This corresponds to the `metadata.name` attribute on a different `postgrescluster` custom resource.
-- `spec.dataSource.postgresCluster.clusterNamespace`: The namespace of the cluster that you are restoring from. Used when the cluster exists in a different namespace.
-- `spec.dataSource.postgresCluster.repoName`: The name of the pgBackRest repository from the `spec.dataSource.postgresCluster.clusterName` to use for the restore. Can be one of `repo1`, `repo2`, `repo3`, or `repo4`. The repository must exist in the other cluster.
-- `spec.dataSource.postgresCluster.options`: Any additional [pgBackRest restore options](https://pgbackrest.org/command.html#command-restore) or general options that PGO allows. For example, you may want to set `--process-max` to help improve performance on larger databases; but you will not be able to set`--target-action`, since that option is currently disallowed. (PGO always sets it to `promote` if a `--target` is present, and otherwise leaves it blank.)
-- `spec.dataSource.postgresCluster.resources`: Setting [resource limits and requests](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits) of the restore job can ensure that it runs efficiently.
-- `spec.dataSource.postgresCluster.affinity`: Custom [Kubernetes affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) rules constrain the restore job so that it only runs on certain nodes.
-- `spec.dataSource.postgresCluster.tolerations`: Custom [Kubernetes tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) allow the restore job to run on [tainted](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) nodes.
-
-Let's walk through some examples for how we can clone and restore our databases.
-
-## Clone a Postgres Cluster
-
-Let's create a clone of our [`hippo`]({{< relref "./create-cluster.md" >}}) cluster that we created previously. We know that our cluster is named `hippo` (based on its `metadata.name`) and that we only have a single backup repository called `repo1`.
-
-Let's call our new cluster `elephant`. We can create a clone of the `hippo` cluster using a manifest like this:
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: elephant
-spec:
- dataSource:
- postgresCluster:
- clusterName: hippo
- repoName: repo1
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-Note this section of the spec:
-
-```
-spec:
- dataSource:
- postgresCluster:
- clusterName: hippo
- repoName: repo1
-```
-
-This is the part that tells PGO to create the `elephant` cluster as an independent copy of the `hippo` cluster.
-
-The above is all you need to do to clone a Postgres cluster! PGO will work on creating a copy of your data on a new persistent volume claim (PVC) and work on initializing your cluster to spec. Easy!
-
-## Perform a Point-in-time-Recovery (PITR)
-
-Did someone drop the user table? You may want to perform a point-in-time-recovery (PITR)
-to revert your database back to a state before a change occurred. Fortunately, PGO can help you do that.
-
-You can set up a PITR using the [restore](https://pgbackrest.org/command.html#command-restore)
-command of [pgBackRest](https://www.pgbackrest.org), the backup management tool that powers
-the disaster recovery capabilities of PGO. You will need to set a few options on
-`spec.dataSource.postgresCluster.options` to perform a PITR. These options include:
-
-- `--type=time`: This tells pgBackRest to perform a PITR.
-- `--target`: Where to perform the PITR to. An example recovery target is `2021-06-09 14:15:11-04`.
- The timezone specified here as -04 for EDT. Please see the [pgBackRest documentation for other timezone options](https://pgbackrest.org/user-guide.html#pitr).
-- `--set` (optional): Choose which backup to start the PITR from.
-
-A few quick notes before we begin:
-
-- To perform a PITR, you must have a backup that finished before your PITR time.
- In other words, you can't perform a PITR back to a time where you do not have a backup!
-- All relevant WAL files must be successfully pushed for the restore to complete correctly.
-- Be sure to select the correct repository name containing the desired backup!
-
-With that in mind, let's use the `elephant` example above. Let's say we want to perform a point-in-time-recovery (PITR) to `2021-06-09 14:15:11-04`, we can use the following manifest:
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: elephant
-spec:
- dataSource:
- postgresCluster:
- clusterName: hippo
- repoName: repo1
- options:
- - --type=time
- - --target="2021-06-09 14:15:11-04"
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-The section to pay attention to is this:
-
-```
-spec:
- dataSource:
- postgresCluster:
- clusterName: hippo
- repoName: repo1
- options:
- - --type=time
- - --target="2021-06-09 14:15:11-04"
-```
-
-Notice how we put in the options to specify where to make the PITR.
-
-Using the above manifest, PGO will go ahead and create a new Postgres cluster that recovers
-its data up until `2021-06-09 14:15:11-04`. At that point, the cluster is promoted and
-you can start accessing your database from that specific point in time!
-
-## Perform an In-Place Point-in-time-Recovery (PITR)
-
-Similar to the PITR restore described above, you may want to perform a similar reversion
-back to a state before a change occurred, but without creating another PostgreSQL cluster.
-Fortunately, PGO can help you do this as well.
-
-You can set up a PITR using the [restore](https://pgbackrest.org/command.html#command-restore)
-command of [pgBackRest](https://www.pgbackrest.org), the backup management tool that powers
-the disaster recovery capabilities of PGO. You will need to set a few options on
-`spec.backups.pgbackrest.restore.options` to perform a PITR. These options include:
-
-- `--type=time`: This tells pgBackRest to perform a PITR.
-- `--target`: Where to perform the PITR to. An example recovery target is `2021-06-09 14:15:11-04`.
-- `--set` (optional): Choose which backup to start the PITR from.
-
-A few quick notes before we begin:
-
-- To perform a PITR, you must have a backup that finished before your PITR time.
- In other words, you can't perform a PITR back to a time where you do not have a backup!
-- All relevant WAL files must be successfully pushed for the restore to complete correctly.
-- Be sure to select the correct repository name containing the desired backup!
-
-To perform an in-place restore, users will first fill out the restore section of the spec as follows:
-
-```
-spec:
- backups:
- pgbackrest:
- restore:
- enabled: true
- repoName: repo1
- options:
- - --type=time
- - --target="2021-06-09 14:15:11-04"
-```
-
-And to trigger the restore, you will then annotate the PostgresCluster as follows:
-
-```
-kubectl annotate -n postgres-operator postgrescluster hippo --overwrite \
- postgres-operator.crunchydata.com/pgbackrest-restore=id1
-```
-
-And once the restore is complete, in-place restores can be disabled:
-
-```
-spec:
- backups:
- pgbackrest:
- restore:
- enabled: false
-```
-
-Notice how we put in the options to specify where to make the PITR.
-
-Using the above manifest, PGO will go ahead and re-create your Postgres cluster to recover
-its data up until `2021-06-09 14:15:11-04`. At that point, the cluster is promoted and
-you can start accessing your database from that specific point in time!
-
-## Restore Individual Databases
-
-You might need to restore specific databases from a cluster backup, for performance reasons
-or to move selected databases to a machine that does not have enough space to restore the
-entire cluster backup.
-
-{{% notice warning %}}
-pgBackRest supports this case, but it is important to make sure this is what you want.
-Restoring in this manner will restore the requested database from backup and make it
-accessible, but all of the other databases in the backup will NOT be accessible after restore.
-
-For example, if your backup includes databases `test1`, `test2`, and `test3`, and you request that
-`test2` be restored, the `test1` and `test3` databases will NOT be accessible after restore is completed.
-Please review the pgBackRest documentation on the
-[limitations on restoring individual databases](https://pgbackrest.org/user-guide.html#restore/option-db-include).
-{{% /notice %}}
-
-You can restore individual databases from a backup using a spec similar to the following:
-
-```yaml
-spec:
- backups:
- pgbackrest:
- restore:
- enabled: true
- repoName: repo1
- options:
- - --db-include=hippo
-```
-
-where `--db-include=hippo` would restore only the contents of the `hippo` database.
-
-
-## Standby Cluster
-
-Advanced high-availability and disaster recovery strategies involve spreading your database clusters
-across data centers to help maximize uptime. PGO provides ways to deploy postgresclusters that can
-span multiple Kubernetes clusters using an external storage system or PostgreSQL streaming replication.
-The [disaster recovery architecture]({{< relref "architecture/disaster-recovery.md" >}}) documentation
-provides a high-level overview of standby clusters with PGO can be found in the [disaster recovery
-architecture] documentation.
-
-### Creating a standby Cluster
-
-This tutorial section will describe how to create three different types of standby clusters, one
-using an external storage system, one that is streaming data directly from the primary, and one that
-takes advantage of both external storage and streaming. These example clusters can be created in the
-same Kubernetes cluster, using a single PGO instance, or spread across different Kubernetes clusters
-and PGO instances with the correct storage and networking configurations.
-
-#### Repo-based Standby
-
-A repo-based standby will recover from WAL files a pgBackRest repo stored in external storage. The
-primary cluster should be created with a cloud-based [backup configuration]({{< relref "tutorial/backups.md" >}}).
-The following manifest defines a Postgrescluster with `standby.enabled` set to true and `repoName`
-configured to point to the `s3` repo configured in the primary:
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo-standby
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - dataVolumeClaimSpec: { accessModes: [ReadWriteOnce], resources: { requests: { storage: 1Gi } } }
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- s3:
- bucket: "my-bucket"
- endpoint: "s3.ca-central-1.amazonaws.com"
- region: "ca-central-1"
- standby:
- enabled: true
- repoName: repo1
-```
-
-#### Streaming Standby
-
-A streaming standby relies on an authenticated connection to the primary over the network. The primary
-cluster should be accessible via the network and allow TLS authentication (TLS is enabled by default).
-In the following manifest, we have `standby.enabled` set to `true` and have provided both the `host`
-and `port` that point to the primary cluster. We have also defined `customTLSSecret` and
-`customReplicationTLSSecret` to provide certs that allow the standby to authenticate to the primary.
-For this type of standby, you must use [custom TLS]({{< relref "tutorial/customize-cluster.md" >}}#customize-tls):
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo-standby
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - dataVolumeClaimSpec: { accessModes: [ReadWriteOnce], resources: { requests: { storage: 1Gi } } }
- backups:
- pgbackrest:
- repos:
- - name: repo1
- volume:
- volumeClaimSpec: { accessModes: [ReadWriteOnce], resources: { requests: { storage: 1Gi } } }
- customTLSSecret:
- name: cluster-cert
- customReplicationTLSSecret:
- name: replication-cert
- standby:
- enabled: true
- host: "192.0.2.2"
- port: 5432
-```
-
-#### Streaming Standby with an External Repo
-
-Another option is to create a standby cluster using an external pgBackRest repo that streams from the
-primary. With this setup, the standby cluster will continue recovering from the pgBackRest repo if
-streaming replication falls behind. In this manifest, we have enabled the settings from both previous
-examples:
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo-standby
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - dataVolumeClaimSpec: { accessModes: [ReadWriteOnce], resources: { requests: { storage: 1Gi } } }
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- s3:
- bucket: "my-bucket"
- endpoint: "s3.ca-central-1.amazonaws.com"
- region: "ca-central-1"
- customTLSSecret:
- name: cluster-cert
- customReplicationTLSSecret:
- name: replication-cert
- standby:
- enabled: true
- repoName: repo1
- host: "192.0.2.2"
- port: 5432
-```
-
-## Promoting a Standby Cluster
-
-At some point, you will want to promote the standby to start accepting both reads and writes.
-This has the net effect of pushing WAL (transaction archives) to the pgBackRest repository, so we
-need to ensure we don't accidentally create a split-brain scenario. Split-brain can happen if two
-primary instances attempt to write to the same repository. If the primary cluster is still active,
-make sure you [shutdown]({{< relref "tutorial/administrative-tasks.md" >}}#shutdown) the primary
-before trying to promote the standby cluster.
-
-Once the primary is inactive, we can promote the standby cluster by removing or disabling its
-`spec.standby` section:
-
-```
-spec:
- standby:
- enabled: false
-```
-
-This change triggers the promotion of the standby leader to a primary PostgreSQL
-instance and the cluster begins accepting writes.
-
-## Clone From Backups Stored in S3 / GCS / Azure Blob Storage {#cloud-based-data-source}
-
-You can clone a Postgres cluster from backups that are stored in AWS S3 (or a storage system
-that uses the S3 protocol), GCS, or Azure Blob Storage without needing an active Postgres cluster!
-The method to do so is similar to how you clone from an existing PostgresCluster. This is useful
-if you want to have a data set for people to use but keep it compressed on cheaper storage.
-
-For the purposes of this example, let's say that you created a Postgres cluster named `hippo` that
-has its backups stored in S3 that looks similar to this:
-
-```yaml
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- configuration:
- - secret:
- name: pgo-s3-creds
- global:
- repo1-path: /pgbackrest/postgres-operator/hippo/repo1
- manual:
- repoName: repo1
- options:
- - --type=full
- repos:
- - name: repo1
- s3:
- bucket: "my-bucket"
- endpoint: "s3.ca-central-1.amazonaws.com"
- region: "ca-central-1"
-```
-
-Ensure that the credentials in `pgo-s3-creds` match your S3 credentials. For more details on
-[deploying a Postgres cluster using S3 for backups]({{< relref "./backups.md" >}}#using-s3),
-please see the [Backups]({{< relref "./backups.md" >}}#using-s3) section of the tutorial.
-
-For optimal performance when creating a new cluster from an active cluster, ensure that you take a
-recent full backup of the previous cluster. The above manifest is set up to take a full backup.
-Assuming `hippo` is created in the `postgres-operator` namespace, you can trigger a full backup
-with the following command:
-
-```shell
-kubectl annotate -n postgres-operator postgrescluster hippo --overwrite \
- postgres-operator.crunchydata.com/pgbackrest-backup="$( date '+%F_%H:%M:%S' )"
-```
-
-Wait for the backup to complete. Once this is done, you can delete the Postgres cluster.
-
-Now, let's clone the data from the `hippo` backup into a new cluster called `elephant`. You can use a manifest similar to this:
-
-```yaml
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: elephant
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- dataSource:
- pgbackrest:
- stanza: db
- configuration:
- - secret:
- name: pgo-s3-creds
- global:
- repo1-path: /pgbackrest/postgres-operator/hippo/repo1
- repo:
- name: repo1
- s3:
- bucket: "my-bucket"
- endpoint: "s3.ca-central-1.amazonaws.com"
- region: "ca-central-1"
- instances:
- - dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- configuration:
- - secret:
- name: pgo-s3-creds
- global:
- repo1-path: /pgbackrest/postgres-operator/elephant/repo1
- repos:
- - name: repo1
- s3:
- bucket: "my-bucket"
- endpoint: "s3.ca-central-1.amazonaws.com"
- region: "ca-central-1"
-```
-
-There are a few things to note in this manifest. First, note that the `spec.dataSource.pgbackrest`
-object in our new PostgresCluster is very similar but slightly different from the old
-PostgresCluster's `spec.backups.pgbackrest` object. The key differences are:
-
-1. No image is necessary when restoring from a cloud-based data source
-2. `stanza` is a required field when restoring from a cloud-based data source
-3. `backups.pgbackrest` has a `repos` field, which is an array
-4. `dataSource.pgbackrest` has a `repo` field, which is a single object
-
-Note also the similarities:
-
-1. We are reusing the secret for both (because the new restore pod needs to have the same credentials as the original backup pod)
-2. The `repo` object is the same
-3. The `global` object is the same
-
-This is because the new restore pod for the `elephant` PostgresCluster will need to reuse the
-configuration and credentials that were originally used in setting up the `hippo` PostgresCluster.
-
-In this example, we are creating a new cluster which is also backing up to the same S3 bucket;
-only the `spec.backups.pgbackrest.global` field has changed to point to a different path. This
-will ensure that the new `elephant` cluster will be pre-populated with the data from `hippo`'s
-backups, but will backup to its own folders, ensuring that the original backup repository is
-appropriately preserved.
-
-Deploy this manifest to create the `elephant` Postgres cluster. Observe that it comes up and running:
-
-```
-kubectl -n postgres-operator describe postgrescluster elephant
-```
-
-When it is ready, you will see that the number of expected instances matches the number of ready
-instances, e.g.:
-
-```
-Instances:
- Name: 00
- Ready Replicas: 1
- Replicas: 1
- Updated Replicas: 1
-```
-
-The previous example shows how to use an existing S3 repository to pre-populate a PostgresCluster
-while using a new S3 repository for backing up. But PostgresClusters that use cloud-based data
-sources can also use local repositories.
-
-For example, assuming a PostgresCluster called `rhino` that was meant to pre-populate from the
-original `hippo` PostgresCluster, the manifest would look like this:
-
-```yaml
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: rhino
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- dataSource:
- pgbackrest:
- stanza: db
- configuration:
- - secret:
- name: pgo-s3-creds
- global:
- repo1-path: /pgbackrest/postgres-operator/hippo/repo1
- repo:
- name: repo1
- s3:
- bucket: "my-bucket"
- endpoint: "s3.ca-central-1.amazonaws.com"
- region: "ca-central-1"
- instances:
- - dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-
-```
-
-## Next Steps
-
-Now we've seen how to clone a cluster and perform a point-in-time-recovery, let's see how we can [monitor]({{< relref "./monitoring.md" >}}) our Postgres cluster to detect and prevent issues from occurring.
diff --git a/docs/content/tutorial/getting-started.md b/docs/content/tutorial/getting-started.md
deleted file mode 100644
index 3ca180f110..0000000000
--- a/docs/content/tutorial/getting-started.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: "Getting Started"
-date:
-draft: false
-weight: 10
----
-
-If you have not done so, please install PGO by following the [quickstart]({{< relref "quickstart/_index.md" >}}#installation).
-
-As part of the installation, please be sure that you have done the following:
-
-1. [Forked the Postgres Operator examples repository](https://github.com/CrunchyData/postgres-operator-examples/fork) and cloned it to your host machine.
-1. Installed PGO to the `postgres-operator` namespace. If you are inside your `postgres-operator-examples` directory, you can run the `kubectl apply --server-side -k kustomize/install/default` command.
-
-Note if you are using this guide in conjunction with images from the [Crunchy Data Customer Portal](https://access.crunchydata.com), please follow the [private registries]({{< relref "guides/private-registries.md" >}}) guide for additional setup instructions.
-
-Throughout this tutorial, we will be building on the example provided in the `kustomize/postgres`.
-
-When referring to a nested object within a YAML manifest, we will be using the `.` format similar to `kubectl explain`. For example, if we want to refer to the deepest element in this yaml file:
-
-```
-spec:
- hippos:
- appetite: huge
-```
-
-we would say `spec.hippos.appetite`.
-
-`kubectl explain` is your friend. You can use `kubectl explain postgrescluster` to introspect the `postgrescluster.postgres-operator.crunchydata.com` custom resource definition. You can also review the [CRD reference]({{< relref "references/crd.md" >}}).
-
-With PGO, the Postgres Operator installed, let's go and [create a Postgres cluster]({{< relref "./create-cluster.md" >}})!
diff --git a/docs/content/tutorial/high-availability.md b/docs/content/tutorial/high-availability.md
deleted file mode 100644
index e25467e875..0000000000
--- a/docs/content/tutorial/high-availability.md
+++ /dev/null
@@ -1,545 +0,0 @@
----
-title: "High Availability"
-date:
-draft: false
-weight: 40
----
-
-Postgres is known for its reliability: it is very stable and typically "just works." However, there are many things that can happen in a distributed environment like Kubernetes that can affect Postgres uptime, including:
-
-- The database storage disk fails or some other hardware failure occurs
-- The network on which the database resides becomes unreachable
-- The host operating system becomes unstable and crashes
-- A key database file becomes corrupted
-- A data center is lost
-- A Kubernetes component (e.g. a Service) is accidentally deleted
-
-There may also be downtime events that are due to the normal case of operations, such as performing a minor upgrade, security patching of operating system, hardware upgrade, or other maintenance.
-
-The good news: PGO is prepared for this, and your Postgres cluster is protected from many of these scenarios. However, to maximize your high availability (HA), let's first scale up your Postgres cluster.
-
-## HA Postgres: Adding Replicas to your Postgres Cluster
-
-PGO provides several ways to add replicas to make a HA cluster:
-
-- Increase the `spec.instances.replicas` value
-- Add an additional entry in `spec.instances`
-
-For the purposes of this tutorial, we will go with the first method and set `spec.instances.replicas` to `2`. Your manifest should look similar to:
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - name: instance1
- replicas: 2
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-Apply these updates to your Postgres cluster with the following command:
-
-```
-kubectl apply -k kustomize/postgres
-```
-
-Within moment, you should see a new Postgres instance initializing! You can see all of your Postgres Pods for the `hippo` cluster by running the following command:
-
-```
-kubectl -n postgres-operator get pods \
- --selector=postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/instance-set
-```
-
-Let's test our high availability set up.
-
-## Testing Your HA Cluster
-
-An important part of building a resilient Postgres environment is testing its resiliency, so let's run a few tests to see how PGO performs under pressure!
-
-### Test #1: Remove a Service
-
-Let's try removing the primary Service that our application is connected to. This test does not actually require a HA Postgres cluster, but it will demonstrate PGO's ability to react to environmental changes and heal things to ensure your applications can stay up.
-
-Recall in the [connecting a Postgres cluster]({{< relref "./connect-cluster.md" >}}) that we observed the Services that PGO creates, e.g.:
-
-```
-kubectl -n postgres-operator get svc \
- --selector=postgres-operator.crunchydata.com/cluster=hippo
-```
-
-yields something similar to:
-
-```
-NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
-hippo-ha ClusterIP 10.103.73.92 5432/TCP 4h8m
-hippo-ha-config ClusterIP None 4h8m
-hippo-pods ClusterIP None 4h8m
-hippo-primary ClusterIP None 5432/TCP 4h8m
-hippo-replicas ClusterIP 10.98.110.215 5432/TCP 4h8m
-```
-
-We also mentioned that the application is connected to the `hippo-primary` Service. What happens if we were to delete this Service?
-
-```
-kubectl -n postgres-operator delete svc hippo-primary
-```
-
-This would seem like it could create a downtime scenario, but run the above selector again:
-
-```
-kubectl -n postgres-operator get svc \
- --selector=postgres-operator.crunchydata.com/cluster=hippo
-```
-
-You should see something similar to:
-
-```
-NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
-hippo-ha ClusterIP 10.103.73.92 5432/TCP 4h8m
-hippo-ha-config ClusterIP None 4h8m
-hippo-pods ClusterIP None 4h8m
-hippo-primary ClusterIP None 5432/TCP 3s
-hippo-replicas ClusterIP 10.98.110.215 5432/TCP 4h8m
-```
-
-Wow -- PGO detected that the primary Service was deleted and it recreated it! Based on how your application connects to Postgres, it may not have even noticed that this event took place!
-
-Now let's try a more extreme downtime event.
-
-### Test #2: Remove the Primary StatefulSet
-
-[StatefulSets](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) are a Kubernetes object that provide helpful mechanisms for managing Pods that interface with stateful applications, such as databases. They provide a stable mechanism for managing Pods to help ensure data is retrievable in a predictable way.
-
-What happens if we remove the StatefulSet that is pointed to the Pod that represents the Postgres primary? First, let's determine which Pod is the primary. We'll store it in an environmental variable for convenience.
-
-```
-PRIMARY_POD=$(kubectl -n postgres-operator get pods \
- --selector=postgres-operator.crunchydata.com/role=master \
- -o jsonpath='{.items[*].metadata.labels.postgres-operator\.crunchydata\.com/instance}')
-```
-
-Inspect the environmental variable to see which Pod is the current primary:
-
-```
-echo $PRIMARY_POD
-```
-
-should yield something similar to:
-
-```
-hippo-instance1-zj5s
-```
-
-We can use the value above to delete the StatefulSet associated with the current Postgres primary instance:
-
-```
-kubectl delete sts -n postgres-operator "${PRIMARY_POD}"
-```
-
-Let's see what happens. Try getting all of the StatefulSets for the Postgres instances in the `hippo` cluster:
-
-```
-kubectl get sts -n postgres-operator \
- --selector=postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/instance
-```
-
-You should see something similar to:
-
-```
-NAME READY AGE
-hippo-instance1-6kbw 1/1 15m
-hippo-instance1-zj5s 0/1 1s
-```
-
-PGO recreated the StatefulSet that was deleted! After this "catastrophic" event, PGO proceeds to heal the Postgres instance so it can rejoin the cluster. We cover the high availability process in greater depth later in the documentation.
-
-What about the other instance? We can see that it became the new primary though the following command:
-
-```
-kubectl -n postgres-operator get pods \
- --selector=postgres-operator.crunchydata.com/role=master \
- -o jsonpath='{.items[*].metadata.labels.postgres-operator\.crunchydata\.com/instance}'
-```
-
-which should yield something similar to:
-
-```
-hippo-instance1-6kbw
-```
-
-You can test that the failover successfully occurred in a few ways. You can connect to the example Keycloak application that we [deployed in the previous section]({{< relref "./connect-cluster.md" >}}). Based on Keycloak's connection retry logic, you may need to wait a moment for it to reconnect, but you will see it connected and resume being able to read and write data. You can also connect to the Postgres instance directly and execute the following command:
-
-```
-SELECT NOT pg_catalog.pg_is_in_recovery() is_primary;
-```
-
-If it returns `true` (or `t`), then the Postgres instance is a primary!
-
-What if PGO was down during the downtime event? Failover would still occur: the Postgres HA system works independently of PGO and can maintain its own uptime. PGO will still need to assist with some of the healing aspects, but your application will still maintain read/write connectivity to your Postgres cluster!
-
-## Synchronous Replication
-
-PostgreSQL supports synchronous replication, which is a replication mode designed to limit the risk of transaction loss. Synchronous replication waits for a transaction to be written to at least one additional server before it considers the transaction to be committed. For more information on synchronous replication, please read about PGO's [high availability architecture]({{}}#synchronous-replication-guarding-against-transactions-loss)
-
-To add synchronous replication to your Postgres cluster, you can add the following to your spec:
-
-```yaml
-spec:
- patroni:
- dynamicConfiguration:
- synchronous_mode: true
-```
-
-While PostgreSQL defaults [`synchronous_commit`](https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT) to `on`, you may also want to explicitly set it, in which case the above block becomes:
-
-```yaml
-spec:
- patroni:
- dynamicConfiguration:
- synchronous_mode: true
- postgresql:
- parameters:
- synchronous_commit: "on"
-```
-
-Note that Patroni, which manages many aspects of the cluster's availability, will favor availability over synchronicity. This means that if a synchronous replica goes down, Patroni will allow for asynchronous replication to continue as well as writes to the primary. However, if you want to disable all writing if there are no synchronous replicas available, you would have to enable `synchronous_mode_strict`, i.e.:
-
-```yaml
-spec:
- patroni:
- dynamicConfiguration:
- synchronous_mode: true
- synchronous_mode_strict: true
-```
-
-## Affinity
-
-[Kubernetes affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) rules, which include Pod anti-affinity and Node affinity, can help you to define where you want your workloads to reside. Pod anti-affinity is important for high availability: when used correctly, it ensures that your Postgres instances are distributed amongst different Nodes. Node affinity can be used to assign instances to specific Nodes, e.g. to utilize hardware that's optimized for databases.
-
-### Understanding Pod Labels
-
-PGO sets up several labels for Postgres cluster management that can be used for Pod anti-affinity or affinity rules in general. These include:
-
-- `postgres-operator.crunchydata.com/cluster`: This is assigned to all managed Pods in a Postgres cluster. The value of this label is the name of your Postgres cluster, in this case: `hippo`.
-- `postgres-operator.crunchydata.com/instance-set`: This is assigned to all Postgres instances within a group of `spec.instances`. In the example above, the value of this label is `instance1`. If you do not assign a label, the value is automatically set by PGO using a `NN` format, e.g. `00`.
-- `postgres-operator.crunchydata.com/instance`: This is a unique label assigned to each Postgres instance containing the name of the Postgres instance.
-
-Let's look at how we can set up affinity rules for our Postgres cluster to help improve high availability.
-
-### Pod Anti-affinity
-
-Kubernetes has two types of Pod anti-affinity:
-
-- Preferred: With preferred (`preferredDuringSchedulingIgnoredDuringExecution`) Pod anti-affinity, Kubernetes will make a best effort to schedule Pods matching the anti-affinity rules to different Nodes. However, if it is not possible to do so, then Kubernetes may schedule one or more Pods to the same Node.
-- Required: With required (`requiredDuringSchedulingIgnoredDuringExecution`) Pod anti-affinity, Kubernetes mandates that each Pod matching the anti-affinity rules **must** be scheduled to different Nodes. However, a Pod may not be scheduled if Kubernetes cannot find a Node that does not contain a Pod matching the rules.
-
-There is a trade-off with these two types of pod anti-affinity: while "required" anti-affinity will ensure that all the matching Pods are scheduled on different Nodes, if Kubernetes cannot find an available Node, your Postgres instance may not be scheduled. Likewise, while "preferred" anti-affinity will make a best effort to scheduled your Pods on different Nodes, Kubernetes may compromise and schedule more than one Postgres instance of the same cluster on the same Node.
-
-By understanding these trade-offs, the makeup of your Kubernetes cluster, and your requirements, you can choose the method that makes the most sense for your Postgres deployment. We'll show examples of both methods below!
-
-#### Using Preferred Pod Anti-Affinity
-
-First, let's deploy our Postgres cluster with preferred Pod anti-affinity. Note that if you have a single-node Kubernetes cluster, you will not see your Postgres instances deployed to different nodes. However, your Postgres instances _will_ be deployed.
-
-We can set up our HA Postgres cluster with preferred Pod anti-affinity like so:
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - name: instance1
- replicas: 2
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- affinity:
- podAntiAffinity:
- preferredDuringSchedulingIgnoredDuringExecution:
- - weight: 1
- podAffinityTerm:
- topologyKey: kubernetes.io/hostname
- labelSelector:
- matchLabels:
- postgres-operator.crunchydata.com/cluster: hippo
- postgres-operator.crunchydata.com/instance-set: instance1
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-Apply those changes in your Kubernetes cluster.
-
-Let's take a closer look at this section:
-
-```
-affinity:
- podAntiAffinity:
- preferredDuringSchedulingIgnoredDuringExecution:
- - weight: 1
- podAffinityTerm:
- topologyKey: kubernetes.io/hostname
- labelSelector:
- matchLabels:
- postgres-operator.crunchydata.com/cluster: hippo
- postgres-operator.crunchydata.com/instance-set: instance1
-```
-
-`spec.instances.affinity.podAntiAffinity` follows the standard Kubernetes [Pod anti-affinity spec](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/). The values for the `matchLabels` are derived from what we described in the previous section: `postgres-operator.crunchydata.com/cluster` is set to our cluster name of `hippo`, and `postgres-operator.crunchydata.com/instance-set` is set to the instance set name of `instance1`. We choose a `topologyKey` of `kubernetes.io/hostname`, which is standard in Kubernetes clusters.
-
-Preferred Pod anti-affinity will perform a best effort to schedule your Postgres Pods to different nodes. Let's see how you can require your Postgres Pods to be scheduled to different nodes.
-
-#### Using Required Pod Anti-Affinity
-
-Required Pod anti-affinity forces Kubernetes to scheduled your Postgres Pods to different Nodes. Note that if Kubernetes is unable to schedule all Pods to different Nodes, some of your Postgres instances may become unavailable.
-
-Using the previous example, let's indicate to Kubernetes that we want to use required Pod anti-affinity for our Postgres clusters:
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - name: instance1
- replicas: 2
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- affinity:
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - topologyKey: kubernetes.io/hostname
- labelSelector:
- matchLabels:
- postgres-operator.crunchydata.com/cluster: hippo
- postgres-operator.crunchydata.com/instance-set: instance1
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-Apply those changes in your Kubernetes cluster.
-
-If you are in a single Node Kubernetes clusters, you will notice that not all of your Postgres instance Pods will be scheduled. This is due to the `requiredDuringSchedulingIgnoredDuringExecution` preference. However, if you have enough Nodes available, you will see the Postgres instance Pods scheduled to different Nodes:
-
-```
-kubectl get pods -n postgres-operator -o wide \
- --selector=postgres-operator.crunchydata.com/cluster=hippo,postgres-operator.crunchydata.com/instance
-```
-
-### Node Affinity
-
-Node affinity can be used to assign your Postgres instances to Nodes with specific hardware or to guarantee a Postgres instance resides in a specific zone. Node affinity can be set within the `spec.instances.affinity.nodeAffinity` attribute, following the standard Kubernetes [node affinity spec](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/).
-
-Let's see an example with required Node affinity. Let's say we have a set of Nodes that are reserved for database usage that have a label `workload-role=db`. We can create a Postgres cluster with a required Node affinity rule to scheduled all of the databases to those Nodes using the following configuration:
-
-```
-apiVersion: postgres-operator.crunchydata.com/v1beta1
-kind: PostgresCluster
-metadata:
- name: hippo
-spec:
- image: {{< param imageCrunchyPostgres >}}
- postgresVersion: {{< param postgresVersion >}}
- instances:
- - name: instance1
- replicas: 2
- dataVolumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
- affinity:
- nodeAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- nodeSelectorTerms:
- - matchExpressions:
- - key: workload-role
- operator: In
- values:
- - db
- backups:
- pgbackrest:
- image: {{< param imageCrunchyPGBackrest >}}
- repos:
- - name: repo1
- volume:
- volumeClaimSpec:
- accessModes:
- - "ReadWriteOnce"
- resources:
- requests:
- storage: 1Gi
-```
-
-## Pod Topology Spread Constraints
-
-In addition to affinity and anti-affinity settings, [Kubernetes Pod Topology Spread Constraints](https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/) can also help you to define where you want your workloads to reside. However, while PodAffinity allows any number of Pods to be added to a qualifying topology domain, and PodAntiAffinity allows only one Pod to be scheduled into a single topology domain, topology spread constraints allow you to distribute Pods across different topology domains with a finer level of control.
-
-### API Field Configuration
-
-The spread constraint [API fields](https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods) can be configured for instance, PgBouncer and pgBackRest repo host pods. The basic configuration is as follows:
-
-```
- topologySpreadConstraints:
- - maxSkew:
- topologyKey:
- whenUnsatisfiable:
- labelSelector: