You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by gi...@apache.org on 2026/10/02 17:39:57 UTC
(airflow-site) branch staging-publish updated: Docs updated via refs/heads/staging:2ba52149fcd4f48099a0936595947a6cb5bf5af3
This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a commit to branch staging-publish
in repository https://gitbox.apache.org/repos/asf/airflow-site.git
The following commit(s) were added to refs/heads/staging-publish by this push:
new 221eb9a701 Docs updated via refs/heads/staging:2ba52149fcd4f48099a0936595947a6cb5bf5af3
221eb9a701 is described below
commit 221eb9a701e5020f3c79b0ae9c76c27941c7a07a
Author: GitHub Actions <ac...@users.noreply.github.com>
AuthorDate: Fri Oct 2 17:39:50 2026 +0000
Docs updated via refs/heads/staging:2ba52149fcd4f48099a0936595947a6cb5bf5af3
---
announcements/index.html | 2 +-
blocktype/index.html | 2 +-
blocktype/testimonial/index.html | 2 +-
blocktype/use-case/index.html | 2 +-
blog/agentic-workloads-airflow-3/index.html | 8 +-
blog/ai-survey-analysis-pipelines/index.html | 8 +-
blog/airflow-1.10.10/index.html | 4 +-
blog/airflow-1.10.12/index.html | 8 +-
blog/airflow-1.10.8-1.10.9/index.html | 4 +-
blog/airflow-2.10.0/index.html | 8 +-
blog/airflow-2.2.0/index.html | 4 +-
blog/airflow-2.3.0/index.html | 4 +-
blog/airflow-2.4.0/index.html | 4 +-
blog/airflow-2.5.0/index.html | 4 +-
blog/airflow-2.6.0/index.html | 4 +-
blog/airflow-2.7.0/index.html | 4 +-
blog/airflow-2.8.0/index.html | 4 +-
blog/airflow-2.9.0/index.html | 8 +-
blog/airflow-3.1.0/index.html | 4 +-
blog/airflow-3.2.0/index.html | 8 +-
blog/airflow-3.3.0/index.html | 4 +-
blog/airflow-registry/index.html | 4 +-
blog/airflow-survey-2020/index.html | 4 +-
blog/airflow-survey-2022/index.html | 4 +-
blog/airflow-survey-2023/index.html | 4 +-
blog/airflow-survey-2024/index.html | 4 +-
blog/airflow-survey-2025/index.html | 4 +-
blog/airflow-survey/index.html | 4 +-
blog/airflow-three-point-oh-is-here/index.html | 4 +-
blog/airflow-two-point-oh-is-here/index.html | 4 +-
blog/airflow_summit_2021/index.html | 4 +-
blog/airflow_summit_2022/index.html | 4 +-
blog/airflowctl-0.1.0/index.html | 4 +-
blog/announcing-new-website/index.html | 4 +-
blog/apache-airflow-for-newcomers/index.html | 4 +-
.../index.html | 4 +-
blog/common-ai-provider/index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
blog/fab-oid-vulnerability/index.html | 4 +-
.../index.html | 4 +-
blog/index.html | 2 +-
blog/index.xml | 82 +-
blog/introducing_setup_teardown/index.html | 4 +-
.../index.html | 4 +-
blog/tags/airflow-summit/index.html | 2 +-
blog/tags/airflow-summit/index.xml | 2 +-
blog/tags/community/index.html | 2 +-
blog/tags/community/index.xml | 2 +-
blog/tags/development/index.html | 2 +-
blog/tags/development/index.xml | 2 +-
blog/tags/documentation/index.html | 2 +-
blog/tags/documentation/index.xml | 2 +-
blog/tags/release/index.html | 2 +-
blog/tags/release/index.xml | 2 +-
blog/tags/rest-api/index.html | 2 +-
blog/tags/rest-api/index.xml | 2 +-
blog/tags/survey/index.html | 2 +-
blog/tags/survey/index.xml | 2 +-
blog/tags/tutorial/index.html | 2 +-
blog/tags/tutorial/index.xml | 2 +-
blog/tags/users/index.html | 2 +-
blog/tags/users/index.xml | 2 +-
blog/tags/vulnerabilities/index.html | 2 +-
blog/tags/vulnerabilities/index.xml | 2 +-
code-of-conduct/index.html | 2 +-
community/index.html | 2 +-
community/resources/index.html | 4 +-
css/katex.min.css | 2 +-
docs/index.html | 2 +-
ecosystem/index.html | 2 +-
index.html | 2 +-
js/katex.min.js | 2 +-
.../clusterrole-rbac-v1.json | 462 +
.../clusterrolebinding-rbac-v1.json | 364 +
.../v1.32.11-standalone-strict/configmap-v1.json | 322 +
.../cronjob-batch-v1.json | 11510 ++++++++++++++++
.../deployment-apps-v1.json | 11084 +++++++++++++++
.../horizontalpodautoscaler-autoscaling-v2.json | 1841 +++
.../ingress-networking-v1.json | 665 +
.../v1.32.11-standalone-strict/job-batch-v1.json | 11273 +++++++++++++++
.../v1.32.11-standalone-strict/limitrange-v1.json | 438 +
.../networkpolicy-networking-v1.json | 884 ++
.../persistentvolumeclaim-v1.json | 717 +
k8s-schemas/v1.32.11-standalone-strict/pod-v1.json | 12450 +++++++++++++++++
.../poddisruptionbudget-policy-v1.json | 523 +
.../priorityclass-scheduling-v1.json | 320 +
.../resourcequota-v1.json | 446 +
.../v1.32.11-standalone-strict/role-rbac-v1.json | 376 +
.../rolebinding-rbac-v1.json | 364 +
.../v1.32.11-standalone-strict/secret-v1.json | 329 +
.../v1.32.11-standalone-strict/service-v1.json | 721 +
.../serviceaccount-v1.json | 394 +
.../statefulset-apps-v1.json | 11848 ++++++++++++++++
.../clusterrole-rbac-v1.json | 462 +
.../clusterrolebinding-rbac-v1.json | 364 +
.../v1.33.12-standalone-strict/configmap-v1.json | 322 +
.../cronjob-batch-v1.json | 11531 ++++++++++++++++
.../deployment-apps-v1.json | 11113 +++++++++++++++
.../horizontalpodautoscaler-autoscaling-v2.json | 1873 +++
.../ingress-networking-v1.json | 665 +
.../v1.33.12-standalone-strict/job-batch-v1.json | 11294 +++++++++++++++
.../v1.33.12-standalone-strict/limitrange-v1.json | 438 +
.../networkpolicy-networking-v1.json | 884 ++
.../persistentvolumeclaim-v1.json | 717 +
k8s-schemas/v1.33.12-standalone-strict/pod-v1.json | 12508 +++++++++++++++++
.../poddisruptionbudget-policy-v1.json | 523 +
.../priorityclass-scheduling-v1.json | 320 +
.../resourcequota-v1.json | 446 +
.../v1.33.12-standalone-strict/role-rbac-v1.json | 376 +
.../rolebinding-rbac-v1.json | 364 +
.../v1.33.12-standalone-strict/secret-v1.json | 329 +
.../v1.33.12-standalone-strict/service-v1.json | 721 +
.../serviceaccount-v1.json | 394 +
.../statefulset-apps-v1.json | 11871 ++++++++++++++++
.../clusterrole-rbac-v1.json | 462 +
.../clusterrolebinding-rbac-v1.json | 364 +
.../v1.34.11-standalone-strict/configmap-v1.json | 322 +
.../cronjob-batch-v1.json | 11865 ++++++++++++++++
.../deployment-apps-v1.json | 11447 ++++++++++++++++
.../horizontalpodautoscaler-autoscaling-v2.json | 1873 +++
.../ingress-networking-v1.json | 665 +
.../v1.34.11-standalone-strict/job-batch-v1.json | 11628 ++++++++++++++++
.../v1.34.11-standalone-strict/limitrange-v1.json | 438 +
.../networkpolicy-networking-v1.json | 884 ++
.../persistentvolumeclaim-v1.json | 717 +
k8s-schemas/v1.34.11-standalone-strict/pod-v1.json | 12892 +++++++++++++++++
.../poddisruptionbudget-policy-v1.json | 523 +
.../priorityclass-scheduling-v1.json | 320 +
.../resourcequota-v1.json | 446 +
.../v1.34.11-standalone-strict/role-rbac-v1.json | 376 +
.../rolebinding-rbac-v1.json | 364 +
.../v1.34.11-standalone-strict/secret-v1.json | 329 +
.../v1.34.11-standalone-strict/service-v1.json | 721 +
.../serviceaccount-v1.json | 394 +
.../statefulset-apps-v1.json | 12205 ++++++++++++++++
.../clusterrole-rbac-v1.json | 462 +
.../clusterrolebinding-rbac-v1.json | 364 +
.../v1.35.8-standalone-strict/configmap-v1.json | 322 +
.../cronjob-batch-v1.json | 11909 ++++++++++++++++
.../deployment-apps-v1.json | 11489 ++++++++++++++++
.../horizontalpodautoscaler-autoscaling-v2.json | 1873 +++
.../ingress-networking-v1.json | 665 +
.../v1.35.8-standalone-strict/job-batch-v1.json | 11672 ++++++++++++++++
.../v1.35.8-standalone-strict/limitrange-v1.json | 438 +
.../networkpolicy-networking-v1.json | 884 ++
.../persistentvolumeclaim-v1.json | 717 +
k8s-schemas/v1.35.8-standalone-strict/pod-v1.json | 13048 ++++++++++++++++++
.../poddisruptionbudget-policy-v1.json | 523 +
.../priorityclass-scheduling-v1.json | 320 +
.../resourcequota-v1.json | 446 +
.../v1.35.8-standalone-strict/role-rbac-v1.json | 376 +
.../rolebinding-rbac-v1.json | 364 +
.../v1.35.8-standalone-strict/secret-v1.json | 329 +
.../v1.35.8-standalone-strict/service-v1.json | 721 +
.../serviceaccount-v1.json | 394 +
.../statefulset-apps-v1.json | 12247 +++++++++++++++++
.../clusterrole-rbac-v1.json | 462 +
.../clusterrolebinding-rbac-v1.json | 366 +
.../v1.36.4-standalone-strict/configmap-v1.json | 322 +
.../cronjob-batch-v1.json | 11907 ++++++++++++++++
.../deployment-apps-v1.json | 11484 ++++++++++++++++
.../horizontalpodautoscaler-autoscaling-v2.json | 1876 +++
.../ingress-networking-v1.json | 665 +
.../v1.36.4-standalone-strict/job-batch-v1.json | 11667 ++++++++++++++++
.../v1.36.4-standalone-strict/limitrange-v1.json | 438 +
.../networkpolicy-networking-v1.json | 884 ++
.../persistentvolumeclaim-v1.json | 717 +
k8s-schemas/v1.36.4-standalone-strict/pod-v1.json | 13205 ++++++++++++++++++
.../poddisruptionbudget-policy-v1.json | 529 +
.../priorityclass-scheduling-v1.json | 317 +
.../resourcequota-v1.json | 446 +
.../v1.36.4-standalone-strict/role-rbac-v1.json | 376 +
.../rolebinding-rbac-v1.json | 366 +
.../v1.36.4-standalone-strict/secret-v1.json | 329 +
.../v1.36.4-standalone-strict/service-v1.json | 721 +
.../serviceaccount-v1.json | 394 +
.../statefulset-apps-v1.json | 12242 +++++++++++++++++
.../clusterrole-rbac-v1.json | 462 +
.../clusterrolebinding-rbac-v1.json | 366 +
.../v1.37.0-standalone-strict/configmap-v1.json | 322 +
.../cronjob-batch-v1.json | 12430 +++++++++++++++++
.../deployment-apps-v1.json | 11848 ++++++++++++++++
.../horizontalpodautoscaler-autoscaling-v2.json | 1884 +++
.../ingress-networking-v1.json | 665 +
.../v1.37.0-standalone-strict/job-batch-v1.json | 12190 ++++++++++++++++
.../v1.37.0-standalone-strict/limitrange-v1.json | 438 +
.../networkpolicy-networking-v1.json | 884 ++
.../persistentvolumeclaim-v1.json | 778 ++
k8s-schemas/v1.37.0-standalone-strict/pod-v1.json | 13736 +++++++++++++++++++
.../poddisruptionbudget-policy-v1.json | 529 +
.../priorityclass-scheduling-v1.json | 317 +
.../resourcequota-v1.json | 446 +
.../v1.37.0-standalone-strict/role-rbac-v1.json | 376 +
.../rolebinding-rbac-v1.json | 366 +
.../v1.37.0-standalone-strict/secret-v1.json | 329 +
.../v1.37.0-standalone-strict/service-v1.json | 721 +
.../serviceaccount-v1.json | 394 +
.../statefulset-apps-v1.json | 12667 +++++++++++++++++
meetups/index.html | 2 +-
privacy-notice/index.html | 2 +-
roadmap/index.html | 2 +-
search/index.html | 4 +-
sitemap.xml | 168 +-
survey/index.html | 2 +-
tags/index.html | 2 +-
tags/index.xml | 2 +-
use-cases/adjoe/index.html | 4 +-
use-cases/adobe/index.html | 4 +-
use-cases/adyen/index.html | 4 +-
use-cases/big-fish-games/index.html | 4 +-
use-cases/business_operations/index.html | 4 +-
use-cases/dish/index.html | 4 +-
use-cases/etl_analytics/index.html | 4 +-
use-cases/experity/index.html | 4 +-
use-cases/index.html | 2 +-
use-cases/infrastructure-management/index.html | 4 +-
use-cases/mlops/index.html | 4 +-
use-cases/onefootball/index.html | 4 +-
use-cases/plarium-krasnodar/index.html | 4 +-
use-cases/seniorlink/index.html | 4 +-
use-cases/sift/index.html | 4 +-
use-cases/snapp/index.html | 4 +-
use-cases/suse/index.html | 4 +-
225 files changed, 415797 insertions(+), 292 deletions(-)
diff --git a/announcements/index.html b/announcements/index.html
index f23f6303af..f0b8b5050b 100644
--- a/announcements/index.html
+++ b/announcements/index.html
@@ -45,7 +45,7 @@ August 12, 2026 We’ve just released Apache Airflow 3.3.1 🎉
July 06, 2026 We’ve just released Apache Airflow 3.3.0 🎉
📦 PyPI: https://pypi.org/project/apache-airflow/3.3.0/ 📚 Docs: https://airflow.apache.org/docs/apache-airflow/3.3.0/ 🛠 Release Notes: https://airflow.apache.org/docs/apache-airflow/3.3.0/release_notes.html 🐳 Docker Image: “docker pull apache/airflow:3.3.0” 🚏 Constraints: https://github.com/apache/airflow/tree/constraints-3.3.0">
<meta itemprop="datePublished" content="2020-08-08T05:30:20+05:30">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="6238">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blocktype/index.html b/blocktype/index.html
index ee520894d5..38ce6ac36e 100644
--- a/blocktype/index.html
+++ b/blocktype/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Blocktype">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blocktype/testimonial/index.html b/blocktype/testimonial/index.html
index c7adf38664..39e96178d1 100644
--- a/blocktype/testimonial/index.html
+++ b/blocktype/testimonial/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Testimonial">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blocktype/use-case/index.html b/blocktype/use-case/index.html
index f195ce1500..2b8325f1e2 100644
--- a/blocktype/use-case/index.html
+++ b/blocktype/use-case/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Use-Case">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/agentic-workloads-airflow-3/index.html b/blog/agentic-workloads-airflow-3/index.html
index 491f12ac4a..b763e7b3c4 100644
--- a/blog/agentic-workloads-airflow-3/index.html
+++ b/blog/agentic-workloads-airflow-3/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2026-04-15T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Tutorial">
<meta property="og:image" content="/blog/agentic-workloads-airflow-3/images/agentic-approval-dialog.png">
@@ -39,7 +39,7 @@
<meta itemprop="name" content="Agentic Workloads on Airflow: Observable, Retryable, and Auditable by Design">
<meta itemprop="description" content="How Dynamic Task Mapping and the common.ai provider turn a multi-dimensional research question into a fan-out/fan-in pipeline where every LLM call is a named, logged, independently retryable task, not a hidden step inside a reasoning loop.">
<meta itemprop="datePublished" content="2026-04-15T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="2691">
<meta itemprop="image" content="/blog/agentic-workloads-airflow-3/images/agentic-approval-dialog.png">
<meta itemprop="keywords" content="Community,Tutorial">
@@ -1215,9 +1215,9 @@ Receives the labeled result sets from all four dimensions and produces a plain-l
</footer>
- <link rel="stylesheet" href="/css/katex.min.css" integrity="sha512-Rfg9EdqjpGE1A2hfXuPwoCjeoAj6tmGYP07mO3x1JLqebk59EeWLbXw2kPBb2kK6qNB+Sn2vr/+/WPtV3zg4Tg==" crossorigin="anonymous">
+ <link rel="stylesheet" href="/css/katex.min.css" integrity="sha512-ShgGHY1DxXgJ048WLBq4a1WB85Ppw9pb59F5waDdd/mAzSuKfCg4pzrsIECClh+1IhwY3ux6e4ZEbjw15y9kGQ==" crossorigin="anonymous">
- <script defer src="/js/katex.min.js" integrity="sha512-GhPAsUUkFs/ecbt0rvbBtWH4Te4RBSq5cblJRUfSvBXPL6Q8mAAriATm+tqxrbjsDGvoQYS9q9ww4XE0Osl+MQ==" crossorigin="anonymous" ></script>
+ <script defer src="/js/katex.min.js" integrity="sha512-PMGpBvoAMUyHk238o5oDsOos5wAGWnc02JgF5lk5T5Nt2K4A2RHW0NyL1jd+IRSh0DmxcQNu0j/OhhrTDfaw0Q==" crossorigin="anonymous" ></script>
<script defer src="/js/mhchem.min.js" integrity="sha512-3ev+ZV+t8BSzoQQ3rz9+H/C0Eq+islU1W1BuSYQ+XNPvlZi96z5MlGcS7WrzVceYvYXt56+1nKQcGNVcyQwZWg==" crossorigin="anonymous" ></script>
diff --git a/blog/ai-survey-analysis-pipelines/index.html b/blog/ai-survey-analysis-pipelines/index.html
index 80c0712fd3..74aabfdbc7 100644
--- a/blog/ai-survey-analysis-pipelines/index.html
+++ b/blog/ai-survey-analysis-pipelines/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2026-04-15T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Tutorial">
<meta property="og:image" content="/images/feature-image.png">
@@ -39,7 +39,7 @@
<meta itemprop="name" content="Ask Your Survey Anything: Building AI Analysis Pipelines with Airflow 3">
<meta itemprop="description" content="A walkthrough of two natural language analysis pipelines over the 2025 Airflow Community Survey, covering an interactive human-in-the-loop version and a fully automated scheduled version, using operators from the common.ai and common.sql providers.">
<meta itemprop="datePublished" content="2026-04-15T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="1636">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Tutorial">
@@ -1247,9 +1247,9 @@ querying several dimensions in parallel and synthesizing the results with a seco
</footer>
- <link rel="stylesheet" href="/css/katex.min.css" integrity="sha512-Rfg9EdqjpGE1A2hfXuPwoCjeoAj6tmGYP07mO3x1JLqebk59EeWLbXw2kPBb2kK6qNB+Sn2vr/+/WPtV3zg4Tg==" crossorigin="anonymous">
+ <link rel="stylesheet" href="/css/katex.min.css" integrity="sha512-ShgGHY1DxXgJ048WLBq4a1WB85Ppw9pb59F5waDdd/mAzSuKfCg4pzrsIECClh+1IhwY3ux6e4ZEbjw15y9kGQ==" crossorigin="anonymous">
- <script defer src="/js/katex.min.js" integrity="sha512-GhPAsUUkFs/ecbt0rvbBtWH4Te4RBSq5cblJRUfSvBXPL6Q8mAAriATm+tqxrbjsDGvoQYS9q9ww4XE0Osl+MQ==" crossorigin="anonymous" ></script>
+ <script defer src="/js/katex.min.js" integrity="sha512-PMGpBvoAMUyHk238o5oDsOos5wAGWnc02JgF5lk5T5Nt2K4A2RHW0NyL1jd+IRSh0DmxcQNu0j/OhhrTDfaw0Q==" crossorigin="anonymous" ></script>
<script defer src="/js/mhchem.min.js" integrity="sha512-3ev+ZV+t8BSzoQQ3rz9+H/C0Eq+islU1W1BuSYQ+XNPvlZi96z5MlGcS7WrzVceYvYXt56+1nKQcGNVcyQwZWg==" crossorigin="anonymous" ></script>
diff --git a/blog/airflow-1.10.10/index.html b/blog/airflow-1.10.10/index.html
index 2ee2d74e40..d56eb216e1 100644
--- a/blog/airflow-1.10.10/index.html
+++ b/blog/airflow-1.10.10/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-04-09T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 1.10.10">
<meta itemprop="description" content="We are happy to present Apache Airflow 1.10.10">
<meta itemprop="datePublished" content="2020-04-09T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="1142">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-1.10.12/index.html b/blog/airflow-1.10.12/index.html
index 57ecd4f595..5ed65cb19f 100644
--- a/blog/airflow-1.10.12/index.html
+++ b/blog/airflow-1.10.12/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-08-25T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 1.10.12">
<meta itemprop="description" content="We are happy to present Apache Airflow 1.10.12">
<meta itemprop="datePublished" content="2020-08-25T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="910">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
@@ -965,9 +965,9 @@ William Tran, Xiaodong Deng, YI FU, Zikun Zhu, dewaldabrie, pulsar314, retornam,
</footer>
- <link rel="stylesheet" href="/css/katex.min.css" integrity="sha512-Rfg9EdqjpGE1A2hfXuPwoCjeoAj6tmGYP07mO3x1JLqebk59EeWLbXw2kPBb2kK6qNB+Sn2vr/+/WPtV3zg4Tg==" crossorigin="anonymous">
+ <link rel="stylesheet" href="/css/katex.min.css" integrity="sha512-ShgGHY1DxXgJ048WLBq4a1WB85Ppw9pb59F5waDdd/mAzSuKfCg4pzrsIECClh+1IhwY3ux6e4ZEbjw15y9kGQ==" crossorigin="anonymous">
- <script defer src="/js/katex.min.js" integrity="sha512-GhPAsUUkFs/ecbt0rvbBtWH4Te4RBSq5cblJRUfSvBXPL6Q8mAAriATm+tqxrbjsDGvoQYS9q9ww4XE0Osl+MQ==" crossorigin="anonymous" ></script>
+ <script defer src="/js/katex.min.js" integrity="sha512-PMGpBvoAMUyHk238o5oDsOos5wAGWnc02JgF5lk5T5Nt2K4A2RHW0NyL1jd+IRSh0DmxcQNu0j/OhhrTDfaw0Q==" crossorigin="anonymous" ></script>
<script defer src="/js/mhchem.min.js" integrity="sha512-3ev+ZV+t8BSzoQQ3rz9+H/C0Eq+islU1W1BuSYQ+XNPvlZi96z5MlGcS7WrzVceYvYXt56+1nKQcGNVcyQwZWg==" crossorigin="anonymous" ></script>
diff --git a/blog/airflow-1.10.8-1.10.9/index.html b/blog/airflow-1.10.8-1.10.9/index.html
index c92324373a..cb711d2c76 100644
--- a/blog/airflow-1.10.8-1.10.9/index.html
+++ b/blog/airflow-1.10.8-1.10.9/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-02-23T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 1.10.8 & 1.10.9">
<meta itemprop="description" content="We are happy to present the new 1.10.8 and 1.10.9 releases of Apache Airflow.">
<meta itemprop="datePublished" content="2020-02-23T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="437">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.10.0/index.html b/blog/airflow-2.10.0/index.html
index 1845aaf79b..6ea0ae938e 100644
--- a/blog/airflow-2.10.0/index.html
+++ b/blog/airflow-2.10.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2024-08-08T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.10.0 is here">
<meta itemprop="description" content="Apache Airflow 2.10.0 is a game-changer, with powerful Dataset improvements and the groundbreaking Hybrid Executor, set to redefine your workflow capabilities!">
<meta itemprop="datePublished" content="2024-08-08T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="1040">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
@@ -985,9 +985,9 @@ executor = 'LocalExecutor,KubernetesExecutor,my.custom.module.ExecutorClass:
</footer>
- <link rel="stylesheet" href="/css/katex.min.css" integrity="sha512-Rfg9EdqjpGE1A2hfXuPwoCjeoAj6tmGYP07mO3x1JLqebk59EeWLbXw2kPBb2kK6qNB+Sn2vr/+/WPtV3zg4Tg==" crossorigin="anonymous">
+ <link rel="stylesheet" href="/css/katex.min.css" integrity="sha512-ShgGHY1DxXgJ048WLBq4a1WB85Ppw9pb59F5waDdd/mAzSuKfCg4pzrsIECClh+1IhwY3ux6e4ZEbjw15y9kGQ==" crossorigin="anonymous">
- <script defer src="/js/katex.min.js" integrity="sha512-GhPAsUUkFs/ecbt0rvbBtWH4Te4RBSq5cblJRUfSvBXPL6Q8mAAriATm+tqxrbjsDGvoQYS9q9ww4XE0Osl+MQ==" crossorigin="anonymous" ></script>
+ <script defer src="/js/katex.min.js" integrity="sha512-PMGpBvoAMUyHk238o5oDsOos5wAGWnc02JgF5lk5T5Nt2K4A2RHW0NyL1jd+IRSh0DmxcQNu0j/OhhrTDfaw0Q==" crossorigin="anonymous" ></script>
<script defer src="/js/mhchem.min.js" integrity="sha512-3ev+ZV+t8BSzoQQ3rz9+H/C0Eq+islU1W1BuSYQ+XNPvlZi96z5MlGcS7WrzVceYvYXt56+1nKQcGNVcyQwZWg==" crossorigin="anonymous" ></script>
diff --git a/blog/airflow-2.2.0/index.html b/blog/airflow-2.2.0/index.html
index b92fdeec69..86d7c584be 100644
--- a/blog/airflow-2.2.0/index.html
+++ b/blog/airflow-2.2.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2021-10-11T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="What's new in Apache Airflow 2.2.0">
<meta itemprop="description" content="We're proud to announce that Apache Airflow 2.2.0 has been released.">
<meta itemprop="datePublished" content="2021-10-11T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="658">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.3.0/index.html b/blog/airflow-2.3.0/index.html
index c018abb88c..2789795907 100644
--- a/blog/airflow-2.3.0/index.html
+++ b/blog/airflow-2.3.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2022-04-30T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.3.0 is here">
<meta itemprop="description" content="We're proud to announce that Apache Airflow 2.3.0 has been released.">
<meta itemprop="datePublished" content="2022-04-30T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="708">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.4.0/index.html b/blog/airflow-2.4.0/index.html
index ebb5cdca60..52e8d1f1e2 100644
--- a/blog/airflow-2.4.0/index.html
+++ b/blog/airflow-2.4.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2022-09-19T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.4.0: That Data Aware Release">
<meta itemprop="description" content="We're proud to announce that Apache Airflow 2.4.0 has been released with many exciting improvements.">
<meta itemprop="datePublished" content="2022-09-19T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="849">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.5.0/index.html b/blog/airflow-2.5.0/index.html
index 87124d0c6a..9347503c8a 100644
--- a/blog/airflow-2.5.0/index.html
+++ b/blog/airflow-2.5.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2022-12-02T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.5.0: Tick-Tock">
<meta itemprop="description" content="We're proud to announce that Apache Airflow 2.5.0 has been released with many quality of life changes.">
<meta itemprop="datePublished" content="2022-12-02T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="391">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.6.0/index.html b/blog/airflow-2.6.0/index.html
index c6638759de..3d3cb709fa 100644
--- a/blog/airflow-2.6.0/index.html
+++ b/blog/airflow-2.6.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2023-04-30T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="what's new in Apache Airflow 2.6.0">
<meta itemprop="description" content="Apache Airflow 2.6.0 has been released!">
<meta itemprop="datePublished" content="2023-04-30T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="535">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.7.0/index.html b/blog/airflow-2.7.0/index.html
index 5f653216eb..d0fb6b1207 100644
--- a/blog/airflow-2.7.0/index.html
+++ b/blog/airflow-2.7.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2023-08-18T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.7.0 is here">
<meta itemprop="description" content="Apache Airflow 2.7.0 has been released!">
<meta itemprop="datePublished" content="2023-08-18T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="816">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.8.0/index.html b/blog/airflow-2.8.0/index.html
index f3ea833d87..d7224ee29b 100644
--- a/blog/airflow-2.8.0/index.html
+++ b/blog/airflow-2.8.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2023-12-15T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.8.0 is here">
<meta itemprop="description" content="Introducing Apache Airflow 2.8.0: Enhanced with New Features and Significant Improvements">
<meta itemprop="datePublished" content="2023-12-15T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="730">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.9.0/index.html b/blog/airflow-2.9.0/index.html
index beb8455fed..7b70e212ad 100644
--- a/blog/airflow-2.9.0/index.html
+++ b/blog/airflow-2.9.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2024-04-08T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.9.0: Dataset and UI Improvements">
<meta itemprop="description" content="Apache Airflow 2.9.0 is here! Lots of exciting new Dataset and UI features/improvements this time around.">
<meta itemprop="datePublished" content="2024-04-08T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="1041">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
@@ -966,9 +966,9 @@ xcom_objectstorage_compression = gzip$$</div><p>See the <a href="https://airflow
</footer>
- <link rel="stylesheet" href="/css/katex.min.css" integrity="sha512-Rfg9EdqjpGE1A2hfXuPwoCjeoAj6tmGYP07mO3x1JLqebk59EeWLbXw2kPBb2kK6qNB+Sn2vr/+/WPtV3zg4Tg==" crossorigin="anonymous">
+ <link rel="stylesheet" href="/css/katex.min.css" integrity="sha512-ShgGHY1DxXgJ048WLBq4a1WB85Ppw9pb59F5waDdd/mAzSuKfCg4pzrsIECClh+1IhwY3ux6e4ZEbjw15y9kGQ==" crossorigin="anonymous">
- <script defer src="/js/katex.min.js" integrity="sha512-GhPAsUUkFs/ecbt0rvbBtWH4Te4RBSq5cblJRUfSvBXPL6Q8mAAriATm+tqxrbjsDGvoQYS9q9ww4XE0Osl+MQ==" crossorigin="anonymous" ></script>
+ <script defer src="/js/katex.min.js" integrity="sha512-PMGpBvoAMUyHk238o5oDsOos5wAGWnc02JgF5lk5T5Nt2K4A2RHW0NyL1jd+IRSh0DmxcQNu0j/OhhrTDfaw0Q==" crossorigin="anonymous" ></script>
<script defer src="/js/mhchem.min.js" integrity="sha512-3ev+ZV+t8BSzoQQ3rz9+H/C0Eq+islU1W1BuSYQ+XNPvlZi96z5MlGcS7WrzVceYvYXt56+1nKQcGNVcyQwZWg==" crossorigin="anonymous" ></script>
diff --git a/blog/airflow-3.1.0/index.html b/blog/airflow-3.1.0/index.html
index ab3168748c..07938f7a07 100644
--- a/blog/airflow-3.1.0/index.html
+++ b/blog/airflow-3.1.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2025-09-25T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/blog/airflow-3.1.0/images/3.1.0.jpg">
<meta itemprop="name" content="Apache Airflow 3.1.0: Human-Centered Workflows">
<meta itemprop="description" content="Apache Airflow 3.1.0 introduces Human-in-the-Loop workflows, 17-language internationalization, deadline alerts, and React plugin system for data orchestration teams.">
<meta itemprop="datePublished" content="2025-09-25T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="1583">
<meta itemprop="image" content="/blog/airflow-3.1.0/images/3.1.0.jpg">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-3.2.0/index.html b/blog/airflow-3.2.0/index.html
index 1bc3424ead..7e6e21151d 100644
--- a/blog/airflow-3.2.0/index.html
+++ b/blog/airflow-3.2.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2026-04-07T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/blog/airflow-3.2.0/images/3.2.0.jpg">
<meta itemprop="name" content="Apache Airflow 3.2.0: Data-Aware Workflows at Scale">
<meta itemprop="description" content="Apache Airflow 3.2.0 introduces Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.">
<meta itemprop="datePublished" content="2026-04-07T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="1619">
<meta itemprop="image" content="/blog/airflow-3.2.0/images/3.2.0.jpg">
<meta itemprop="keywords" content="Release">
@@ -1075,9 +1075,9 @@ export AIRFLOW__CORE__MULTI_TEAM=True$$</div><h1 id="-deadline-alerts-now-with-s
</footer>
- <link rel="stylesheet" href="/css/katex.min.css" integrity="sha512-Rfg9EdqjpGE1A2hfXuPwoCjeoAj6tmGYP07mO3x1JLqebk59EeWLbXw2kPBb2kK6qNB+Sn2vr/+/WPtV3zg4Tg==" crossorigin="anonymous">
+ <link rel="stylesheet" href="/css/katex.min.css" integrity="sha512-ShgGHY1DxXgJ048WLBq4a1WB85Ppw9pb59F5waDdd/mAzSuKfCg4pzrsIECClh+1IhwY3ux6e4ZEbjw15y9kGQ==" crossorigin="anonymous">
- <script defer src="/js/katex.min.js" integrity="sha512-GhPAsUUkFs/ecbt0rvbBtWH4Te4RBSq5cblJRUfSvBXPL6Q8mAAriATm+tqxrbjsDGvoQYS9q9ww4XE0Osl+MQ==" crossorigin="anonymous" ></script>
+ <script defer src="/js/katex.min.js" integrity="sha512-PMGpBvoAMUyHk238o5oDsOos5wAGWnc02JgF5lk5T5Nt2K4A2RHW0NyL1jd+IRSh0DmxcQNu0j/OhhrTDfaw0Q==" crossorigin="anonymous" ></script>
<script defer src="/js/mhchem.min.js" integrity="sha512-3ev+ZV+t8BSzoQQ3rz9+H/C0Eq+islU1W1BuSYQ+XNPvlZi96z5MlGcS7WrzVceYvYXt56+1nKQcGNVcyQwZWg==" crossorigin="anonymous" ></script>
diff --git a/blog/airflow-3.3.0/index.html b/blog/airflow-3.3.0/index.html
index d3012df7b2..ceb9ce14fe 100644
--- a/blog/airflow-3.3.0/index.html
+++ b/blog/airflow-3.3.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2026-07-06T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/blog/airflow-3.3.0/images/3.3.0.jpg">
<meta itemprop="name" content="Apache Airflow 3.3.0: Stateful Tasks and Multi-Language Support">
<meta itemprop="description" content="Apache Airflow 3.3.0 introduces a first-class state store for tasks and assets (AIP-103), a Language Task SDK for writing tasks in Java and Go (AIP-108), a major expansion of asset partitioning, and pluggable retry policies.">
<meta itemprop="datePublished" content="2026-07-06T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="2142">
<meta itemprop="image" content="/blog/airflow-3.3.0/images/3.3.0.jpg">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-registry/index.html b/blog/airflow-registry/index.html
index ee10da7b0f..a834fa234c 100644
--- a/blog/airflow-registry/index.html
+++ b/blog/airflow-registry/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2026-03-19T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Introducing the Apache Airflow Registry">
<meta itemprop="description" content="The Apache Airflow Registry is a searchable catalog of 98 providers and 1,600+ modules — operators, hooks, sensors, triggers, and more — now live on airflow.apache.org.">
<meta itemprop="datePublished" content="2026-03-19T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="520">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community">
diff --git a/blog/airflow-survey-2020/index.html b/blog/airflow-survey-2020/index.html
index 4193215698..dc84b3b97f 100644
--- a/blog/airflow-survey-2020/index.html
+++ b/blog/airflow-survey-2020/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2021-03-09T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Survey">
<meta property="article:tag" content="Users">
@@ -40,7 +40,7 @@
<meta itemprop="name" content="Airflow Survey 2020">
<meta itemprop="description" content="We observe steady growth in number of users as well as in an amount of active contributors. So listening and understanding our community is of high importance.">
<meta itemprop="datePublished" content="2021-03-09T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="2136">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Survey,Users">
diff --git a/blog/airflow-survey-2022/index.html b/blog/airflow-survey-2022/index.html
index bbe10cef21..5fff703ff8 100644
--- a/blog/airflow-survey-2022/index.html
+++ b/blog/airflow-survey-2022/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2022-06-17T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Survey">
<meta property="article:tag" content="Users">
@@ -40,7 +40,7 @@
<meta itemprop="name" content="Airflow Survey 2022">
<meta itemprop="description" content="2021 saw rapid adoption of Airflow 2, and continued growth of the community. This annual survey helps us understand how people are using Airflow, and where we can best focus our efforts going forward.">
<meta itemprop="datePublished" content="2022-06-17T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="3866">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Survey,Users">
diff --git a/blog/airflow-survey-2023/index.html b/blog/airflow-survey-2023/index.html
index a773e76ee5..101590b6c4 100644
--- a/blog/airflow-survey-2023/index.html
+++ b/blog/airflow-survey-2023/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2023-09-21T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Survey">
<meta property="article:tag" content="Users">
@@ -40,7 +40,7 @@
<meta itemprop="name" content="Airflow Survey 2023">
<meta itemprop="description" content="Airflow 2 has seen rapid adoption, accompanied by continuous community growth. This annual survey helps us understand how people use Airflow and where we can best focus our efforts as we advance.">
<meta itemprop="datePublished" content="2023-09-21T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="3">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Survey,Users">
diff --git a/blog/airflow-survey-2024/index.html b/blog/airflow-survey-2024/index.html
index e50802ccae..d6e5db3127 100644
--- a/blog/airflow-survey-2024/index.html
+++ b/blog/airflow-survey-2024/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2025-02-27T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Survey">
<meta property="article:tag" content="Users">
@@ -40,7 +40,7 @@
<meta itemprop="name" content="Airflow Survey 2024">
<meta itemprop="description" content="With more than 5,250 responses from 116 countries, this is the largest data engineering survey to date. Conducted annually, it offers valuable insights into Airflow usage and helps guide our future efforts.">
<meta itemprop="datePublished" content="2025-02-27T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="45">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Survey,Users">
diff --git a/blog/airflow-survey-2025/index.html b/blog/airflow-survey-2025/index.html
index 745ac77814..bd35afe23f 100644
--- a/blog/airflow-survey-2025/index.html
+++ b/blog/airflow-survey-2025/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2026-01-22T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Survey">
<meta property="article:tag" content="Users">
@@ -40,7 +40,7 @@
<meta itemprop="name" content="Airflow Survey 2025">
<meta itemprop="description" content="With more than 5,818 responses from 122 countries, this is the largest data engineering survey to date. Conducted annually, the Apache Airflow Survey offers valuable insights into Airflow usage and helps guide our future efforts.">
<meta itemprop="datePublished" content="2026-01-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="45">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Survey,Users">
diff --git a/blog/airflow-survey/index.html b/blog/airflow-survey/index.html
index ea8b5a0d98..3e5d0ffe1c 100644
--- a/blog/airflow-survey/index.html
+++ b/blog/airflow-survey/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2019-12-11T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Survey">
<meta property="article:tag" content="Users">
@@ -40,7 +40,7 @@
<meta itemprop="name" content="Airflow Survey 2019">
<meta itemprop="description" content="Receiving and adjusting to our users’ feedback is a must. Let’s see who Airflow users are, how they play with it, and what they miss.">
<meta itemprop="datePublished" content="2019-12-11T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="1723">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Survey,Users">
diff --git a/blog/airflow-three-point-oh-is-here/index.html b/blog/airflow-three-point-oh-is-here/index.html
index eda96d3192..22c527c525 100644
--- a/blog/airflow-three-point-oh-is-here/index.html
+++ b/blog/airflow-three-point-oh-is-here/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2025-04-22T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow® 3 is Generally Available!">
<meta itemprop="description" content="We're proud to announce that Apache Airflow 3.0.0 has been released.">
<meta itemprop="datePublished" content="2025-04-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="2194">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-two-point-oh-is-here/index.html b/blog/airflow-two-point-oh-is-here/index.html
index afd53e66ea..7d0daf1e7a 100644
--- a/blog/airflow-two-point-oh-is-here/index.html
+++ b/blog/airflow-two-point-oh-is-here/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-12-17T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.0 is here!">
<meta itemprop="description" content="We're proud to announce that Apache Airflow 2.0.0 has been released.">
<meta itemprop="datePublished" content="2020-12-17T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="1165">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow_summit_2021/index.html b/blog/airflow_summit_2021/index.html
index 19863afeaa..0d5675a443 100644
--- a/blog/airflow_summit_2021/index.html
+++ b/blog/airflow_summit_2021/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2021-03-21T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Airflow Summit">
<meta property="og:image" content="/images/feature-image.png">
@@ -39,7 +39,7 @@
<meta itemprop="name" content="Airflow Summit 2021">
<meta itemprop="description" content="We are thrilled about Airflow Summit 2021!">
<meta itemprop="datePublished" content="2021-03-21T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="77">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Airflow Summit">
diff --git a/blog/airflow_summit_2022/index.html b/blog/airflow_summit_2022/index.html
index bc04f78275..35b6ff8142 100644
--- a/blog/airflow_summit_2022/index.html
+++ b/blog/airflow_summit_2022/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2022-05-16T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Airflow Summit">
<meta property="og:image" content="/images/feature-image.png">
@@ -39,7 +39,7 @@
<meta itemprop="name" content="Airflow Summit 2022">
<meta itemprop="description" content="Airflow Summit 2022 is here">
<meta itemprop="datePublished" content="2022-05-16T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="129">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Airflow Summit">
diff --git a/blog/airflowctl-0.1.0/index.html b/blog/airflowctl-0.1.0/index.html
index 8a77631512..0a15f397be 100644
--- a/blog/airflowctl-0.1.0/index.html
+++ b/blog/airflowctl-0.1.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2025-10-15T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/blog/airflowctl-0.1.0/airflowctl-cover.png">
<meta itemprop="name" content="Apache Airflow CTL aka airflowctl 0.1.0">
<meta itemprop="description" content="A new way of using API in Airflow. Apache Airflow CTL aka airflowctl 0.1.0 is released! Secure way to manage your Apache Airflow deployments with ease.">
<meta itemprop="datePublished" content="2025-10-15T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="898">
<meta itemprop="image" content="/images/blog/airflowctl-0.1.0/airflowctl-cover.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/announcing-new-website/index.html b/blog/announcing-new-website/index.html
index 7dd039cce7..56a51d315d 100644
--- a/blog/announcing-new-website/index.html
+++ b/blog/announcing-new-website/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2019-12-11T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="New Airflow website">
<meta itemprop="description" content="We are thrilled about our new website!">
<meta itemprop="datePublished" content="2019-12-11T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="282">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community">
diff --git a/blog/apache-airflow-for-newcomers/index.html b/blog/apache-airflow-for-newcomers/index.html
index 69ae0dad27..473f0fb753 100644
--- a/blog/apache-airflow-for-newcomers/index.html
+++ b/blog/apache-airflow-for-newcomers/index.html
@@ -32,7 +32,7 @@ Authoring Workflow in Apache Airflow. Airflow makes it easy to author workflows
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-08-17T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="og:image" content="/images/feature-image.png">
@@ -40,7 +40,7 @@ Authoring Workflow in Apache Airflow. Airflow makes it easy to author workflows
<meta itemprop="description" content="Apache Airflow is a platform to programmatically author, schedule, and monitor workflows. A workflow is a sequence of tasks that processes a set of data. You can think of workflow as the path that describes how tasks go from being undone to done. Scheduling, on the other hand, is the process of planning, controlling, and optimizing when a particular task should be done.
Authoring Workflow in Apache Airflow. Airflow makes it easy to author workflows using python scripts. A Directed Acyclic Graph (DAG) represents a workflow in Airflow. It is a collection of tasks in a way that shows each task’s relationships and dependencies. You can have as many DAGs as you want, and Airflow will execute them according to the task’s relationships and dependencies. If task B depends on the successful execution of another task A, it means Airflow will run task A and only r [...]
<meta itemprop="datePublished" content="2020-08-17T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="1070">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community">
diff --git a/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/index.html b/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/index.html
index e67dfc2025..90440cff38 100644
--- a/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/index.html
+++ b/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2019-11-22T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="ApacheCon Europe 2019 — Thoughts and Insights by Airflow Committers">
<meta itemprop="description" content="Here come some thoughts by Airflow committers and contributors from the ApacheCon Europe 2019. Get to know the ASF community!">
<meta itemprop="datePublished" content="2019-11-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="138">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community">
diff --git a/blog/common-ai-provider/index.html b/blog/common-ai-provider/index.html
index 0c2f5d7cec..920fd7a7ba 100644
--- a/blog/common-ai-provider/index.html
+++ b/blog/common-ai-provider/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2026-04-14T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/blog/common-ai-provider/images/common-ai-provider.png">
@@ -39,7 +39,7 @@
<meta itemprop="name" content="Introducing the Common AI Provider: LLM and AI Agent Support for Apache Airflow">
<meta itemprop="description" content="The Common AI Provider adds LLM and AI agent operators to Apache Airflow with 6 operators, 5 toolsets, and 20+ model providers in one package.">
<meta itemprop="datePublished" content="2026-04-14T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="1477">
<meta itemprop="image" content="/blog/common-ai-provider/images/common-ai-provider.png">
<meta itemprop="keywords" content="Community,Release">
diff --git a/blog/documenting-using-local-development-environments/index.html b/blog/documenting-using-local-development-environments/index.html
index 76264b5d60..eeed48fb83 100644
--- a/blog/documenting-using-local-development-environments/index.html
+++ b/blog/documenting-using-local-development-environments/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2019-11-22T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Development">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Documenting using local development environment">
<meta itemprop="description" content="The story behind documenting local development environment of Apache Airflow">
<meta itemprop="datePublished" content="2019-11-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="256">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Development">
diff --git a/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/index.html b/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/index.html
index f59a43d46d..ab70190a14 100644
--- a/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/index.html
+++ b/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/index.html
@@ -32,7 +32,7 @@ About Me I have been writing tech articles on medium as well as my blog for the
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2019-12-20T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Documentation">
<meta property="og:image" content="/images/feature-image.png">
@@ -40,7 +40,7 @@ About Me I have been writing tech articles on medium as well as my blog for the
<meta itemprop="description" content="I came across Google Season of Docs (GSoD) almost by accident, thanks to my extensive HackerNews and Twitter addiction. I was familiar with the Google Summer of Code but not with this program. It turns out it was the inaugural phase. I read the details, and the process felt a lot like GSoC except that this was about documentation.
About Me I have been writing tech articles on medium as well as my blog for the past 1.5 years. Blogging helps me test my understanding of the concepts as untangling the toughest of ideas in simple sentences requires a considerable time investment.">
<meta itemprop="datePublished" content="2019-12-20T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="1521">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Documentation">
diff --git a/blog/experience-with-airflow-as-an-outreachy-intern/index.html b/blog/experience-with-airflow-as-an-outreachy-intern/index.html
index b560dcd8ce..65db1c0937 100644
--- a/blog/experience-with-airflow-as-an-outreachy-intern/index.html
+++ b/blog/experience-with-airflow-as-an-outreachy-intern/index.html
@@ -32,7 +32,7 @@ Contribution Period The first thing I had to do was choose a project under an or
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-08-30T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Community">
<meta property="og:image" content="/images/feature-image.png">
@@ -40,7 +40,7 @@ Contribution Period The first thing I had to do was choose a project under an or
<meta itemprop="description" content="Outreachy is a program which organises three months paid internships with FOSS projects for people who are typically underrepresented in those projects.
Contribution Period The first thing I had to do was choose a project under an organisation. After going through all the projects I chose “Extending the REST API of Apache Airflow”, because I had a good idea of what REST API(s) are, so I thought it would be easier to get started with the contributions. The next step was to set up Airflow’s dev environment which thanks to Breeze, was a breeze. Since I had never contributed to FOSS before so this part was overwhelming but there were plenty [...]
<meta itemprop="datePublished" content="2020-08-30T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="528">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community">
diff --git a/blog/fab-oid-vulnerability/index.html b/blog/fab-oid-vulnerability/index.html
index 87988aee31..ad80557752 100644
--- a/blog/fab-oid-vulnerability/index.html
+++ b/blog/fab-oid-vulnerability/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2024-02-26T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Vulnerabilities">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Vulnerability in long deprecated OpenID authentication method in Flask AppBuilder">
<meta itemprop="description" content="Advising users who still use a long-deprecated OpenID authentication method in Flask AppBuilder to upgrade to Apache Airflow 2.8.2">
<meta itemprop="datePublished" content="2024-02-26T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="638">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Vulnerabilities">
diff --git a/blog/implementing-stable-api-for-apache-airflow/index.html b/blog/implementing-stable-api-for-apache-airflow/index.html
index 8f303a76ea..5320f923b3 100644
--- a/blog/implementing-stable-api-for-apache-airflow/index.html
+++ b/blog/implementing-stable-api-for-apache-airflow/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-07-19T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="REST API">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Implementing Stable API for Apache Airflow">
<meta itemprop="description" content="An Outreachy intern's progress report on contributing to Apache Airflow REST API.">
<meta itemprop="datePublished" content="2020-07-19T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="703">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="REST API">
diff --git a/blog/index.html b/blog/index.html
index ac09221dee..d7ef60ba08 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Blog">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/index.xml b/blog/index.xml
index f99c5ff992..4c9cb8d406 100644
--- a/blog/index.xml
+++ b/blog/index.xml
@@ -6,7 +6,7 @@
<id>https://airflow.apache.org/blog/</id>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<entry>
@@ -14,7 +14,7 @@
<link href="https://airflow.apache.org/blog/airflow-3.3.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-3.3.0/</id>
<published>2026-07-06T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>We’re proud to announce the release of <strong>Apache Airflow 3.3.0</strong>! Where 3.2 brought precision to <em>data</em> with asset partitioning, 3.3 gives your <em>tasks</em> memory and multi-language support: a first-class state store for tasks and assets, a Language Task SDK for writing task logic in Java and Go, a major expansion of asset partitioning, and pluggable retry policies.</p>
@@ -246,7 +246,7 @@
<link href="https://airflow.apache.org/blog/agentic-workloads-airflow-3/" rel="alternate"/>
<id>https://airflow.apache.org/blog/agentic-workloads-airflow-3/</id>
<published>2026-04-15T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>A question like “How does AI tool usage vary across Airflow versions?” has a natural SQL shape: one cross-tabulation, one result. A question like “What does a typical Airflow deployment look like for practitioners who are actively using AI in their workflow?” does not. It requires querying executor type, deployment method, cloud provider, and Airflow version independently, each filtered to the same respondent group, th [...]
@@ -578,7 +578,7 @@ Receives the labeled result sets from all four dimensions and produces a plain-l
<link href="https://airflow.apache.org/blog/ai-survey-analysis-pipelines/" rel="alternate"/>
<id>https://airflow.apache.org/blog/ai-survey-analysis-pipelines/</id>
<published>2026-04-15T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>The <a href="https://airflow.apache.org/survey/">2025 Airflow Community Survey</a> collected responses
@@ -942,7 +942,7 @@ querying several dimensions in parallel and synthesizing the results with a seco
<link href="https://airflow.apache.org/blog/common-ai-provider/" rel="alternate"/>
<id>https://airflow.apache.org/blog/common-ai-provider/</id>
<published>2026-04-14T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>At <a href="https://airflowsummit.org/sessions/2025/airflow-as-an-ai-agents-toolkit-unlocking-1000-integrations-with-mcp/">Airflow Summit 2025</a>, we previewed what native AI integration in Apache Airflow could look like. Today we’re shipping it.</p>
@@ -1250,7 +1250,7 @@ querying several dimensions in parallel and synthesizing the results with a seco
<link href="https://airflow.apache.org/blog/airflow-3.2.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-3.2.0/</id>
<published>2026-04-07T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>We’re proud to announce the release of <strong>Apache Airflow 3.2.0</strong>! Airflow 3.1 puts humans at the center of automated workflows. 3.2 brings that same precision to data: Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
@@ -1463,7 +1463,7 @@ export AIRFLOW__CORE__MULTI_TEAM=True
<link href="https://airflow.apache.org/blog/airflow-registry/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-registry/</id>
<published>2026-03-19T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>Today we’re launching the <strong><a href="https://airflow.apache.org/registry/">Apache Airflow Registry</a></strong> — a searchable catalog of every official Airflow provider and its modules, live at <a href="https://airflow.apache.org/registry/">airflow.apache.org/registry/</a>.</p>
@@ -1544,7 +1544,7 @@ export AIRFLOW__CORE__MULTI_TEAM=True
<link href="https://airflow.apache.org/blog/airflow-survey-2025/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-survey-2025/</id>
<published>2026-01-22T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p><img src="/blog/airflow-survey-2025/images/Airflow-Survey-2025-Results.png" alt="Airflow Survey 2025" title="airflow_survey_2025"></p>
@@ -1565,7 +1565,7 @@ export AIRFLOW__CORE__MULTI_TEAM=True
<link href="https://airflow.apache.org/blog/airflowctl-0.1.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflowctl-0.1.0/</id>
<published>2025-10-15T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>We are thrilled to announce the first major release of <strong><code>airflowctl</code> 0.1.0</strong>, the new <strong>secure, API-driven command-line interface (CLI)</strong> for Apache Airflow — built under <a href="https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-81+Enhanced+Security+in+CLI+via+Integration+of+API"><strong>AIP-81</strong></a>.</p>
@@ -1726,7 +1726,7 @@ The secure CLI foundation lays the groundwork for Airflow’s next generation. A
<link href="https://airflow.apache.org/blog/airflow-3.1.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-3.1.0/</id>
<published>2025-09-25T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>We are thrilled to announce the release of <strong>Apache Airflow 3.1.0</strong>, an update that puts humans at the center of data
@@ -1910,7 +1910,7 @@ human-centered. We can’t wait to see what you build with it!</p>
<link href="https://airflow.apache.org/blog/airflow-three-point-oh-is-here/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-three-point-oh-is-here/</id>
<published>2025-04-22T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>We announced our intent to focus on Apache Airflow 3.0® as the next big milestone for the Airflow project at the Airflow Summit in September 2024. We are delighted to announce that Airflow 3.0 is now released!</p>
@@ -2315,7 +2315,7 @@ Let’s build the future of data orchestration—together.</p>
<link href="https://airflow.apache.org/blog/airflow-survey-2024/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-survey-2024/</id>
<published>2025-02-27T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p><img src="/blog/airflow-survey-2024/images/Airflow-Survey-2024-Results-v2.png" alt="Airflow Survey 2024" title="airflow_survey_2024"></p>
@@ -2336,7 +2336,7 @@ Let’s build the future of data orchestration—together.</p>
<link href="https://airflow.apache.org/blog/airflow-2.10.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-2.10.0/</id>
<published>2024-08-08T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>I’m happy to announce that Apache Airflow 2.10.0 is now available, bringing an array of noteworthy enhancements and new features that will greatly serve our community.</p>
@@ -2459,7 +2459,7 @@ executor = 'LocalExecutor,KubernetesExecutor,my.custom.module.ExecutorClass:
<link href="https://airflow.apache.org/blog/airflow-2.9.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-2.9.0/</id>
<published>2024-04-08T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>I’m happy to announce that Apache Airflow 2.9.0 has been released! This time around we have new features for data-aware scheduling and a bunch of UI-related improvements.</p>
@@ -2580,7 +2580,7 @@ xcom_objectstorage_compression = gzip
<link href="https://airflow.apache.org/blog/fab-oid-vulnerability/" rel="alternate"/>
<id>https://airflow.apache.org/blog/fab-oid-vulnerability/</id>
<published>2024-02-26T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<h1 id="vulnerability-in-long-deprecated-openid-authentication-method-in-flask-appbuilder">Vulnerability in long deprecated OpenID authentication method in Flask AppBuilder</h1>
@@ -2666,7 +2666,7 @@ where Flask AppBuilder is also used.</p>
<link href="https://airflow.apache.org/blog/airflow-2.8.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-2.8.0/</id>
<published>2023-12-15T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>I am thrilled to announce the release of Apache Airflow 2.8.0, featuring a host of significant enhancements and new features that will greatly benefit our community.</p>
@@ -2746,7 +2746,7 @@ We care for your security, and “secure by default” is one of the thi
<link href="https://airflow.apache.org/blog/airflow-survey-2023/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-survey-2023/</id>
<published>2023-09-21T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p><img src="/blog/airflow-survey-2023/images/Astronomer_Demographics.png" alt="Demographics" title="airflow_usage">
@@ -2764,7 +2764,7 @@ We care for your security, and “secure by default” is one of the thi
<link href="https://airflow.apache.org/blog/airflow-2.7.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-2.7.0/</id>
<published>2023-08-18T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>I’m happy to announce that Apache Airflow 2.7.0 has been released! Some notable features have been added that we are excited for the community to use.</p>
@@ -2826,7 +2826,7 @@ The following providers have been moved and require certain minimum providers ve
<link href="https://airflow.apache.org/blog/introducing_setup_teardown/" rel="alternate"/>
<id>https://airflow.apache.org/blog/introducing_setup_teardown/</id>
<published>2023-08-18T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>In data pipelines, commonly we need to create infrastructure resources, like a cluster or GPU nodes in an existing cluster, before doing the actual “work” and delete them after the work is done. Airflow 2.7 adds “setup” and “teardown” tasks to better support this type of pipeline. This blog post aims to highlight the key features so you know what’s possible. For full documentation on how to use setup and teardown tasks, see the <a href="https [...]
@@ -2874,7 +2874,7 @@ The following providers have been moved and require certain minimum providers ve
<link href="https://airflow.apache.org/blog/airflow-2.6.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-2.6.0/</id>
<published>2023-04-30T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>I am excited to announce that Apache Airflow 2.6.0 has been released, bringing many minor features and improvements to the community.</p>
@@ -2933,7 +2933,7 @@ The following providers have been moved and require certain minimum providers ve
<link href="https://airflow.apache.org/blog/airflow-2.5.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-2.5.0/</id>
<published>2022-12-02T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>Apache Airflow 2.5 has just been released, barely two and a half months after 2.4!</p>
@@ -2968,7 +2968,7 @@ c. Everything runs in one process, so you can put a breakpoint in your IDE, and
<link href="https://airflow.apache.org/blog/airflow-2.4.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-2.4.0/</id>
<published>2022-09-19T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>Apache Airflow 2.4.0 contains over 650 “user-facing” commits (excluding commits to providers or chart) and over 870 total. That includes 46 new features, 39 improvements, 52 bug fixes, and several documentation changes.</p>
@@ -3072,7 +3072,7 @@ c. Everything runs in one process, so you can put a breakpoint in your IDE, and
<link href="https://airflow.apache.org/blog/airflow-survey-2022/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-survey-2022/</id>
<published>2022-06-17T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<h1 id="airflow-user-survey-2022">Airflow User Survey 2022</h1>
@@ -4762,7 +4762,7 @@ c. Everything runs in one process, so you can put a breakpoint in your IDE, and
<link href="https://airflow.apache.org/blog/airflow_summit_2022/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow_summit_2022/</id>
<published>2022-05-16T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>The biggest Airflow Event of the Year returns May 23–27! Airflow Summit 2022 will bring together the global
@@ -4786,7 +4786,7 @@ communities to watch the event and network.</p>
<link href="https://airflow.apache.org/blog/airflow-2.3.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-2.3.0/</id>
<published>2022-04-30T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>Apache Airflow 2.3.0 contains over 700 commits since 2.2.0 and includes 50 new features, 99 improvements, 85 bug fixes, and several doc changes.</p>
@@ -4887,7 +4887,7 @@ Sade’s “Smooth Operator”. Enjoy!</li>
<link href="https://airflow.apache.org/blog/airflow-2.2.0/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-2.2.0/</id>
<published>2021-10-11T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>I’m proud to announce that Apache Airflow 2.2.0 has been released. It contains over 600 commits since 2.1.4 and includes 30 new features, 84 improvements, 85 bug fixes, and many internal and doc changes.</p>
@@ -4942,7 +4942,7 @@ Sade’s “Smooth Operator”. Enjoy!</li>
<link href="https://airflow.apache.org/blog/airflow_summit_2021/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow_summit_2021/</id>
<published>2021-03-21T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<h2 id="airflow-summit-2021-is-here">Airflow Summit 2021 is here!</h2>
@@ -4963,7 +4963,7 @@ participate in its development.</p>
<link href="https://airflow.apache.org/blog/airflow-survey-2020/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-survey-2020/</id>
<published>2021-03-09T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<h1 id="apache-airflow-survey-2020">Apache Airflow Survey 2020</h1>
@@ -6287,7 +6287,7 @@ to share their experience and tools.</p>
<link href="https://airflow.apache.org/blog/airflow-two-point-oh-is-here/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-two-point-oh-is-here/</id>
<published>2020-12-17T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>I am proud to announce that Apache Airflow 2.0.0 has been released.</p>
@@ -6380,7 +6380,7 @@ Docs on <a href="http://airflow.apache.org/docs/apache-airflow-providers/package
<link href="https://airflow.apache.org/blog/experience-with-airflow-as-an-outreachy-intern/" rel="alternate"/>
<id>https://airflow.apache.org/blog/experience-with-airflow-as-an-outreachy-intern/</id>
<published>2020-08-30T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p><a href="https://www.outreachy.org/">Outreachy</a> is a program which organises three months paid internships with FOSS
@@ -6440,7 +6440,7 @@ community that has been made my summer, one to remember.</p>
<link href="https://airflow.apache.org/blog/airflow-1.10.12/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-1.10.12/</id>
<published>2020-08-25T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>Airflow 1.10.12 contains 113 commits since 1.10.11 and includes 5 new features, 23 improvements, 23 bug fixes,
@@ -6560,7 +6560,7 @@ William Tran, Xiaodong Deng, YI FU, Zikun Zhu, dewaldabrie, pulsar314, retornam,
<link href="https://airflow.apache.org/blog/apache-airflow-for-newcomers/" rel="alternate"/>
<id>https://airflow.apache.org/blog/apache-airflow-for-newcomers/</id>
<published>2020-08-17T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>Apache Airflow is a platform to programmatically author, schedule, and monitor workflows.
@@ -6672,7 +6672,7 @@ and <a href="https://github.com/turbaszek">Tomek</a> for all their support. I&rs
<link href="https://airflow.apache.org/blog/implementing-stable-api-for-apache-airflow/" rel="alternate"/>
<id>https://airflow.apache.org/blog/implementing-stable-api-for-apache-airflow/</id>
<published>2020-07-19T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>My <a href="https://outreachy.org">Outreachy internship</a> is coming to its ends which is also the best time to look back and
@@ -6757,7 +6757,7 @@ wonderful reviews. I’m grateful.</p>
<link href="https://airflow.apache.org/blog/airflow-1.10.10/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-1.10.10/</id>
<published>2020-04-09T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>Airflow 1.10.10 contains 199 commits since 1.10.9 and includes 11 new features, 43 improvements, 44 bug fixes, and several doc changes.</p>
@@ -6899,7 +6899,7 @@ objc[1873]: +[__NSPlaceholderDate initialize] may have been in progress in anoth
<link href="https://airflow.apache.org/blog/airflow-1.10.8-1.10.9/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-1.10.8-1.10.9/</id>
<published>2020-02-23T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>Airflow 1.10.8 contains 160 commits since 1.10.7 and includes 4 new features, 42 improvements, 36 bug fixes, and several doc changes.</p>
@@ -6953,7 +6953,7 @@ for 1.10.* series but would no longer be available from Airflow 2.0</p>
<link href="https://airflow.apache.org/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/" rel="alternate"/>
<id>https://airflow.apache.org/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/</id>
<published>2019-12-20T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>I came across <a href="https://developers.google.com/season-of-docs">Google Season of Docs</a> (GSoD) almost by accident, thanks to my extensive HackerNews and Twitter addiction. I was familiar with the Google Summer of Code but not with this program.
@@ -7050,7 +7050,7 @@ After a lot of trial and error, we arrived at a version with which both of us co
<link href="https://airflow.apache.org/blog/airflow-survey/" rel="alternate"/>
<id>https://airflow.apache.org/blog/airflow-survey/</id>
<published>2019-12-11T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<h1 id="apache-airflow-survey-2019">Apache Airflow Survey 2019</h1>
@@ -7852,7 +7852,7 @@ declare DAGs.</p>
<link href="https://airflow.apache.org/blog/announcing-new-website/" rel="alternate"/>
<id>https://airflow.apache.org/blog/announcing-new-website/</id>
<published>2019-12-11T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>The brand <a href="https://airflow.apache.org/">new Airflow website</a> has arrived! Those who have been following the process know that the journey to update <a href="https://airflow.readthedocs.io/en/1.10.6/">the old Airflow website</a> started at the beginning of the year.
@@ -7883,7 +7883,7 @@ and that its improved accessibility increases adoption and use of Apache Airflow
<link href="https://airflow.apache.org/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/" rel="alternate"/>
<id>https://airflow.apache.org/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/</id>
<published>2019-11-22T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<p>Is it possible to create an organization that delivers tens of projects used by millions, nearly no one is paid for doing their job, and still, it has been fruitfully carrying on for more than 20 years? Apache Software Foundation proves it is possible. For the last two decades, ASF has been crafting a model called the Apache Way—a way of organizing and leading tech open source projects. Due to this approach, which is strongly based on the “co [...]
@@ -7897,7 +7897,7 @@ and that its improved accessibility increases adoption and use of Apache Airflow
<link href="https://airflow.apache.org/blog/documenting-using-local-development-environments/" rel="alternate"/>
<id>https://airflow.apache.org/blog/documenting-using-local-development-environments/</id>
<published>2019-11-22T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<h2 id="documenting-local-development-environment-of-apache-airflow">Documenting local development environment of Apache Airflow</h2>
@@ -7935,7 +7935,7 @@ a team for 3 months.</p>
<link href="https://airflow.apache.org/blog/its-a-breeze-to-develop-apache-airflow/" rel="alternate"/>
<id>https://airflow.apache.org/blog/its-a-breeze-to-develop-apache-airflow/</id>
<published>2019-11-22T00:00:00Z</published>
- <updated>2026-09-24T11:03:06Z</updated>
+ <updated>2026-09-28T17:17:34Z</updated>
<author>
<name>Apache Airflow</name>
</author><content type="html"><![CDATA[<h2 id="the-story-behind-the-airflow-breeze-tool">The story behind the Airflow Breeze tool</h2>
diff --git a/blog/introducing_setup_teardown/index.html b/blog/introducing_setup_teardown/index.html
index 964a253f90..3e32da789e 100644
--- a/blog/introducing_setup_teardown/index.html
+++ b/blog/introducing_setup_teardown/index.html
@@ -31,13 +31,13 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2023-08-18T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Introducing Setup and Teardown tasks">
<meta itemprop="description" content="An introduction to Setup and Teardown tasks, which are new in Apache Airflow 2.7.0">
<meta itemprop="datePublished" content="2023-08-18T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="678">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/its-a-breeze-to-develop-apache-airflow/index.html b/blog/its-a-breeze-to-develop-apache-airflow/index.html
index 81801f4e90..0b98d30a51 100644
--- a/blog/its-a-breeze-to-develop-apache-airflow/index.html
+++ b/blog/its-a-breeze-to-develop-apache-airflow/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2019-11-22T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="article:tag" content="Development">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="It's a "Breeze" to develop Apache Airflow">
<meta itemprop="description" content="A Principal Software Engineer's journey to developer productivity. Learn how Jarek and his team sped up and simplified Airflow development for the community.">
<meta itemprop="datePublished" content="2019-11-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="124">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Development">
diff --git a/blog/tags/airflow-summit/index.html b/blog/tags/airflow-summit/index.html
index 18535045f2..1ee4e0c52e 100644
--- a/blog/tags/airflow-summit/index.html
+++ b/blog/tags/airflow-summit/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Airflow Summit">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2022-05-16T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/airflow-summit/index.xml b/blog/tags/airflow-summit/index.xml
index b9ac86ea5a..797986ce3b 100644
--- a/blog/tags/airflow-summit/index.xml
+++ b/blog/tags/airflow-summit/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Airflow Summit on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Thu, 24 Sep 2026 11:03:06 +0200</lastBuildDate>
+ <lastBuildDate>Mon, 28 Sep 2026 17:17:34 +0200</lastBuildDate>
<atom:link href="/blog/tags/airflow-summit/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Airflow Summit 2022</title>
diff --git a/blog/tags/community/index.html b/blog/tags/community/index.html
index bdced2a2fb..b3dc9fbc98 100644
--- a/blog/tags/community/index.html
+++ b/blog/tags/community/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Community">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2026-04-15T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/community/index.xml b/blog/tags/community/index.xml
index 921d715b55..ea7adbe575 100644
--- a/blog/tags/community/index.xml
+++ b/blog/tags/community/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Community on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Thu, 24 Sep 2026 11:03:06 +0200</lastBuildDate>
+ <lastBuildDate>Mon, 28 Sep 2026 17:17:34 +0200</lastBuildDate>
<atom:link href="/blog/tags/community/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Agentic Workloads on Airflow: Observable, Retryable, and Auditable by Design</title>
diff --git a/blog/tags/development/index.html b/blog/tags/development/index.html
index 5732b7164d..442134f9e7 100644
--- a/blog/tags/development/index.html
+++ b/blog/tags/development/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Development">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2019-11-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/development/index.xml b/blog/tags/development/index.xml
index 0a8ea31bb1..3453f4b5ab 100644
--- a/blog/tags/development/index.xml
+++ b/blog/tags/development/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Development on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Thu, 24 Sep 2026 11:03:06 +0200</lastBuildDate>
+ <lastBuildDate>Mon, 28 Sep 2026 17:17:34 +0200</lastBuildDate>
<atom:link href="/blog/tags/development/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Documenting using local development environment</title>
diff --git a/blog/tags/documentation/index.html b/blog/tags/documentation/index.html
index 54bb0476ea..db390145a6 100644
--- a/blog/tags/documentation/index.html
+++ b/blog/tags/documentation/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Documentation">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2019-12-20T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/documentation/index.xml b/blog/tags/documentation/index.xml
index 2caa5aca69..2ede0a939a 100644
--- a/blog/tags/documentation/index.xml
+++ b/blog/tags/documentation/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Documentation on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Thu, 24 Sep 2026 11:03:06 +0200</lastBuildDate>
+ <lastBuildDate>Mon, 28 Sep 2026 17:17:34 +0200</lastBuildDate>
<atom:link href="/blog/tags/documentation/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Experience in Google Season of Docs 2019 with Apache Airflow</title>
diff --git a/blog/tags/release/index.html b/blog/tags/release/index.html
index a3013c739e..b5e03d5c1c 100644
--- a/blog/tags/release/index.html
+++ b/blog/tags/release/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Release">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2026-07-06T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/release/index.xml b/blog/tags/release/index.xml
index 986eb597ba..3de84cb4f4 100644
--- a/blog/tags/release/index.xml
+++ b/blog/tags/release/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Release on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Thu, 24 Sep 2026 11:03:06 +0200</lastBuildDate>
+ <lastBuildDate>Mon, 28 Sep 2026 17:17:34 +0200</lastBuildDate>
<atom:link href="/blog/tags/release/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Apache Airflow 3.3.0: Stateful Tasks and Multi-Language Support</title>
diff --git a/blog/tags/rest-api/index.html b/blog/tags/rest-api/index.html
index 651e0b6ede..3555e99345 100644
--- a/blog/tags/rest-api/index.html
+++ b/blog/tags/rest-api/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="REST API">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2020-07-19T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/rest-api/index.xml b/blog/tags/rest-api/index.xml
index ac232d160a..29d1a1aa86 100644
--- a/blog/tags/rest-api/index.xml
+++ b/blog/tags/rest-api/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in REST API on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Thu, 24 Sep 2026 11:03:06 +0200</lastBuildDate>
+ <lastBuildDate>Mon, 28 Sep 2026 17:17:34 +0200</lastBuildDate>
<atom:link href="/blog/tags/rest-api/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Implementing Stable API for Apache Airflow</title>
diff --git a/blog/tags/survey/index.html b/blog/tags/survey/index.html
index ed9cbf1a89..4232d355ab 100644
--- a/blog/tags/survey/index.html
+++ b/blog/tags/survey/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Survey">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2026-01-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/survey/index.xml b/blog/tags/survey/index.xml
index bcee056096..7225fb6392 100644
--- a/blog/tags/survey/index.xml
+++ b/blog/tags/survey/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Survey on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Thu, 24 Sep 2026 11:03:06 +0200</lastBuildDate>
+ <lastBuildDate>Mon, 28 Sep 2026 17:17:34 +0200</lastBuildDate>
<atom:link href="/blog/tags/survey/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Airflow Survey 2025</title>
diff --git a/blog/tags/tutorial/index.html b/blog/tags/tutorial/index.html
index 4ecbae5d3f..ad7fee7f2d 100644
--- a/blog/tags/tutorial/index.html
+++ b/blog/tags/tutorial/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Tutorial">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2026-04-15T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/tutorial/index.xml b/blog/tags/tutorial/index.xml
index 58e9b449b1..d7edc80349 100644
--- a/blog/tags/tutorial/index.xml
+++ b/blog/tags/tutorial/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Tutorial on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Thu, 24 Sep 2026 11:03:06 +0200</lastBuildDate>
+ <lastBuildDate>Mon, 28 Sep 2026 17:17:34 +0200</lastBuildDate>
<atom:link href="/blog/tags/tutorial/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Agentic Workloads on Airflow: Observable, Retryable, and Auditable by Design</title>
diff --git a/blog/tags/users/index.html b/blog/tags/users/index.html
index d349119fd5..900a158135 100644
--- a/blog/tags/users/index.html
+++ b/blog/tags/users/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Users">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2026-01-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/users/index.xml b/blog/tags/users/index.xml
index 304573a60f..6f3d0881d5 100644
--- a/blog/tags/users/index.xml
+++ b/blog/tags/users/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Users on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Thu, 24 Sep 2026 11:03:06 +0200</lastBuildDate>
+ <lastBuildDate>Mon, 28 Sep 2026 17:17:34 +0200</lastBuildDate>
<atom:link href="/blog/tags/users/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Airflow Survey 2025</title>
diff --git a/blog/tags/vulnerabilities/index.html b/blog/tags/vulnerabilities/index.html
index f3e45ed6bc..2945b4c8bd 100644
--- a/blog/tags/vulnerabilities/index.html
+++ b/blog/tags/vulnerabilities/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Vulnerabilities">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2024-02-26T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/vulnerabilities/index.xml b/blog/tags/vulnerabilities/index.xml
index 97d0919df0..83b2201b04 100644
--- a/blog/tags/vulnerabilities/index.xml
+++ b/blog/tags/vulnerabilities/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Vulnerabilities on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Thu, 24 Sep 2026 11:03:06 +0200</lastBuildDate>
+ <lastBuildDate>Mon, 28 Sep 2026 17:17:34 +0200</lastBuildDate>
<atom:link href="/blog/tags/vulnerabilities/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Vulnerability in long deprecated OpenID authentication method in Flask AppBuilder</title>
diff --git a/code-of-conduct/index.html b/code-of-conduct/index.html
index 6346e294eb..961cba92ad 100644
--- a/code-of-conduct/index.html
+++ b/code-of-conduct/index.html
@@ -36,7 +36,7 @@ Airflow Slack Guidelines Airflow Slack abides by The Apache Foundation’s Code
<meta itemprop="name" content="Code of Conduct">
<meta itemprop="description" content="Community Code of Conduct All Airflow Community groups abide by The Apache Software Foundation’s (ASF) Code of Conduct . Below, please find a breakdown of how that code applies to Airflow Slack and in-person Meetups
Airflow Slack Guidelines Airflow Slack abides by The Apache Foundation’s Code of Conduct . In addition to those primary guidelines, these policies are specifically for Airflow Slack. The Airflow Slack community contains 40,000+ members and continues to grow. Because this community is run by the very practitioners who build in Airflow daily, our members feel a sense of camaraderie, ownership, and comfortability here. ">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="1576">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/community/index.html b/community/index.html
index 09d5cc2f6e..59db0c7b44 100644
--- a/community/index.html
+++ b/community/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Community">
<meta itemprop="description" content="Want to contribute? Join the Dev list The Dev list is the preferred channel for announcements, proposals and votes. Manage your subscription:">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="560">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/community/resources/index.html b/community/resources/index.html
index 3cd4eb1b1a..eae19ea994 100644
--- a/community/resources/index.html
+++ b/community/resources/index.html
@@ -30,12 +30,12 @@
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="community">
- <meta property="article:modified_time" content="2026-09-24T11:03:06+02:00">
+ <meta property="article:modified_time" content="2026-09-28T17:17:34+02:00">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow">
<meta itemprop="description" content="Promo Materials Download official Apache Airflow branding materials, including logos and banners, to accurately represent and promote the project. Airflow logos Logo SVGs (light): Horizontal, Small, Icon Logo SVGs (dark): Horizontal, Small, Icon Brandbook Drawio Diagrams Lucidchart Diagrams Promo stuff Proposed Logo Redesign">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="43">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/css/katex.min.css b/css/katex.min.css
index 68f4b228ef..056c21a21c 100644
--- a/css/katex.min.css
+++ b/css/katex.min.css
@@ -1 +1 @@
-@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) form [...]
+@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) form [...]
diff --git a/docs/index.html b/docs/index.html
index ee4c407bad..f92bd5e865 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -36,7 +36,7 @@ Apache Airflow CTL (airflowctl) Apache Airflow CTL (airflowctl) is a command-lin
<meta itemprop="name" content="Documentation">
<meta itemprop="description" content="Documentation Apache Airflow® Apache Airflow Core, which includes webserver, scheduler, CLI and other components that are needed for minimal Airflow installation. Read Apache Airflow documentation »
Apache Airflow CTL (airflowctl) Apache Airflow CTL (airflowctl) is a command-line interface (CLI) for Apache Airflow that interacts exclusively with the Airflow REST API. It provides a secure, auditable, and consistent way to manage Airflow deployments — without direct access to the metadata database. Read airflowctl documentation »">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="632">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/ecosystem/index.html b/ecosystem/index.html
index 1b2c61a38c..8567de8833 100644
--- a/ecosystem/index.html
+++ b/ecosystem/index.html
@@ -36,7 +36,7 @@ If you would you like to be included on this page, please reach out to the Apach
<meta itemprop="name" content="Ecosystem">
<meta itemprop="description" content="Ecosystem These resources and services are not maintained, nor endorsed by the Apache Airflow® Community and Apache Airflow project (maintained by the Committers and the Airflow PMC). Use them at your sole discretion. The community does not verify the licences nor validity of those tools, so it’s your responsibility to verify them.
If you would you like to be included on this page, please reach out to the Apache Airflow dev or user mailing list and let us know or simply open a Pull Request to that page.">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="wordCount" content="2519">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/index.html b/index.html
index cea518eae7..9660536a20 100644
--- a/index.html
+++ b/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Home">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-09-24T11:03:06+02:00">
+ <meta itemprop="dateModified" content="2026-09-28T17:17:34+02:00">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/js/katex.min.js b/js/katex.min.js
index 42649a7dab..4a6810d6ff 100644
--- a/js/katex.min.js
+++ b/js/katex.min.js
@@ -1 +1 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,function(){return function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return po}});c [...]
\ No newline at end of file
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,function(){return function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return go}});c [...]
\ No newline at end of file
diff --git a/k8s-schemas/v1.32.11-standalone-strict/clusterrole-rbac-v1.json b/k8s-schemas/v1.32.11-standalone-strict/clusterrole-rbac-v1.json
new file mode 100644
index 0000000000..7f3e0c7e76
--- /dev/null
+++ b/k8s-schemas/v1.32.11-standalone-strict/clusterrole-rbac-v1.json
@@ -0,0 +1,462 @@
+{
+ "description": "ClusterRole is a cluster level, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding or ClusterRoleBinding.",
+ "properties": {
+ "aggregationRule": {
+ "description": "AggregationRule describes how to locate ClusterRoles to aggregate into the ClusterRole",
+ "properties": {
+ "clusterRoleSelectors": {
+ "description": "ClusterRoleSelectors holds a list of selectors which will be used to find ClusterRoles and create the rules. If any of the selectors match, then the ClusterRole's permissions will be added",
+ "items": {
+ "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.",
+ "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",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "matchLabels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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",
+ "null"
+ ],
+ "enum": [
+ "rbac.authorization.k8s.io/v1"
+ ]
+ },
+ "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",
+ "null"
+ ],
+ "enum": [
+ "ClusterRole"
+ ]
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "properties": {
+ "annotations": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "deletionGracePeriodSeconds": {
+ "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "finalizers": {
+ "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "set",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "generateName": {
+ "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is sp [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "generation": {
+ "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "managedFields": {
+ "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.",
+ "items": {
+ "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.",
+ "properties": {
+ "apiVersion": {
+ "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldsType": {
+ "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldsV1": {
+ "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:<name>', where <name> is the name of a field in a struct, or key in a map 'v:<value>', where <value> is the exact json formatted value of a list item 'i:<index>', where <index> is posi [...]
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "manager": {
+ "description": "Manager is an identifier of the workflow managing these fields.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "operation": {
+ "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "subresource": {
+ "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "time": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "namespace": {
+ "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "ownerReferences": {
+ "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.",
+ "items": {
+ "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.",
+ "properties": {
+ "apiVersion": {
+ "description": "API version of the referent.",
+ "type": "string"
+ },
+ "blockOwnerDeletion": {
+ "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessabl [...]
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "controller": {
+ "description": "If true, this reference points to the managing controller.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
+ "type": "string"
+ }
+ },
+ "required": [
+ "apiVersion",
+ "kind",
+ "name",
+ "uid"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "uid"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "uid",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "resourceVersion": {
+ "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treate [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "selfLink": {
+ "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "rules": {
+ "description": "Rules holds all the PolicyRules for this ClusterRole",
+ "items": {
+ "description": "PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which namespace the rule applies to.",
+ "properties": {
+ "apiGroups": {
+ "description": "APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed. \"\" represents the core API group and \"*\" represents all API groups.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "nonResourceURLs": {
+ "description": "NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding. Rules can either apply to API resources (such as \"pods\" or \"secrets\") or non-resource URL paths (such as \"/api\"), but not both.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "resourceNames": {
+ "description": "ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "resources": {
+ "description": "Resources is a list of resources this rule applies to. '*' represents all resources.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "verbs": {
+ "description": "Verbs is a list of Verbs that apply to ALL the ResourceKinds contained in this rule. '*' represents all verbs.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": "array",
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "verbs"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": "object",
+ "x-kubernetes-group-version-kind": [
+ {
+ "group": "rbac.authorization.k8s.io",
+ "kind": "ClusterRole",
+ "version": "v1"
+ }
+ ],
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/schema#"
+}
\ No newline at end of file
diff --git a/k8s-schemas/v1.32.11-standalone-strict/clusterrolebinding-rbac-v1.json b/k8s-schemas/v1.32.11-standalone-strict/clusterrolebinding-rbac-v1.json
new file mode 100644
index 0000000000..c3734c3507
--- /dev/null
+++ b/k8s-schemas/v1.32.11-standalone-strict/clusterrolebinding-rbac-v1.json
@@ -0,0 +1,364 @@
+{
+ "description": "ClusterRoleBinding references a ClusterRole, but not contain it. It can reference a ClusterRole in the global namespace, and adds who information via Subject.",
+ "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",
+ "null"
+ ],
+ "enum": [
+ "rbac.authorization.k8s.io/v1"
+ ]
+ },
+ "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",
+ "null"
+ ],
+ "enum": [
+ "ClusterRoleBinding"
+ ]
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "properties": {
+ "annotations": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "deletionGracePeriodSeconds": {
+ "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "finalizers": {
+ "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "set",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "generateName": {
+ "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is sp [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "generation": {
+ "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "managedFields": {
+ "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.",
+ "items": {
+ "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.",
+ "properties": {
+ "apiVersion": {
+ "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldsType": {
+ "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldsV1": {
+ "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:<name>', where <name> is the name of a field in a struct, or key in a map 'v:<value>', where <value> is the exact json formatted value of a list item 'i:<index>', where <index> is posi [...]
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "manager": {
+ "description": "Manager is an identifier of the workflow managing these fields.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "operation": {
+ "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "subresource": {
+ "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "time": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "namespace": {
+ "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "ownerReferences": {
+ "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.",
+ "items": {
+ "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.",
+ "properties": {
+ "apiVersion": {
+ "description": "API version of the referent.",
+ "type": "string"
+ },
+ "blockOwnerDeletion": {
+ "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessabl [...]
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "controller": {
+ "description": "If true, this reference points to the managing controller.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
+ "type": "string"
+ }
+ },
+ "required": [
+ "apiVersion",
+ "kind",
+ "name",
+ "uid"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "uid"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "uid",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "resourceVersion": {
+ "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treate [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "selfLink": {
+ "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "roleRef": {
+ "description": "RoleRef contains information that points to the role being used",
+ "properties": {
+ "apiGroup": {
+ "description": "APIGroup is the group for the resource being referenced",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Kind is the type of resource being referenced",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name is the name of resource being referenced",
+ "type": "string"
+ }
+ },
+ "required": [
+ "apiGroup",
+ "kind",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "subjects": {
+ "description": "Subjects holds references to the objects the role applies to.",
+ "items": {
+ "description": "Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.",
+ "properties": {
+ "apiGroup": {
+ "description": "APIGroup holds the API group of the referenced subject. Defaults to \"\" for ServiceAccount subjects. Defaults to \"rbac.authorization.k8s.io\" for User and Group subjects.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "kind": {
+ "description": "Kind of object being referenced. Values defined by this API group are \"User\", \"Group\", and \"ServiceAccount\". If the Authorizer does not recognized the kind value, the Authorizer should report an error.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the object being referenced.",
+ "type": "string"
+ },
+ "namespace": {
+ "description": "Namespace of the referenced object. If the object kind is non-namespace, such as \"User\" or \"Group\", and this value is not empty the Authorizer should report an error.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "kind",
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "roleRef"
+ ],
+ "type": "object",
+ "x-kubernetes-group-version-kind": [
+ {
+ "group": "rbac.authorization.k8s.io",
+ "kind": "ClusterRoleBinding",
+ "version": "v1"
+ }
+ ],
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/schema#"
+}
\ No newline at end of file
diff --git a/k8s-schemas/v1.32.11-standalone-strict/configmap-v1.json b/k8s-schemas/v1.32.11-standalone-strict/configmap-v1.json
new file mode 100644
index 0000000000..fd830aaa1f
--- /dev/null
+++ b/k8s-schemas/v1.32.11-standalone-strict/configmap-v1.json
@@ -0,0 +1,322 @@
+{
+ "description": "ConfigMap holds configuration data for pods to consume.",
+ "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",
+ "null"
+ ],
+ "enum": [
+ "v1"
+ ]
+ },
+ "binaryData": {
+ "additionalProperties": {
+ "format": "byte",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "BinaryData contains the binary data. Each key must consist of alphanumeric characters, '-', '_' or '.'. BinaryData can contain byte sequences that are not in the UTF-8 range. The keys stored in BinaryData must not overlap with the ones in the Data field, this is enforced during validation process. Using this field will require 1.10+ apiserver and kubelet.",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "data": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Data contains the configuration data. Each key must consist of alphanumeric characters, '-', '_' or '.'. Values with non-UTF-8 byte sequences must use the BinaryData field. The keys stored in Data must not overlap with the keys in the BinaryData field, this is enforced during validation process.",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "immutable": {
+ "description": "Immutable, if set to true, ensures that data stored in the ConfigMap cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "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",
+ "null"
+ ],
+ "enum": [
+ "ConfigMap"
+ ]
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "properties": {
+ "annotations": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "deletionGracePeriodSeconds": {
+ "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "finalizers": {
+ "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "set",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "generateName": {
+ "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is sp [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "generation": {
+ "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "managedFields": {
+ "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.",
+ "items": {
+ "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.",
+ "properties": {
+ "apiVersion": {
+ "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldsType": {
+ "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldsV1": {
+ "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:<name>', where <name> is the name of a field in a struct, or key in a map 'v:<value>', where <value> is the exact json formatted value of a list item 'i:<index>', where <index> is posi [...]
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "manager": {
+ "description": "Manager is an identifier of the workflow managing these fields.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "operation": {
+ "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "subresource": {
+ "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "time": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "namespace": {
+ "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "ownerReferences": {
+ "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.",
+ "items": {
+ "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.",
+ "properties": {
+ "apiVersion": {
+ "description": "API version of the referent.",
+ "type": "string"
+ },
+ "blockOwnerDeletion": {
+ "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessabl [...]
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "controller": {
+ "description": "If true, this reference points to the managing controller.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
+ "type": "string"
+ }
+ },
+ "required": [
+ "apiVersion",
+ "kind",
+ "name",
+ "uid"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "uid"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "uid",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "resourceVersion": {
+ "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treate [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "selfLink": {
+ "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": "object",
+ "x-kubernetes-group-version-kind": [
+ {
+ "group": "",
+ "kind": "ConfigMap",
+ "version": "v1"
+ }
+ ],
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/schema#"
+}
\ No newline at end of file
diff --git a/k8s-schemas/v1.32.11-standalone-strict/cronjob-batch-v1.json b/k8s-schemas/v1.32.11-standalone-strict/cronjob-batch-v1.json
new file mode 100644
index 0000000000..d4348ca172
--- /dev/null
+++ b/k8s-schemas/v1.32.11-standalone-strict/cronjob-batch-v1.json
@@ -0,0 +1,11510 @@
+{
+ "description": "CronJob represents the configuration of a single cron job.",
+ "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",
+ "null"
+ ],
+ "enum": [
+ "batch/v1"
+ ]
+ },
+ "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",
+ "null"
+ ],
+ "enum": [
+ "CronJob"
+ ]
+ },
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "properties": {
+ "annotations": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "deletionGracePeriodSeconds": {
+ "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "finalizers": {
+ "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "set",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "generateName": {
+ "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is sp [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "generation": {
+ "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "managedFields": {
+ "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.",
+ "items": {
+ "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.",
+ "properties": {
+ "apiVersion": {
+ "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldsType": {
+ "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldsV1": {
+ "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:<name>', where <name> is the name of a field in a struct, or key in a map 'v:<value>', where <value> is the exact json formatted value of a list item 'i:<index>', where <index> is posi [...]
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "manager": {
+ "description": "Manager is an identifier of the workflow managing these fields.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "operation": {
+ "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "subresource": {
+ "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "time": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "namespace": {
+ "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "ownerReferences": {
+ "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.",
+ "items": {
+ "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.",
+ "properties": {
+ "apiVersion": {
+ "description": "API version of the referent.",
+ "type": "string"
+ },
+ "blockOwnerDeletion": {
+ "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessabl [...]
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "controller": {
+ "description": "If true, this reference points to the managing controller.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
+ "type": "string"
+ }
+ },
+ "required": [
+ "apiVersion",
+ "kind",
+ "name",
+ "uid"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "uid"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "uid",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "resourceVersion": {
+ "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treate [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "selfLink": {
+ "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "spec": {
+ "description": "CronJobSpec describes how the job execution will look like and when it will actually run.",
+ "properties": {
+ "concurrencyPolicy": {
+ "description": "Specifies how to treat concurrent executions of a Job. Valid values are:\n\n- \"Allow\" (default): allows CronJobs to run concurrently; - \"Forbid\": forbids concurrent runs, skipping next run if previous run hasn't finished yet; - \"Replace\": cancels currently running job and replaces it with a new one",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "failedJobsHistoryLimit": {
+ "description": "The number of failed finished jobs to retain. Value must be non-negative integer. Defaults to 1.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "jobTemplate": {
+ "description": "JobTemplateSpec describes the data a Job should have when created from a template",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "properties": {
+ "annotations": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "deletionGracePeriodSeconds": {
+ "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "finalizers": {
+ "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorde [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "set",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "generateName": {
+ "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this fie [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "generation": {
+ "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "managedFields": {
+ "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.",
+ "items": {
+ "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.",
+ "properties": {
+ "apiVersion": {
+ "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldsType": {
+ "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldsV1": {
+ "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:<name>', where <name> is the name of a field in a struct, or key in a map 'v:<value>', where <value> is the exact json formatted value of a list item 'i:<index>', where <index> [...]
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "manager": {
+ "description": "Manager is an identifier of the workflow managing these fields.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "operation": {
+ "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "subresource": {
+ "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of t [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "time": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "namespace": {
+ "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "ownerReferences": {
+ "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.",
+ "items": {
+ "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.",
+ "properties": {
+ "apiVersion": {
+ "description": "API version of the referent.",
+ "type": "string"
+ },
+ "blockOwnerDeletion": {
+ "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unpr [...]
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "controller": {
+ "description": "If true, this reference points to the managing controller.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
+ "type": "string"
+ }
+ },
+ "required": [
+ "apiVersion",
+ "kind",
+ "name",
+ "uid"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "uid"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "uid",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "resourceVersion": {
+ "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must b [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "selfLink": {
+ "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "spec": {
+ "description": "JobSpec describes how the job execution will look like.",
+ "properties": {
+ "activeDeadlineSeconds": {
+ "description": "Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "backoffLimit": {
+ "description": "Specifies the number of retries before marking this job failed. Defaults to 6",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "backoffLimitPerIndex": {
+ "description": "Specifies the limit for the number of retries within an index before marking this index as failed. When enabled the number of failures per index is kept in the pod's batch.kubernetes.io/job-index-failure-count annotation. It can only be set when Job's completionMode=Indexed, and the Pod's restart policy is Never. The field is immutable. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "completionMode": {
+ "description": "completionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\n\n`NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\n\n`Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-ind [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "completions": {
+ "description": "Specifies the desired number of successfully finished pods the job should be run with. Setting to null means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "managedBy": {
+ "description": "ManagedBy field indicates the controller that manages a Job. The k8s Job controller reconciles jobs which don't have this field at all or the field value is the reserved string `kubernetes.io/job-controller`, but skips reconciling Jobs with a custom value for this field. The value must be a valid domain-prefixed path (e.g. acme.io/foo) - all characters before the first \"/\" must be a valid subdomain as defined by RFC 1123. All characters trailing the fi [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "manualSelector": {
+ "description": "manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manual [...]
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "maxFailedIndexes": {
+ "description": "Specifies the maximal number of failed indexes before marking the Job as failed, when backoffLimitPerIndex is set. Once the number of failed indexes exceeds this number the entire Job is marked as Failed and its execution is terminated. When left as null the job continues execution of all of its indexes and is marked with the `Complete` Job condition. It can only be specified when backoffLimitPerIndex is set. It can be null or up to completions. It is re [...]
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "parallelism": {
+ "description": "Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "podFailurePolicy": {
+ "description": "PodFailurePolicy describes how failed pods influence the backoffLimit.",
+ "properties": {
+ "rules": {
+ "description": "A list of pod failure policy rules. The rules are evaluated in order. Once a rule matches a Pod failure, the remaining of the rules are ignored. When no rule matches the Pod failure, the default handling applies - the counter of pod failures is incremented and it is checked against the backoffLimit. At most 20 elements are allowed.",
+ "items": {
+ "description": "PodFailurePolicyRule describes how a pod failure is handled when the requirements are met. One of onExitCodes and onPodConditions, but not both, can be used in each rule.",
+ "properties": {
+ "action": {
+ "description": "Specifies the action taken on a pod failure when the requirements are satisfied. Possible values are:\n\n- FailJob: indicates that the pod's job is marked as Failed and all\n running pods are terminated.\n- FailIndex: indicates that the pod's index is marked as Failed and will\n not be restarted.\n This value is beta-level. It can be used when the\n `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).\n- Ignore: indicates [...]
+ "type": "string"
+ },
+ "onExitCodes": {
+ "description": "PodFailurePolicyOnExitCodesRequirement describes the requirement for handling a failed pod based on its container exit codes. In particular, it lookups the .state.terminated.exitCode for each app container and init container status, represented by the .status.containerStatuses and .status.initContainerStatuses fields in the Pod status, respectively. Containers completed with success (exit code 0) are excluded from the requirement check.",
+ "properties": {
+ "containerName": {
+ "description": "Restricts the check for exit codes to the container with the specified name. When null, the rule applies to all containers. When specified, it should match one the container or initContainer names in the pod template.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "operator": {
+ "description": "Represents the relationship between the container exit code(s) and the specified values. Containers completed with success (exit code 0) are excluded from the requirement check. Possible values are:\n\n- In: the requirement is satisfied if at least one container exit code\n (might be multiple if there are multiple containers not restricted\n by the 'containerName' field) is in the set of specified values.\n- NotIn: the requirement is sati [...]
+ "type": "string"
+ },
+ "values": {
+ "description": "Specifies the set of values. Each returned container exit code (might be multiple in case of multiple containers) is checked against this set of values with respect to the operator. The list of values must be ordered and must not contain duplicates. Value '0' cannot be used for the In operator. At least one element is required. At most 255 elements are allowed.",
+ "items": {
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "type": "array",
+ "x-kubernetes-list-type": "set"
+ }
+ },
+ "required": [
+ "operator",
+ "values"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "onPodConditions": {
+ "description": "Represents the requirement on the pod conditions. The requirement is represented as a list of pod condition patterns. The requirement is satisfied if at least one pattern matches an actual pod condition. At most 20 elements are allowed.",
+ "items": {
+ "description": "PodFailurePolicyOnPodConditionsPattern describes a pattern for matching an actual pod condition type.",
+ "properties": {
+ "status": {
+ "description": "Specifies the required Pod condition status. To match a pod condition it is required that the specified status equals the pod condition status. Defaults to True.",
+ "type": "string"
+ },
+ "type": {
+ "description": "Specifies the required Pod condition type. To match a pod condition it is required that specified type equals the pod condition type.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "status"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "action"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": "array",
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "rules"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "podReplacementPolicy": {
+ "description": "podReplacementPolicy specifies when to create replacement Pods. Possible values are: - TerminatingOrFailed means that we recreate pods\n when they are terminating (has a metadata.deletionTimestamp) or failed.\n- Failed means to wait until a previously created Pod is fully terminated (has phase\n Failed or Succeeded) before creating a replacement Pod.\n\nWhen using podFailurePolicy, Failed is the the only allowed value. TerminatingOrFailed and Failed ar [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "selector": {
+ "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.",
+ "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",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "matchLabels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "successPolicy": {
+ "description": "SuccessPolicy describes when a Job can be declared as succeeded based on the success of some indexes.",
+ "properties": {
+ "rules": {
+ "description": "rules represents the list of alternative rules for the declaring the Jobs as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met, the \"SucceededCriteriaMet\" condition is added, and the lingering pods are removed. The terminal state for such a Job has the \"Complete\" condition. Additionally, these rules are evaluated in order; Once the Job meets one of the rules, other rules are ignored. At most 20 elements are [...]
+ "items": {
+ "description": "SuccessPolicyRule describes rule for declaring a Job as succeeded. Each rule must have at least one of the \"succeededIndexes\" or \"succeededCount\" specified.",
+ "properties": {
+ "succeededCount": {
+ "description": "succeededCount specifies the minimal required size of the actual set of the succeeded indexes for the Job. When succeededCount is used along with succeededIndexes, the check is constrained only to the set of indexes specified by succeededIndexes. For example, given that succeededIndexes is \"1-4\", succeededCount is \"3\", and completed indexes are \"1\", \"3\", and \"5\", the Job isn't declared as succeeded because only \"1\" and \"3\" indexes [...]
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "succeededIndexes": {
+ "description": "succeededIndexes specifies the set of indexes which need to be contained in the actual set of the succeeded indexes for the Job. The list of indexes must be within 0 to \".spec.completions-1\" and must not contain duplicates. At least one element is required. The indexes are represented as intervals separated by commas. The intervals can be a decimal integer or a pair of decimal integers separated by a hyphen. The number are listed in represent [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": "array",
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "rules"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "suspend": {
+ "description": "suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the [...]
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "template": {
+ "description": "PodTemplateSpec describes the data a pod should have when created from a template",
+ "properties": {
+ "metadata": {
+ "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "properties": {
+ "annotations": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "creationTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "deletionGracePeriodSeconds": {
+ "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "deletionTimestamp": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "finalizers": {
+ "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission ca [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "set",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "generateName": {
+ "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "generation": {
+ "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "managedFields": {
+ "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.",
+ "items": {
+ "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.",
+ "properties": {
+ "apiVersion": {
+ "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldsType": {
+ "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldsV1": {
+ "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:<name>', where <name> is the name of a field in a struct, or key in a map 'v:<value>', where <value> is the exact json formatted value of a list item 'i:<index>', where [...]
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "manager": {
+ "description": "Manager is an identifier of the workflow managing these fields.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "operation": {
+ "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "subresource": {
+ "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the vers [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "time": {
+ "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "namespace": {
+ "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "ownerReferences": {
+ "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.",
+ "items": {
+ "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.",
+ "properties": {
+ "apiVersion": {
+ "description": "API version of the referent.",
+ "type": "string"
+ },
+ "blockOwnerDeletion": {
+ "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion for how the garbage collector interacts with this field and enforces the foreground deletion. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 4 [...]
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "controller": {
+ "description": "If true, this reference points to the managing controller.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
+ "type": "string"
+ }
+ },
+ "required": [
+ "apiVersion",
+ "kind",
+ "name",
+ "uid"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "uid"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "uid",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "resourceVersion": {
+ "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Valu [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "selfLink": {
+ "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "uid": {
+ "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "spec": {
+ "description": "PodSpec is a description of a pod.",
+ "properties": {
+ "activeDeadlineSeconds": {
+ "description": "Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "affinity": {
+ "description": "Affinity is a group of affinity scheduling rules.",
+ "properties": {
+ "nodeAffinity": {
+ "description": "Node affinity is a group of node affinity scheduling rules.",
+ "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 el [...]
+ "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).",
+ "properties": {
+ "preference": {
+ "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.",
+ "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.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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.",
+ "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.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": "object",
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "weight": {
+ "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "weight",
+ "preference"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "requiredDuringSchedulingIgnoredDuringExecution": {
+ "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.",
+ "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.",
+ "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.",
+ "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.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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.",
+ "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.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "type": "array",
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "nodeSelectorTerms"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "podAffinity": {
+ "description": "Pod affinity is a group of inter pod affinity scheduling rules.",
+ "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 el [...]
+ "items": {
+ "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)",
+ "properties": {
+ "podAffinityTerm": {
+ "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 <topologyKey> matches that of any node on which a pod of the set of pods is running",
+ "properties": {
+ "labelSelector": {
+ "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.",
+ "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",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "matchLabels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "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 [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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 [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "namespaceSelector": {
+ "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.",
+ "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",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "matchLabels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "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\".",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "topologyKey"
+ ],
+ "type": "object",
+ "additionalProperties": false
+ },
+ "weight": {
+ "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "weight",
+ "podAffinityTerm"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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 inters [...]
+ "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 <topologyKey> matches that of any node on which a pod of the set of pods is running",
+ "properties": {
+ "labelSelector": {
+ "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.",
+ "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",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "matchLabels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "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 defa [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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. Th [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "namespaceSelector": {
+ "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.",
+ "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",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "matchLabels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "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\".",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "topologyKey"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "podAntiAffinity": {
+ "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.",
+ "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 thro [...]
+ "items": {
+ "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)",
+ "properties": {
+ "podAffinityTerm": {
+ "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 <topologyKey> matches that of any node on which a pod of the set of pods is running",
+ "properties": {
+ "labelSelector": {
+ "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.",
+ "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",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "matchLabels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "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 [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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 [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "namespaceSelector": {
+ "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.",
+ "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",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "matchLabels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "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\".",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "topologyKey"
+ ],
+ "type": "object",
+ "additionalProperties": false
+ },
+ "weight": {
+ "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "weight",
+ "podAffinityTerm"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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 [...]
+ "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 <topologyKey> matches that of any node on which a pod of the set of pods is running",
+ "properties": {
+ "labelSelector": {
+ "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.",
+ "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",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "matchLabels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "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 defa [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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. Th [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "namespaceSelector": {
+ "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.",
+ "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",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "required": [
+ "key",
+ "operator"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "matchLabels": {
+ "additionalProperties": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "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\".",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "topologyKey"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "automountServiceAccountToken": {
+ "description": "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "containers": {
+ "description": "List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.",
+ "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 b [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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)\". Escape [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "env": {
+ "description": "List of environment variables to set in the container. Cannot be updated.",
+ "items": {
+ "description": "EnvVar represents an environment variable present in a Container.",
+ "properties": {
+ "name": {
+ "description": "Name of the environment variable. 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 [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "description": "EnvVarSource represents a source for the value of an EnvVar.",
+ "properties": {
+ "configMapKeyRef": {
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "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",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or its key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "fieldRef": {
+ "description": "ObjectFieldSelector selects an APIVersioned field of an object.",
+ "properties": {
+ "apiVersion": {
+ "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldPath": {
+ "description": "Path of the field to select in the specified API version.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "fieldPath"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "resourceFieldRef": {
+ "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format",
+ "properties": {
+ "containerName": {
+ "description": "Container name: required for volumes, optional for env vars",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "divisor": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ ]
+ },
+ "resource": {
+ "description": "Required: resource to select",
+ "type": "string"
+ }
+ },
+ "required": [
+ "resource"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "secretKeyRef": {
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "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. 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",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or its key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "name"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "name",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "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.",
+ "items": {
+ "description": "EnvFromSource represents the source of a set of ConfigMaps",
+ "properties": {
+ "configMapRef": {
+ "description": "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.",
+ "properties": {
+ "name": {
+ "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",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "prefix": {
+ "description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "secretRef": {
+ "description": "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.",
+ "properties": {
+ "name": {
+ "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",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "lifecycle": {
+ "description": "Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.",
+ "properties": {
+ "postStart": {
+ "description": "LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified.",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "properties": {
+ "host": {
+ "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "httpHeaders": {
+ "description": "Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "properties": {
+ "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",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "path": {
+ "description": "Path to access on the HTTP server.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ },
+ "scheme": {
+ "description": "Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "sleep": {
+ "description": "SleepAction describes a \"sleep\" action.",
+ "properties": {
+ "seconds": {
+ "description": "Seconds is the number of seconds to sleep.",
+ "format": "int64",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "seconds"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "properties": {
+ "host": {
+ "description": "Optional: Host name to connect to, defaults to the pod IP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "preStop": {
+ "description": "LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified.",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "properties": {
+ "host": {
+ "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "httpHeaders": {
+ "description": "Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "properties": {
+ "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",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "path": {
+ "description": "Path to access on the HTTP server.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ },
+ "scheme": {
+ "description": "Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "sleep": {
+ "description": "SleepAction describes a \"sleep\" action.",
+ "properties": {
+ "seconds": {
+ "description": "Seconds is the number of seconds to sleep.",
+ "format": "int64",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "seconds"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "properties": {
+ "host": {
+ "description": "Optional: Host name to connect to, defaults to the pod IP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "livenessProbe": {
+ "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "failureThreshold": {
+ "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",
+ "null"
+ ]
+ },
+ "grpc": {
+ "description": "GRPCAction specifies an action involving a GRPC service.",
+ "properties": {
+ "port": {
+ "description": "Port number of the gRPC service. Number must be in the range 1 to 65535.",
+ "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\nIf this is not specified, the default behavior is defined by gRPC.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "properties": {
+ "host": {
+ "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "httpHeaders": {
+ "description": "Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "properties": {
+ "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",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "path": {
+ "description": "Path to access on the HTTP server.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ },
+ "scheme": {
+ "description": "Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "periodSeconds": {
+ "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "properties": {
+ "host": {
+ "description": "Optional: Host name to connect to, defaults to the pod IP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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 [...]
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "name": {
+ "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. 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.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "hostIP": {
+ "description": "What host IP to bind the external port to.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "protocol": {
+ "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "containerPort"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "containerPort",
+ "protocol"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "containerPort",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "readinessProbe": {
+ "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "failureThreshold": {
+ "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",
+ "null"
+ ]
+ },
+ "grpc": {
+ "description": "GRPCAction specifies an action involving a GRPC service.",
+ "properties": {
+ "port": {
+ "description": "Port number of the gRPC service. Number must be in the range 1 to 65535.",
+ "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\nIf this is not specified, the default behavior is defined by gRPC.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "properties": {
+ "host": {
+ "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "httpHeaders": {
+ "description": "Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "properties": {
+ "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",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "path": {
+ "description": "Path to access on the HTTP server.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ },
+ "scheme": {
+ "description": "Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "periodSeconds": {
+ "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "properties": {
+ "host": {
+ "description": "Optional: Host name to connect to, defaults to the pod IP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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 [...]
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "resources": {
+ "description": "ResourceRequirements describes the compute resource requirements.",
+ "properties": {
+ "claims": {
+ "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.\n\nThis is an alpha field and requires enabling the DynamicResourceAllocation feature gate.\n\nThis 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"
+ },
+ "request": {
+ "description": "Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "name"
+ ],
+ "x-kubernetes-list-type": "map"
+ },
+ "limits": {
+ "additionalProperties": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ ]
+ },
+ "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "requests": {
+ "additionalProperties": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ ]
+ },
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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 continua [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "securityContext": {
+ "description": "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.",
+ "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.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "appArmorProfile": {
+ "description": "AppArmorProfile defines a pod or container's AppArmor settings.",
+ "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",
+ "null"
+ ]
+ },
+ "type": {
+ "description": "type indicates which kind of AppArmor profile will be applied. Valid options are:\n Localhost - a profile pre-loaded on the node.\n RuntimeDefault - the container runtime's default profile.\n Unconfined - no AppArmor enforcement.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-unions": [
+ {
+ "discriminator": "type",
+ "fields-to-discriminateBy": {
+ "localhostProfile": "LocalhostProfile"
+ }
+ }
+ ],
+ "additionalProperties": false
+ },
+ "capabilities": {
+ "description": "Adds and removes POSIX capabilities from running containers.",
+ "properties": {
+ "add": {
+ "description": "Added capabilities",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "drop": {
+ "description": "Removed capabilities",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "procMount": {
+ "description": "procMount denotes the type of proc mount to use for the containers. The default value is Default 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",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "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.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "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.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "seLinuxOptions": {
+ "description": "SELinuxOptions are the labels to be applied to the container",
+ "properties": {
+ "level": {
+ "description": "Level is SELinux level label that applies to the container.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "role": {
+ "description": "Role is a SELinux role label that applies to the container.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": {
+ "description": "Type is a SELinux type label that applies to the container.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "user": {
+ "description": "User is a SELinux user label that applies to the container.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "seccompProfile": {
+ "description": "SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.",
+ "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 be set if type is \"Localhost\". Must NOT be set for any other type.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": {
+ "description": "type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - 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",
+ "null"
+ ],
+ "x-kubernetes-unions": [
+ {
+ "discriminator": "type",
+ "fields-to-discriminateBy": {
+ "localhostProfile": "LocalhostProfile"
+ }
+ }
+ ],
+ "additionalProperties": false
+ },
+ "windowsOptions": {
+ "description": "WindowsSecurityContextOptions contain Windows-specific options and credentials.",
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "gmsaCredentialSpecName": {
+ "description": "GMSACredentialSpecName is the name of the GMSA credential spec to use.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "hostProcess": {
+ "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",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "startupProbe": {
+ "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "failureThreshold": {
+ "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",
+ "null"
+ ]
+ },
+ "grpc": {
+ "description": "GRPCAction specifies an action involving a GRPC service.",
+ "properties": {
+ "port": {
+ "description": "Port number of the gRPC service. Number must be in the range 1 to 65535.",
+ "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\nIf this is not specified, the default behavior is defined by gRPC.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "properties": {
+ "host": {
+ "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "httpHeaders": {
+ "description": "Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "properties": {
+ "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",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "path": {
+ "description": "Path to access on the HTTP server.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ },
+ "scheme": {
+ "description": "Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "periodSeconds": {
+ "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "properties": {
+ "host": {
+ "description": "Optional: Host name to connect to, defaults to the pod IP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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 [...]
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "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 containe [...]
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "tty": {
+ "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "volumeDevices": {
+ "description": "volumeDevices is the list of block devices to be used by the container.",
+ "items": {
+ "description": "volumeDevice describes a mapping of a raw block device within a container.",
+ "properties": {
+ "devicePath": {
+ "description": "devicePath is the path inside of the container that the device will be mapped to.",
+ "type": "string"
+ },
+ "name": {
+ "description": "name must match the name of a persistentVolumeClaim in the pod",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "devicePath"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "devicePath"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "devicePath",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "volumeMounts": {
+ "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 ':'.",
+ "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. When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified (which defaults to None).",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "recursiveReadOnly": {
+ "description": "RecursiveReadOnly specifies whether read-only mounts should be handled recursively.\n\nIf ReadOnly is false, this field has no meaning and must be unspecified.\n\nIf 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 [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "subPath": {
+ "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "mountPath"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "mountPath"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "mountPath",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": "array",
+ "x-kubernetes-list-map-keys": [
+ "name"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "name",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "dnsConfig": {
+ "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.",
+ "properties": {
+ "nameservers": {
+ "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "options": {
+ "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.",
+ "items": {
+ "description": "PodDNSConfigOption defines DNS resolver options of a pod.",
+ "properties": {
+ "name": {
+ "description": "Name is this DNS resolver option's name. Required.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "value": {
+ "description": "Value is this DNS resolver option's value.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "searches": {
+ "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "dnsPolicy": {
+ "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "enableServiceLinks": {
+ "description": "EnableServiceLinks indicates whether information about services should be injected into pod's environment variables, matching the syntax of Docker links. Optional: Defaults to true.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "ephemeralContainers": {
+ "description": "List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.",
+ "items": {
+ "description": "An EphemeralContainer is a temporary container that you may add to an existing Pod for user-initiated activities such as debugging. Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a Pod is removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the Pod to exceed its resource allocation.\n\nTo add an ephemeral container, use the ephemeralcontainers s [...]
+ "properties": {
+ "args": {
+ "description": "Arguments to the entrypoint. The 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 [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "command": {
+ "description": "Entrypoint array. Not executed within a shell. The 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 referenc [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "env": {
+ "description": "List of environment variables to set in the container. Cannot be updated.",
+ "items": {
+ "description": "EnvVar represents an environment variable present in a Container.",
+ "properties": {
+ "name": {
+ "description": "Name of the environment variable. 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 [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "description": "EnvVarSource represents a source for the value of an EnvVar.",
+ "properties": {
+ "configMapKeyRef": {
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "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",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or its key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "fieldRef": {
+ "description": "ObjectFieldSelector selects an APIVersioned field of an object.",
+ "properties": {
+ "apiVersion": {
+ "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldPath": {
+ "description": "Path of the field to select in the specified API version.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "fieldPath"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "resourceFieldRef": {
+ "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format",
+ "properties": {
+ "containerName": {
+ "description": "Container name: required for volumes, optional for env vars",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "divisor": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ ]
+ },
+ "resource": {
+ "description": "Required: resource to select",
+ "type": "string"
+ }
+ },
+ "required": [
+ "resource"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "secretKeyRef": {
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "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. 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",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or its key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "name"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "name",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "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.",
+ "items": {
+ "description": "EnvFromSource represents the source of a set of ConfigMaps",
+ "properties": {
+ "configMapRef": {
+ "description": "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.",
+ "properties": {
+ "name": {
+ "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",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "prefix": {
+ "description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "secretRef": {
+ "description": "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.",
+ "properties": {
+ "name": {
+ "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",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "image": {
+ "description": "Container image name. More info: https://kubernetes.io/docs/concepts/containers/images",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "lifecycle": {
+ "description": "Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.",
+ "properties": {
+ "postStart": {
+ "description": "LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified.",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "properties": {
+ "host": {
+ "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "httpHeaders": {
+ "description": "Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "properties": {
+ "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",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "path": {
+ "description": "Path to access on the HTTP server.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ },
+ "scheme": {
+ "description": "Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "sleep": {
+ "description": "SleepAction describes a \"sleep\" action.",
+ "properties": {
+ "seconds": {
+ "description": "Seconds is the number of seconds to sleep.",
+ "format": "int64",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "seconds"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "properties": {
+ "host": {
+ "description": "Optional: Host name to connect to, defaults to the pod IP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "preStop": {
+ "description": "LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified.",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "properties": {
+ "host": {
+ "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "httpHeaders": {
+ "description": "Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "properties": {
+ "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",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "path": {
+ "description": "Path to access on the HTTP server.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ },
+ "scheme": {
+ "description": "Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "sleep": {
+ "description": "SleepAction describes a \"sleep\" action.",
+ "properties": {
+ "seconds": {
+ "description": "Seconds is the number of seconds to sleep.",
+ "format": "int64",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "seconds"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "properties": {
+ "host": {
+ "description": "Optional: Host name to connect to, defaults to the pod IP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "livenessProbe": {
+ "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "failureThreshold": {
+ "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",
+ "null"
+ ]
+ },
+ "grpc": {
+ "description": "GRPCAction specifies an action involving a GRPC service.",
+ "properties": {
+ "port": {
+ "description": "Port number of the gRPC service. Number must be in the range 1 to 65535.",
+ "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\nIf this is not specified, the default behavior is defined by gRPC.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "properties": {
+ "host": {
+ "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "httpHeaders": {
+ "description": "Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "properties": {
+ "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",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "path": {
+ "description": "Path to access on the HTTP server.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ },
+ "scheme": {
+ "description": "Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "periodSeconds": {
+ "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "properties": {
+ "host": {
+ "description": "Optional: Host name to connect to, defaults to the pod IP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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 [...]
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "name": {
+ "description": "Name of the ephemeral container specified as a DNS_LABEL. This name must be unique among all containers, init containers and ephemeral containers.",
+ "type": "string"
+ },
+ "ports": {
+ "description": "Ports are not allowed for ephemeral containers.",
+ "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.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "hostIP": {
+ "description": "What host IP to bind the external port to.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "protocol": {
+ "description": "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "containerPort"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "containerPort",
+ "protocol"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "containerPort",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "readinessProbe": {
+ "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "failureThreshold": {
+ "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",
+ "null"
+ ]
+ },
+ "grpc": {
+ "description": "GRPCAction specifies an action involving a GRPC service.",
+ "properties": {
+ "port": {
+ "description": "Port number of the gRPC service. Number must be in the range 1 to 65535.",
+ "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\nIf this is not specified, the default behavior is defined by gRPC.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "properties": {
+ "host": {
+ "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "httpHeaders": {
+ "description": "Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "properties": {
+ "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",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "path": {
+ "description": "Path to access on the HTTP server.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ },
+ "scheme": {
+ "description": "Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "periodSeconds": {
+ "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "properties": {
+ "host": {
+ "description": "Optional: Host name to connect to, defaults to the pod IP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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 [...]
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "resources": {
+ "description": "ResourceRequirements describes the compute resource requirements.",
+ "properties": {
+ "claims": {
+ "description": "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.\n\nThis is an alpha field and requires enabling the DynamicResourceAllocation feature gate.\n\nThis 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"
+ },
+ "request": {
+ "description": "Request is the name chosen for a request in the referenced claim. If empty, everything from the claim is made available, otherwise only the result of this request.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "name"
+ ],
+ "x-kubernetes-list-type": "map"
+ },
+ "limits": {
+ "additionalProperties": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ ]
+ },
+ "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "requests": {
+ "additionalProperties": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ ]
+ },
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "restartPolicy": {
+ "description": "Restart policy for the container to manage the restart behavior of each container within a pod. This may only be set for init containers. You cannot set this field on ephemeral containers.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "securityContext": {
+ "description": "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.",
+ "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.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "appArmorProfile": {
+ "description": "AppArmorProfile defines a pod or container's AppArmor settings.",
+ "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",
+ "null"
+ ]
+ },
+ "type": {
+ "description": "type indicates which kind of AppArmor profile will be applied. Valid options are:\n Localhost - a profile pre-loaded on the node.\n RuntimeDefault - the container runtime's default profile.\n Unconfined - no AppArmor enforcement.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-unions": [
+ {
+ "discriminator": "type",
+ "fields-to-discriminateBy": {
+ "localhostProfile": "LocalhostProfile"
+ }
+ }
+ ],
+ "additionalProperties": false
+ },
+ "capabilities": {
+ "description": "Adds and removes POSIX capabilities from running containers.",
+ "properties": {
+ "add": {
+ "description": "Added capabilities",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "drop": {
+ "description": "Removed capabilities",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "procMount": {
+ "description": "procMount denotes the type of proc mount to use for the containers. The default value is Default 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",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "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.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "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.",
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "seLinuxOptions": {
+ "description": "SELinuxOptions are the labels to be applied to the container",
+ "properties": {
+ "level": {
+ "description": "Level is SELinux level label that applies to the container.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "role": {
+ "description": "Role is a SELinux role label that applies to the container.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": {
+ "description": "Type is a SELinux type label that applies to the container.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "user": {
+ "description": "User is a SELinux user label that applies to the container.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "seccompProfile": {
+ "description": "SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.",
+ "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 be set if type is \"Localhost\". Must NOT be set for any other type.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": {
+ "description": "type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - 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",
+ "null"
+ ],
+ "x-kubernetes-unions": [
+ {
+ "discriminator": "type",
+ "fields-to-discriminateBy": {
+ "localhostProfile": "LocalhostProfile"
+ }
+ }
+ ],
+ "additionalProperties": false
+ },
+ "windowsOptions": {
+ "description": "WindowsSecurityContextOptions contain Windows-specific options and credentials.",
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "gmsaCredentialSpecName": {
+ "description": "GMSACredentialSpecName is the name of the GMSA credential spec to use.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "hostProcess": {
+ "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",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "startupProbe": {
+ "description": "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "failureThreshold": {
+ "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",
+ "null"
+ ]
+ },
+ "grpc": {
+ "description": "GRPCAction specifies an action involving a GRPC service.",
+ "properties": {
+ "port": {
+ "description": "Port number of the gRPC service. Number must be in the range 1 to 65535.",
+ "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\nIf this is not specified, the default behavior is defined by gRPC.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "properties": {
+ "host": {
+ "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "httpHeaders": {
+ "description": "Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "properties": {
+ "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",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "path": {
+ "description": "Path to access on the HTTP server.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ },
+ "scheme": {
+ "description": "Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "periodSeconds": {
+ "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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.",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "properties": {
+ "host": {
+ "description": "Optional: Host name to connect to, defaults to the pod IP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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 [...]
+ "format": "int64",
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "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",
+ "format": "int32",
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "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.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "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 containe [...]
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "targetContainerName": {
+ "description": "If set, the name of the container from PodSpec that this ephemeral container targets. The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. If not set then the ephemeral container uses the namespaces configured in the Pod spec.\n\nThe container runtime must implement support for this feature. If the runtime does not support namespace targeting then the result of setting this field is undefined.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "tty": {
+ "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "volumeDevices": {
+ "description": "volumeDevices is the list of block devices to be used by the container.",
+ "items": {
+ "description": "volumeDevice describes a mapping of a raw block device within a container.",
+ "properties": {
+ "devicePath": {
+ "description": "devicePath is the path inside of the container that the device will be mapped to.",
+ "type": "string"
+ },
+ "name": {
+ "description": "name must match the name of a persistentVolumeClaim in the pod",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "devicePath"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "devicePath"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "devicePath",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "volumeMounts": {
+ "description": "Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. 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 ':'.",
+ "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. When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified (which defaults to None).",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "recursiveReadOnly": {
+ "description": "RecursiveReadOnly specifies whether read-only mounts should be handled recursively.\n\nIf ReadOnly is false, this field has no meaning and must be unspecified.\n\nIf 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 [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "subPath": {
+ "description": "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "mountPath"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "mountPath"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "mountPath",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "name"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "name",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "hostAliases": {
+ "description": "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts file if specified.",
+ "items": {
+ "description": "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.",
+ "properties": {
+ "hostnames": {
+ "description": "Hostnames for the above IP address.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "ip": {
+ "description": "IP address of the host file entry.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "ip"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "ip"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "ip",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "hostIPC": {
+ "description": "Use the host's ipc namespace. Optional: Default to false.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "hostNetwork": {
+ "description": "Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "hostPID": {
+ "description": "Use the host's pid namespace. Optional: Default to false.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "hostUsers": {
+ "description": "Use the host's user namespace. Optional: Default to true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as [...]
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "hostname": {
+ "description": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "imagePullSecrets": {
+ "description": "ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod",
+ "items": {
+ "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.",
+ "properties": {
+ "name": {
+ "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",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "name"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "name",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "initContainers": {
+ "description": "List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequir [...]
+ "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 b [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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)\". Escape [...]
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "env": {
+ "description": "List of environment variables to set in the container. Cannot be updated.",
+ "items": {
+ "description": "EnvVar represents an environment variable present in a Container.",
+ "properties": {
+ "name": {
+ "description": "Name of the environment variable. 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 [...]
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "valueFrom": {
+ "description": "EnvVarSource represents a source for the value of an EnvVar.",
+ "properties": {
+ "configMapKeyRef": {
+ "description": "Selects a key from a ConfigMap.",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "name": {
+ "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",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap or its key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "fieldRef": {
+ "description": "ObjectFieldSelector selects an APIVersioned field of an object.",
+ "properties": {
+ "apiVersion": {
+ "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "fieldPath": {
+ "description": "Path of the field to select in the specified API version.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "fieldPath"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "resourceFieldRef": {
+ "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format",
+ "properties": {
+ "containerName": {
+ "description": "Container name: required for volumes, optional for env vars",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "divisor": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ ]
+ },
+ "resource": {
+ "description": "Required: resource to select",
+ "type": "string"
+ }
+ },
+ "required": [
+ "resource"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ },
+ "secretKeyRef": {
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "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. 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",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret or its key must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "x-kubernetes-map-type": "atomic",
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-map-keys": [
+ "name"
+ ],
+ "x-kubernetes-list-type": "map",
+ "x-kubernetes-patch-merge-key": "name",
+ "x-kubernetes-patch-strategy": "merge"
+ },
+ "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.",
+ "items": {
+ "description": "EnvFromSource represents the source of a set of ConfigMaps",
+ "properties": {
+ "configMapRef": {
+ "description": "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.",
+ "properties": {
+ "name": {
+ "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",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the ConfigMap must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "prefix": {
+ "description": "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "secretRef": {
+ "description": "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.",
+ "properties": {
+ "name": {
+ "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",
+ "null"
+ ]
+ },
+ "optional": {
+ "description": "Specify whether the Secret must be defined",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "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.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "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",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "lifecycle": {
+ "description": "Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted.",
+ "properties": {
+ "postStart": {
+ "description": "LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified.",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "properties": {
+ "host": {
+ "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "httpHeaders": {
+ "description": "Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "properties": {
+ "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",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "path": {
+ "description": "Path to access on the HTTP server.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ },
+ "scheme": {
+ "description": "Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "sleep": {
+ "description": "SleepAction describes a \"sleep\" action.",
+ "properties": {
+ "seconds": {
+ "description": "Seconds is the number of seconds to sleep.",
+ "format": "int64",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "seconds"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
+ "properties": {
+ "host": {
+ "description": "Optional: Host name to connect to, defaults to the pod IP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "preStop": {
+ "description": "LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified.",
+ "properties": {
+ "exec": {
+ "description": "ExecAction describes a \"run in container\" action.",
+ "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.",
+ "items": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "httpGet": {
+ "description": "HTTPGetAction describes an action based on HTTP Get requests.",
+ "properties": {
+ "host": {
+ "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "httpHeaders": {
+ "description": "Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "description": "HTTPHeader describes a custom header to be used in HTTP probes",
+ "properties": {
+ "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",
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "value"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "type": [
+ "array",
+ "null"
+ ],
+ "x-kubernetes-list-type": "atomic"
+ },
+ "path": {
+ "description": "Path to access on the HTTP server.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "port": {
+ "oneOf": [
+ {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ {
+ "type": [
+ "integer",
+ "null"
+ ]
+ }
+ ]
+ },
+ "scheme": {
+ "description": "Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "port"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "sleep": {
+ "description": "SleepAction describes a \"sleep\" action.",
+ "properties": {
+ "seconds": {
+ "description": "Seconds is the number of seconds to sleep.",
+ "format": "int64",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "seconds"
+ ],
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": false
+ },
+ "tcpSocket": {
+ "description": "TCPSocketAction describes an action based on opening a socket",
... 409115 lines suppressed ...