+
+ );
+ };
+
+ const EnvironmentList = ({ env }: { env: Environment }): JSX.Element => {
+ return (
+
+ );
+ };
+
+ const InfrastructureListItem = ({ infrastructure }: { infrastructure: InfrastructureDetails }): JSX.Element => {
+ const isSelected =
+ selectedInfrastructure?.id === infrastructure.id || preSelectedInfrastructure?.id === infrastructure.id;
+
return (
{
infrastructure.isActive
? setSelectedInfrastructure(infrastructure)
@@ -85,7 +142,6 @@ function ChaosInfrastructureReferenceFieldView({
size={12}
name="pipeline-approval"
/>
- {/* */}
{infrastructure.name}
@@ -124,6 +180,26 @@ function ChaosInfrastructureReferenceFieldView({
);
};
+ const NoInfraComponent = (): JSX.Element => {
+ return (
+
+
+
+ {searchInfrastructure === '' ? getString('newUserNoInfra.title') : getString('noFilteredActiveInfra')}
+
+ {searchInfrastructure === '' && (
+
+ );
+ };
+
return (
);
diff --git a/chaoscenter/web/src/views/ExperimentCreationFaultConfiguration/Tabs/TargetApplication/TargetApplication.tsx b/chaoscenter/web/src/views/ExperimentCreationFaultConfiguration/Tabs/TargetApplication/TargetApplication.tsx
index 0f9bba022b0..048959330cb 100644
--- a/chaoscenter/web/src/views/ExperimentCreationFaultConfiguration/Tabs/TargetApplication/TargetApplication.tsx
+++ b/chaoscenter/web/src/views/ExperimentCreationFaultConfiguration/Tabs/TargetApplication/TargetApplication.tsx
@@ -7,24 +7,28 @@ import { useStrings } from '@strings';
import type { AppInfoData, TargetApplicationData } from '@controllers/TargetApplicationTab/types';
interface TargetApplicationViewProps {
- appInfoData: AppInfoData[];
+ appInfoData: AppInfoData;
+ namespaceData: string[];
targetApp: TargetApplicationData | undefined;
setTargetApp: React.Dispatch>;
engineCR: ChaosEngine | undefined;
setFaultData: React.Dispatch>;
// getKubeObjectLazyQueryFunction: LazyQueryFunction;
infrastructureID: string | undefined;
- loading: boolean;
+ loadingNamespace: boolean;
+ loadingObject: boolean;
}
export default function TargetApplicationTab({
appInfoData,
+ namespaceData,
targetApp,
setTargetApp,
engineCR,
setFaultData,
// getKubeObjectLazyQueryFunction,
- loading
+ loadingNamespace,
+ loadingObject
}: TargetApplicationViewProps): React.ReactElement {
const { getString } = useStrings();
@@ -36,18 +40,19 @@ export default function TargetApplicationTab({
}
function getAppNamespaceItems(): SelectOption[] {
- return appInfoData.map(data => ({
- label: data.namespace,
- value: data.namespace
+ if (loadingNamespace) return [];
+ return namespaceData.map(data => ({
+ label: data,
+ value: data
}));
}
function getAppLabelItems(): SelectOption[] {
- if (loading) return [];
- const filteredAppInfo = appInfoData.filter(data => data.namespace === targetApp?.appns)[0];
- return filteredAppInfo?.appLabel.map(label => ({
- label: label,
- value: label
+ if (loadingObject) return [];
+ // const filteredAppInfo = appInfoData.filter(data => data.namespace === targetApp?.appns)[0];
+ return appInfoData?.appLabel.map(data => ({
+ label: data,
+ value: data
}));
}
@@ -66,8 +71,8 @@ export default function TargetApplicationTab({
onChange={selectedItem => {
setTargetApp({
appkind: selectedItem.label,
- appns: '',
- applabel: ''
+ applabel: '',
+ appns: ''
});
if (engineCR?.spec?.appinfo?.appkind !== undefined) engineCR.spec.appinfo.appkind = selectedItem.label;
setFaultData(faultData => {
diff --git a/chaoscenter/web/src/views/Overview/Overview.module.scss b/chaoscenter/web/src/views/Overview/Overview.module.scss
index c8af477c092..93b75b79d13 100644
--- a/chaoscenter/web/src/views/Overview/Overview.module.scss
+++ b/chaoscenter/web/src/views/Overview/Overview.module.scss
@@ -34,6 +34,11 @@
align-items: center;
width: 50%;
height: 230px;
+
+ img {
+ max-width: 250px;
+ height: 131px;
+ }
}
}
diff --git a/chaoscenter/web/src/views/StudioOverview/StudioOverview.tsx b/chaoscenter/web/src/views/StudioOverview/StudioOverview.tsx
index 9caf24229f0..89f8207357d 100644
--- a/chaoscenter/web/src/views/StudioOverview/StudioOverview.tsx
+++ b/chaoscenter/web/src/views/StudioOverview/StudioOverview.tsx
@@ -128,6 +128,7 @@ export default function StudioOverviewView({
{getChaosInfrastructureReferenceField({
initialInfrastructureID: formikProps.values.chaosInfrastructure.id,
+ initialEnvironmentID: formikProps.values.chaosInfrastructure.environmentID,
setFieldValue: formikProps.setFieldValue
})}
diff --git a/chaoscenter/web/yarn.lock b/chaoscenter/web/yarn.lock
index 9b27ff4f341..05ba4fc1373 100644
--- a/chaoscenter/web/yarn.lock
+++ b/chaoscenter/web/yarn.lock
@@ -1051,16 +1051,16 @@
"@types/node" "*"
"@types/bonjour@^3.5.9":
- version "3.5.10"
- resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275"
- integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==
+ version "3.5.13"
+ resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956"
+ integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==
dependencies:
"@types/node" "*"
"@types/connect-history-api-fallback@^1.3.5":
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae"
- integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==
+ version "1.5.4"
+ resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3"
+ integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==
dependencies:
"@types/express-serve-static-core" "*"
"@types/node" "*"
@@ -1324,11 +1324,6 @@
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2"
integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==
-"@types/mime@*":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45"
- integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==
-
"@types/mime@^1":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
@@ -1435,10 +1430,10 @@
"@types/scheduler" "*"
csstype "^3.0.2"
-"@types/retry@^0.12.0":
- version "0.12.1"
- resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065"
- integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==
+"@types/retry@0.12.0":
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d"
+ integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==
"@types/scheduler@*":
version "0.16.2"
@@ -1459,9 +1454,9 @@
"@types/node" "*"
"@types/serve-index@^1.9.1":
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278"
- integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==
+ version "1.9.4"
+ resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898"
+ integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==
dependencies:
"@types/express" "*"
@@ -1474,18 +1469,18 @@
"@types/node" "*"
"@types/serve-static@^1.13.10":
- version "1.15.5"
- resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033"
- integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==
+ version "1.15.7"
+ resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714"
+ integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==
dependencies:
"@types/http-errors" "*"
- "@types/mime" "*"
"@types/node" "*"
+ "@types/send" "*"
"@types/sockjs@^0.3.33":
- version "0.3.33"
- resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f"
- integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==
+ version "0.3.36"
+ resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535"
+ integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==
dependencies:
"@types/node" "*"
@@ -4408,9 +4403,9 @@ fs-monkey@1.0.3:
integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==
fs-monkey@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788"
- integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2"
+ integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==
fs.realpath@^1.0.0:
version "1.0.0"
@@ -4703,9 +4698,9 @@ html-encoding-sniffer@^2.0.1:
whatwg-encoding "^1.0.5"
html-entities@^2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488"
- integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f"
+ integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==
html-escaper@^2.0.0:
version "2.0.2"
@@ -4947,9 +4942,9 @@ ipaddr.js@1.9.1:
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
ipaddr.js@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0"
- integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8"
+ integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
is-arguments@^1.0.4:
version "1.1.1"
@@ -6491,9 +6486,9 @@ onetime@^5.1.0, onetime@^5.1.2:
mimic-fn "^2.1.0"
open@^8.0.9:
- version "8.4.0"
- resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
- integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==
+ version "8.4.2"
+ resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9"
+ integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==
dependencies:
define-lazy-prop "^2.0.0"
is-docker "^2.1.1"
@@ -6589,11 +6584,11 @@ p-map@^4.0.0:
aggregate-error "^3.0.0"
p-retry@^4.5.0:
- version "4.6.1"
- resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c"
- integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16"
+ integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==
dependencies:
- "@types/retry" "^0.12.0"
+ "@types/retry" "0.12.0"
retry "^0.13.1"
p-try@^1.0.0:
@@ -8523,7 +8518,7 @@ webpack-cli@^4.9.0:
rechoir "^0.7.0"
webpack-merge "^5.7.3"
-webpack-dev-middleware@^5.3.1:
+webpack-dev-middleware@^5.3.4:
version "5.3.4"
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517"
integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==
@@ -8535,9 +8530,9 @@ webpack-dev-middleware@^5.3.1:
schema-utils "^4.0.0"
webpack-dev-server@^4.15.1:
- version "4.15.1"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7"
- integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==
+ version "4.15.2"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173"
+ integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==
dependencies:
"@types/bonjour" "^3.5.9"
"@types/connect-history-api-fallback" "^1.3.5"
@@ -8567,7 +8562,7 @@ webpack-dev-server@^4.15.1:
serve-index "^1.9.1"
sockjs "^0.3.24"
spdy "^4.0.2"
- webpack-dev-middleware "^5.3.1"
+ webpack-dev-middleware "^5.3.4"
ws "^8.13.0"
webpack-merge@^5.7.3:
@@ -8745,6 +8740,7 @@ ws@^8.13.0:
resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b"
integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==
+
xml-name-validator@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
diff --git a/mkdocs/docs/3.10.0/litmus-getting-started.yaml b/mkdocs/docs/3.10.0/litmus-getting-started.yaml
new file mode 100644
index 00000000000..bda3281748e
--- /dev/null
+++ b/mkdocs/docs/3.10.0/litmus-getting-started.yaml
@@ -0,0 +1,414 @@
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: litmus-portal-admin-secret
+stringData:
+ DB_USER: "root"
+ DB_PASSWORD: "1234"
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: litmus-portal-admin-config
+data:
+ DB_SERVER: mongodb://my-release-mongodb-0.my-release-mongodb-headless:27017,my-release-mongodb-1.my-release-mongodb-headless:27017,my-release-mongodb-2.my-release-mongodb-headless:27017/admin
+ VERSION: "3.10.0"
+ SKIP_SSL_VERIFY: "false"
+ # Configurations if you are using dex for OAuth
+ DEX_ENABLED: "false"
+ OIDC_ISSUER: "http://:32000"
+ DEX_OAUTH_CALLBACK_URL: "http://:8080/auth/dex/callback"
+ DEX_OAUTH_CLIENT_ID: "LitmusPortalAuthBackend"
+ DEX_OAUTH_CLIENT_SECRET: "ZXhhbXBsZS1hcHAtc2VjcmV0"
+ OAuthJwtSecret: "litmus-oauth@123"
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: litmusportal-frontend-nginx-configuration
+data:
+ nginx.conf: |
+ pid /tmp/nginx.pid;
+
+ events {
+ worker_connections 1024;
+ }
+
+ http {
+ map $http_upgrade $connection_upgrade {
+ default upgrade;
+ '' close;
+ }
+
+ client_body_temp_path /tmp/client_temp;
+ proxy_temp_path /tmp/proxy_temp_path;
+ fastcgi_temp_path /tmp/fastcgi_temp;
+ uwsgi_temp_path /tmp/uwsgi_temp;
+ scgi_temp_path /tmp/scgi_temp;
+
+ sendfile on;
+ tcp_nopush on;
+ tcp_nodelay on;
+ keepalive_timeout 65;
+ types_hash_max_size 2048;
+ server_tokens off;
+
+ include /etc/nginx/mime.types;
+
+ gzip on;
+ gzip_disable "msie6";
+
+ access_log /var/log/nginx/access.log;
+ error_log /var/log/nginx/error.log;
+
+ server {
+ listen 8185 default_server;
+ root /opt/chaos;
+
+ location /health {
+ return 200;
+ }
+
+ location / {
+ proxy_http_version 1.1;
+ add_header Cache-Control "no-cache";
+ try_files $uri /index.html;
+ autoindex on;
+ }
+
+ # redirect server error pages to the static page /50x.html
+ #
+ error_page 500 502 503 504 /50x.html;
+ location = /50x.html {
+ root /usr/share/nginx/html;
+ }
+
+ location /auth/ {
+ proxy_http_version 1.1;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_pass "http://litmusportal-auth-server-service:9003/";
+ }
+
+ location /api/ {
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection $connection_upgrade;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_pass "http://litmusportal-server-service:9002/";
+ }
+ }
+ }
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: litmusportal-frontend
+ labels:
+ component: litmusportal-frontend
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ component: litmusportal-frontend
+ template:
+ metadata:
+ labels:
+ component: litmusportal-frontend
+ spec:
+ automountServiceAccountToken: false
+ containers:
+ - name: litmusportal-frontend
+ image: litmuschaos/litmusportal-frontend:3.10.0
+ # securityContext:
+ # runAsUser: 2000
+ # allowPrivilegeEscalation: false
+ # runAsNonRoot: true
+ imagePullPolicy: Always
+ ports:
+ - containerPort: 8185
+ resources:
+ requests:
+ memory: "250Mi"
+ cpu: "125m"
+ ephemeral-storage: "500Mi"
+ limits:
+ memory: "512Mi"
+ cpu: "550m"
+ ephemeral-storage: "1Gi"
+ volumeMounts:
+ - name: nginx-config
+ mountPath: /etc/nginx/nginx.conf
+ subPath: nginx.conf
+ volumes:
+ - name: nginx-config
+ configMap:
+ name: litmusportal-frontend-nginx-configuration
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: litmusportal-frontend-service
+spec:
+ type: NodePort
+ ports:
+ - name: http
+ port: 9091
+ targetPort: 8185
+ selector:
+ component: litmusportal-frontend
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: litmusportal-server
+ labels:
+ component: litmusportal-server
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ component: litmusportal-server
+ template:
+ metadata:
+ labels:
+ component: litmusportal-server
+ spec:
+ automountServiceAccountToken: false
+ volumes:
+ - name: gitops-storage
+ emptyDir: {}
+ - name: hub-storage
+ emptyDir: {}
+ containers:
+ - name: graphql-server
+ image: litmuschaos/litmusportal-server:3.10.0
+ volumeMounts:
+ - mountPath: /tmp/
+ name: gitops-storage
+ - mountPath: /tmp/version
+ name: hub-storage
+ securityContext:
+ runAsUser: 2000
+ allowPrivilegeEscalation: false
+ runAsNonRoot: true
+ readOnlyRootFilesystem: true
+ envFrom:
+ - configMapRef:
+ name: litmus-portal-admin-config
+ - secretRef:
+ name: litmus-portal-admin-secret
+ env:
+ # if self-signed certificate are used pass the base64 tls certificate, to allow agents to use tls for communication
+ - name: TLS_CERT_B64
+ value: ""
+ - name: ENABLE_GQL_INTROSPECTION
+ value: "false"
+ - name: INFRA_DEPLOYMENTS
+ value: '["app=chaos-exporter", "name=chaos-operator", "app=workflow-controller", "app=event-tracker"]'
+ - name: CHAOS_CENTER_UI_ENDPOINT
+ value: ""
+ - name: SUBSCRIBER_IMAGE
+ value: "litmuschaos/litmusportal-subscriber:3.10.0"
+ - name: EVENT_TRACKER_IMAGE
+ value: "litmuschaos/litmusportal-event-tracker:3.10.0"
+ - name: ARGO_WORKFLOW_CONTROLLER_IMAGE
+ value: "litmuschaos/workflow-controller:v3.3.1"
+ - name: ARGO_WORKFLOW_EXECUTOR_IMAGE
+ value: "litmuschaos/argoexec:v3.3.1"
+ - name: LITMUS_CHAOS_OPERATOR_IMAGE
+ value: "litmuschaos/chaos-operator:3.10.0"
+ - name: LITMUS_CHAOS_RUNNER_IMAGE
+ value: "litmuschaos/chaos-runner:3.10.0"
+ - name: LITMUS_CHAOS_EXPORTER_IMAGE
+ value: "litmuschaos/chaos-exporter:3.10.0"
+ - name: CONTAINER_RUNTIME_EXECUTOR
+ value: "k8sapi"
+ - name: DEFAULT_HUB_BRANCH_NAME
+ value: "3.10.x"
+ - name: LITMUS_AUTH_GRPC_ENDPOINT
+ value: "litmusportal-auth-server-service"
+ - name: LITMUS_AUTH_GRPC_PORT
+ value: "3030"
+ - name: WORKFLOW_HELPER_IMAGE_VERSION
+ value: "3.10.0"
+ - name: REMOTE_HUB_MAX_SIZE
+ value: "5000000"
+ - name: INFRA_COMPATIBLE_VERSIONS
+ value: '["3.10.0"]'
+ - name: ALLOWED_ORIGINS
+ value: ".*" #eg: ^(http://|https://|)litmuschaos.io(:[0-9]+|)?,^(http://|https://|)litmusportal-server-service(:[0-9]+|)?
+ - name: ENABLE_INTERNAL_TLS
+ value: "false"
+ - name: TLS_CERT_PATH
+ value: ""
+ - name: TLS_KEY_PATH
+ value: ""
+ - name: CA_CERT_TLS_PATH
+ value: ""
+ - name: REST_PORT
+ value: "8080"
+ - name: GRPC_PORT
+ value: "8000"
+ ports:
+ - containerPort: 8080
+ - containerPort: 8000
+ imagePullPolicy: Always
+ resources:
+ requests:
+ memory: "250Mi"
+ cpu: "225m"
+ ephemeral-storage: "500Mi"
+ limits:
+ memory: "712Mi"
+ cpu: "550m"
+ ephemeral-storage: "1Gi"
+---
+kind: NetworkPolicy
+apiVersion: networking.k8s.io/v1
+metadata:
+ name: litmusportal-server
+ namespace: litmus
+ labels:
+ component: litmusportal-server
+spec:
+ policyTypes:
+ - Ingress
+ podSelector:
+ matchLabels:
+ component: litmusportal-server
+ ingress:
+ - from:
+ - podSelector:
+ matchLabels:
+ component: litmusportal-frontend
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: litmusportal-server-service
+spec:
+ type: NodePort
+ ports:
+ - name: graphql-server
+ port: 9002
+ targetPort: 8080
+ - name: graphql-rpc-server
+ port: 8000
+ targetPort: 8000
+ selector:
+ component: litmusportal-server
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: litmusportal-auth-server
+ labels:
+ component: litmusportal-auth-server
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ component: litmusportal-auth-server
+ template:
+ metadata:
+ labels:
+ component: litmusportal-auth-server
+ spec:
+ automountServiceAccountToken: false
+ containers:
+ - name: auth-server
+ image: litmuschaos/litmusportal-auth-server:3.10.0
+ securityContext:
+ runAsUser: 2000
+ allowPrivilegeEscalation: false
+ runAsNonRoot: true
+ readOnlyRootFilesystem: true
+ envFrom:
+ - configMapRef:
+ name: litmus-portal-admin-config
+ - secretRef:
+ name: litmus-portal-admin-secret
+ env:
+ - name: STRICT_PASSWORD_POLICY
+ value: "false"
+ - name: ADMIN_USERNAME
+ value: "admin"
+ - name: ADMIN_PASSWORD
+ value: "litmus"
+ - name: LITMUS_GQL_GRPC_ENDPOINT
+ value: "litmusportal-server-service"
+ - name: LITMUS_GQL_GRPC_PORT
+ value: "8000"
+ - name: ALLOWED_ORIGINS
+ value: ".*" #eg: ^(http://|https://|)litmuschaos.io(:[0-9]+|)?,^(http://|https://|)litmusportal-server-service(:[0-9]+|)?
+ - name: ENABLE_INTERNAL_TLS
+ value: "false"
+ - name: TLS_CERT_PATH
+ value: ""
+ - name: TLS_KEY_PATH
+ value: ""
+ - name: CA_CERT_TLS_PATH
+ value: ""
+ - name: REST_PORT
+ value: "3000"
+ - name: GRPC_PORT
+ value: "3030"
+ ports:
+ - containerPort: 3000
+ - containerPort: 3030
+ imagePullPolicy: Always
+ resources:
+ requests:
+ memory: "250Mi"
+ cpu: "125m"
+ ephemeral-storage: "500Mi"
+ limits:
+ memory: "712Mi"
+ cpu: "550m"
+ ephemeral-storage: "1Gi"
+---
+kind: NetworkPolicy
+apiVersion: networking.k8s.io/v1
+metadata:
+ name: litmusportal-auth-server
+ namespace: litmus
+ labels:
+ component: litmusportal-auth-server
+spec:
+ policyTypes:
+ - Ingress
+ podSelector:
+ matchLabels:
+ component: litmusportal-auth-server
+ ingress:
+ - from:
+ - podSelector:
+ matchLabels:
+ component: litmusportal-frontend
+ - from:
+ - podSelector:
+ matchLabels:
+ component: litmusportal-server
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: litmusportal-auth-server-service
+spec:
+ type: NodePort
+ ports:
+ - name: auth-server
+ port: 9003
+ targetPort: 3000
+ - name: auth-rpc-server
+ port: 3030
+ targetPort: 3030
+ selector:
+ component: litmusportal-auth-server
\ No newline at end of file
diff --git a/mkdocs/docs/3.10.0/litmus-installation.yaml b/mkdocs/docs/3.10.0/litmus-installation.yaml
new file mode 100644
index 00000000000..656da6e5522
--- /dev/null
+++ b/mkdocs/docs/3.10.0/litmus-installation.yaml
@@ -0,0 +1,447 @@
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: litmus-portal-admin-secret
+stringData:
+ DB_USER: "root"
+ DB_PASSWORD: "1234"
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: litmus-portal-admin-config
+data:
+ DB_SERVER: mongodb://my-release-mongodb-0.my-release-mongodb-headless:27017,my-release-mongodb-1.my-release-mongodb-headless:27017,my-release-mongodb-2.my-release-mongodb-headless:27017/admin
+ VERSION: "3.10.0"
+ SKIP_SSL_VERIFY: "false"
+ # Configurations if you are using dex for OAuth
+ DEX_ENABLED: "false"
+ OIDC_ISSUER: "http://:32000"
+ DEX_OAUTH_CALLBACK_URL: "http://:8080/auth/dex/callback"
+ DEX_OAUTH_CLIENT_ID: "LitmusPortalAuthBackend"
+ DEX_OAUTH_CLIENT_SECRET: "ZXhhbXBsZS1hcHAtc2VjcmV0"
+ OAuthJwtSecret: "litmus-oauth@123"
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: litmusportal-frontend-nginx-configuration
+data:
+ nginx.conf: |
+ pid /tmp/nginx.pid;
+
+ events {
+ worker_connections 1024;
+ }
+
+ http {
+ map $http_upgrade $connection_upgrade {
+ default upgrade;
+ '' close;
+ }
+
+ client_body_temp_path /tmp/client_temp;
+ proxy_temp_path /tmp/proxy_temp_path;
+ fastcgi_temp_path /tmp/fastcgi_temp;
+ uwsgi_temp_path /tmp/uwsgi_temp;
+ scgi_temp_path /tmp/scgi_temp;
+
+ sendfile on;
+ tcp_nopush on;
+ tcp_nodelay on;
+ keepalive_timeout 65;
+ types_hash_max_size 2048;
+ server_tokens off;
+
+ include /etc/nginx/mime.types;
+
+ gzip on;
+ gzip_disable "msie6";
+
+ access_log /var/log/nginx/access.log;
+ error_log /var/log/nginx/error.log;
+
+ server {
+ listen 8185 ssl;
+ ssl_certificate /etc/tls/tls.crt;
+ ssl_certificate_key /etc/tls/tls.key;
+ ssl_protocols TLSv1.2 TLSv1.3;
+ ssl_client_certificate /etc/tls/ca.crt;
+ ssl_ciphers HIGH:!aNULL:!MD5;
+ ssl_prefer_server_ciphers on;
+ ssl_session_cache shared:SSL:10m;
+
+ root /opt/chaos;
+
+ location /health {
+ return 200;
+ }
+
+ location / {
+ proxy_http_version 1.1;
+ add_header Cache-Control "no-cache";
+ try_files $uri /index.html;
+ autoindex on;
+ }
+
+ # redirect server error pages to the static page /50x.html
+ #
+ error_page 500 502 503 504 /50x.html;
+ location = /50x.html {
+ root /usr/share/nginx/html;
+ }
+
+ location /auth/ {
+ proxy_ssl_verify off;
+ proxy_ssl_session_reuse on;
+ proxy_http_version 1.1;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_pass "https://litmusportal-auth-server-service:9005/";
+ proxy_ssl_certificate /etc/tls/tls.crt;
+ proxy_ssl_certificate_key /etc/tls/tls.key;
+ }
+
+ location /api/ {
+ proxy_ssl_verify off;
+ proxy_ssl_session_reuse on;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection $connection_upgrade;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_pass "https://litmusportal-server-service:9004/";
+ proxy_ssl_certificate /etc/tls/tls.crt;
+ proxy_ssl_certificate_key /etc/tls/tls.key;
+ }
+ }
+ }
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: litmusportal-frontend
+ labels:
+ component: litmusportal-frontend
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ component: litmusportal-frontend
+ template:
+ metadata:
+ labels:
+ component: litmusportal-frontend
+ spec:
+ automountServiceAccountToken: false
+ containers:
+ - name: litmusportal-frontend
+ image: litmuschaos/litmusportal-frontend:3.10.0
+ # securityContext:
+ # runAsUser: 2000
+ # allowPrivilegeEscalation: false
+ # runAsNonRoot: true
+ imagePullPolicy: Always
+ ports:
+ - containerPort: 8185
+ resources:
+ requests:
+ memory: "250Mi"
+ cpu: "125m"
+ ephemeral-storage: "500Mi"
+ limits:
+ memory: "512Mi"
+ cpu: "550m"
+ ephemeral-storage: "1Gi"
+ volumeMounts:
+ - name: nginx-config
+ mountPath: /etc/nginx/nginx.conf
+ subPath: nginx.conf
+ - mountPath: /etc/tls
+ name: tls-secret
+ volumes:
+ - name: nginx-config
+ configMap:
+ name: litmusportal-frontend-nginx-configuration
+ - name: tls-secret
+ secret:
+ secretName: tls-secret
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: litmusportal-frontend-service
+spec:
+ type: NodePort
+ ports:
+ - name: http
+ port: 9091
+ targetPort: 8185
+ selector:
+ component: litmusportal-frontend
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: litmusportal-server
+ labels:
+ component: litmusportal-server
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ component: litmusportal-server
+ template:
+ metadata:
+ labels:
+ component: litmusportal-server
+ spec:
+ automountServiceAccountToken: false
+ volumes:
+ - name: gitops-storage
+ emptyDir: {}
+ - name: hub-storage
+ emptyDir: {}
+ - name: tls-secret
+ secret:
+ secretName: tls-secret
+ containers:
+ - name: graphql-server
+ image: litmuschaos/litmusportal-server:3.10.0
+ volumeMounts:
+ - mountPath: /tmp/
+ name: gitops-storage
+ - mountPath: /tmp/version
+ name: hub-storage
+ - mountPath: /etc/tls
+ name: tls-secret
+ securityContext:
+ runAsUser: 2000
+ allowPrivilegeEscalation: false
+ runAsNonRoot: true
+ readOnlyRootFilesystem: true
+ envFrom:
+ - configMapRef:
+ name: litmus-portal-admin-config
+ - secretRef:
+ name: litmus-portal-admin-secret
+ env:
+ # if self-signed certificate are used pass the base64 tls certificate, to allow agents to use tls for communication
+ - name: TLS_CERT_B64
+ value: ""
+ - name: ENABLE_GQL_INTROSPECTION
+ value: "false"
+ - name: INFRA_DEPLOYMENTS
+ value: '["app=chaos-exporter", "name=chaos-operator", "app=workflow-controller", "app=event-tracker"]'
+ - name: CHAOS_CENTER_UI_ENDPOINT
+ value: ""
+ - name: SUBSCRIBER_IMAGE
+ value: "litmuschaos/litmusportal-subscriber:3.10.0"
+ - name: EVENT_TRACKER_IMAGE
+ value: "litmuschaos/litmusportal-event-tracker:3.10.0"
+ - name: ARGO_WORKFLOW_CONTROLLER_IMAGE
+ value: "litmuschaos/workflow-controller:v3.3.1"
+ - name: ARGO_WORKFLOW_EXECUTOR_IMAGE
+ value: "litmuschaos/argoexec:v3.3.1"
+ - name: LITMUS_CHAOS_OPERATOR_IMAGE
+ value: "litmuschaos/chaos-operator:3.10.0"
+ - name: LITMUS_CHAOS_RUNNER_IMAGE
+ value: "litmuschaos/chaos-runner:3.10.0"
+ - name: LITMUS_CHAOS_EXPORTER_IMAGE
+ value: "litmuschaos/chaos-exporter:3.10.0"
+ - name: CONTAINER_RUNTIME_EXECUTOR
+ value: "k8sapi"
+ - name: DEFAULT_HUB_BRANCH_NAME
+ value: "3.10.x"
+ - name: LITMUS_AUTH_GRPC_ENDPOINT
+ value: "litmusportal-auth-server-service"
+ - name: LITMUS_AUTH_GRPC_PORT
+ value: "3030"
+ - name: WORKFLOW_HELPER_IMAGE_VERSION
+ value: "3.10.0"
+ - name: REMOTE_HUB_MAX_SIZE
+ value: "5000000"
+ - name: INFRA_COMPATIBLE_VERSIONS
+ value: '["3.10.0"]'
+ - name: ALLOWED_ORIGINS
+ value: "^(http://|https://|)litmuschaos.io(:[0-9]+|)?,^(http://|https://|)litmusportal-server-service(:[0-9]+|)?"
+ - name: ENABLE_INTERNAL_TLS
+ value: "true"
+ - name: TLS_CERT_PATH
+ value: "/etc/tls/tls.crt"
+ - name: TLS_KEY_PATH
+ value: "/etc/tls/tls.key"
+ - name: CA_CERT_TLS_PATH
+ value: "/etc/tls/ca.crt"
+ - name: REST_PORT
+ value: "8081"
+ - name: GRPC_PORT
+ value: "8001"
+ ports:
+ - containerPort: 8081
+ - containerPort: 8001
+ imagePullPolicy: Always
+ resources:
+ requests:
+ memory: "250Mi"
+ cpu: "225m"
+ ephemeral-storage: "500Mi"
+ limits:
+ memory: "712Mi"
+ cpu: "550m"
+ ephemeral-storage: "1Gi"
+---
+kind: NetworkPolicy
+apiVersion: networking.k8s.io/v1
+metadata:
+ name: litmusportal-server
+ namespace: litmus
+ labels:
+ component: litmusportal-server
+spec:
+ policyTypes:
+ - Ingress
+ podSelector:
+ matchLabels:
+ component: litmusportal-server
+ ingress:
+ - from:
+ - podSelector:
+ matchLabels:
+ component: litmusportal-frontend
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: litmusportal-server-service
+spec:
+ type: NodePort
+ ports:
+ - name: graphql-server-https
+ port: 9004
+ targetPort: 8081
+ - name: graphql-rpc-server-https
+ port: 8001
+ targetPort: 8001
+ selector:
+ component: litmusportal-server
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: litmusportal-auth-server
+ labels:
+ component: litmusportal-auth-server
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ component: litmusportal-auth-server
+ template:
+ metadata:
+ labels:
+ component: litmusportal-auth-server
+ spec:
+ volumes:
+ - name: tls-secret
+ secret:
+ secretName: tls-secret
+ automountServiceAccountToken: false
+ containers:
+ - name: auth-server
+ volumeMounts:
+ - mountPath: /etc/tls
+ name: tls-secret
+ image: litmuschaos/litmusportal-auth-server:3.10.0
+ securityContext:
+ runAsUser: 2000
+ allowPrivilegeEscalation: false
+ runAsNonRoot: true
+ readOnlyRootFilesystem: true
+ envFrom:
+ - configMapRef:
+ name: litmus-portal-admin-config
+ - secretRef:
+ name: litmus-portal-admin-secret
+ env:
+ - name: STRICT_PASSWORD_POLICY
+ value: "false"
+ - name: ADMIN_USERNAME
+ value: "admin"
+ - name: ADMIN_PASSWORD
+ value: "litmus"
+ - name: LITMUS_GQL_GRPC_ENDPOINT
+ value: "litmusportal-server-service"
+ - name: LITMUS_GQL_GRPC_PORT
+ value: "8000"
+ - name: ALLOWED_ORIGINS
+ value: "^(http://|https://|)litmuschaos.io(:[0-9]+|)?,^(http://|https://|)litmusportal-server-service(:[0-9]+|)?" #ip needs to added here
+ - name: ENABLE_INTERNAL_TLS
+ value: "true"
+ - name: TLS_CERT_PATH
+ value: "/etc/tls/tls.crt"
+ - name: TLS_KEY_PATH
+ value: "/etc/tls/ctls.key"
+ - name: CA_CERT_TLS_PATH
+ value: "/etc/tls/ca.crt"
+ - name: REST_PORT
+ value: "3001"
+ - name: GRPC_PORT
+ value: "3031"
+ ports:
+ - containerPort: 3001
+ - containerPort: 3031
+ imagePullPolicy: Always
+ resources:
+ requests:
+ memory: "250Mi"
+ cpu: "125m"
+ ephemeral-storage: "500Mi"
+ limits:
+ memory: "712Mi"
+ cpu: "550m"
+ ephemeral-storage: "1Gi"
+---
+kind: NetworkPolicy
+apiVersion: networking.k8s.io/v1
+metadata:
+ name: litmusportal-auth-server
+ namespace: litmus
+ labels:
+ component: litmusportal-auth-server
+spec:
+ policyTypes:
+ - Ingress
+ podSelector:
+ matchLabels:
+ component: litmusportal-auth-server
+ ingress:
+ - from:
+ - podSelector:
+ matchLabels:
+ component: litmusportal-frontend
+ - from:
+ - podSelector:
+ matchLabels:
+ component: litmusportal-server
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: litmusportal-auth-server-service
+spec:
+ type: NodePort
+ ports:
+ - name: auth-server-https
+ port: 9005
+ targetPort: 3001
+ - name: auth-rpc-server-https
+ port: 3031
+ targetPort: 3031
+ selector:
+ component: litmusportal-auth-server
diff --git a/mkdocs/docs/3.10.0/litmus-portal-crds.yml b/mkdocs/docs/3.10.0/litmus-portal-crds.yml
new file mode 100644
index 00000000000..0dba567b892
--- /dev/null
+++ b/mkdocs/docs/3.10.0/litmus-portal-crds.yml
@@ -0,0 +1,3596 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: clusterworkflowtemplates.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: ClusterWorkflowTemplate
+ listKind: ClusterWorkflowTemplateList
+ plural: clusterworkflowtemplates
+ shortNames:
+ - clusterwftmpl
+ - cwft
+ singular: clusterworkflowtemplate
+ scope: Cluster
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ metadata:
+ type: object
+ spec:
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - metadata
+ - spec
+ type: object
+ served: true
+ storage: true
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: cronworkflows.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: CronWorkflow
+ listKind: CronWorkflowList
+ plural: cronworkflows
+ shortNames:
+ - cwf
+ - cronwf
+ singular: cronworkflow
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ metadata:
+ type: object
+ spec:
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-preserve-unknown-fields: true
+ status:
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - metadata
+ - spec
+ type: object
+ served: true
+ storage: true
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: workflows.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: Workflow
+ listKind: WorkflowList
+ plural: workflows
+ shortNames:
+ - wf
+ singular: workflow
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - description: Status of the workflow
+ jsonPath: .status.phase
+ name: Status
+ type: string
+ - description: When the workflow was started
+ format: date-time
+ jsonPath: .status.startedAt
+ name: Age
+ type: date
+ name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ metadata:
+ type: object
+ spec:
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-preserve-unknown-fields: true
+ status:
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - metadata
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: workflowtasksets.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: WorkflowTaskSet
+ listKind: WorkflowTaskSetList
+ plural: workflowtasksets
+ shortNames:
+ - wfts
+ singular: workflowtaskset
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ metadata:
+ type: object
+ spec:
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-preserve-unknown-fields: true
+ status:
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - metadata
+ - spec
+ type: object
+ served: true
+ storage: true
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: workflowtemplates.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: WorkflowTemplate
+ listKind: WorkflowTemplateList
+ plural: workflowtemplates
+ shortNames:
+ - wftmpl
+ singular: workflowtemplate
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ metadata:
+ type: object
+ spec:
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - metadata
+ - spec
+ type: object
+ served: true
+ storage: true
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: workflowtaskresults.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: WorkflowTaskResult
+ listKind: WorkflowTaskResultList
+ plural: workflowtaskresults
+ singular: workflowtaskresult
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ message:
+ type: string
+ metadata:
+ type: object
+ outputs:
+ properties:
+ artifacts:
+ items:
+ properties:
+ archive:
+ properties:
+ none:
+ type: object
+ tar:
+ properties:
+ compressionLevel:
+ format: int32
+ type: integer
+ type: object
+ zip:
+ type: object
+ type: object
+ archiveLogs:
+ type: boolean
+ artifactory:
+ properties:
+ passwordSecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ url:
+ type: string
+ usernameSecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ required:
+ - url
+ type: object
+ from:
+ type: string
+ fromExpression:
+ type: string
+ gcs:
+ properties:
+ bucket:
+ type: string
+ key:
+ type: string
+ serviceAccountKeySecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ required:
+ - key
+ type: object
+ git:
+ properties:
+ depth:
+ format: int64
+ type: integer
+ disableSubmodules:
+ type: boolean
+ fetch:
+ items:
+ type: string
+ type: array
+ insecureIgnoreHostKey:
+ type: boolean
+ passwordSecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ repo:
+ type: string
+ revision:
+ type: string
+ sshPrivateKeySecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ usernameSecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ required:
+ - repo
+ type: object
+ globalName:
+ type: string
+ hdfs:
+ properties:
+ addresses:
+ items:
+ type: string
+ type: array
+ force:
+ type: boolean
+ hdfsUser:
+ type: string
+ krbCCacheSecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ krbConfigConfigMap:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ krbKeytabSecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ krbRealm:
+ type: string
+ krbServicePrincipalName:
+ type: string
+ krbUsername:
+ type: string
+ path:
+ type: string
+ required:
+ - path
+ type: object
+ http:
+ properties:
+ headers:
+ items:
+ properties:
+ name:
+ type: string
+ value:
+ type: string
+ required:
+ - name
+ - value
+ type: object
+ type: array
+ url:
+ type: string
+ required:
+ - url
+ type: object
+ mode:
+ format: int32
+ type: integer
+ name:
+ type: string
+ optional:
+ type: boolean
+ oss:
+ properties:
+ accessKeySecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ bucket:
+ type: string
+ createBucketIfNotPresent:
+ type: boolean
+ endpoint:
+ type: string
+ key:
+ type: string
+ lifecycleRule:
+ properties:
+ markDeletionAfterDays:
+ format: int32
+ type: integer
+ markInfrequentAccessAfterDays:
+ format: int32
+ type: integer
+ type: object
+ secretKeySecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ securityToken:
+ type: string
+ required:
+ - key
+ type: object
+ path:
+ type: string
+ raw:
+ properties:
+ data:
+ type: string
+ required:
+ - data
+ type: object
+ recurseMode:
+ type: boolean
+ s3:
+ properties:
+ accessKeySecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ bucket:
+ type: string
+ createBucketIfNotPresent:
+ properties:
+ objectLocking:
+ type: boolean
+ type: object
+ encryptionOptions:
+ properties:
+ enableEncryption:
+ type: boolean
+ kmsEncryptionContext:
+ type: string
+ kmsKeyId:
+ type: string
+ serverSideCustomerKeySecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ endpoint:
+ type: string
+ insecure:
+ type: boolean
+ key:
+ type: string
+ region:
+ type: string
+ roleARN:
+ type: string
+ secretKeySecret:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ useSDKCreds:
+ type: boolean
+ type: object
+ subPath:
+ type: string
+ required:
+ - name
+ type: object
+ type: array
+ exitCode:
+ type: string
+ parameters:
+ items:
+ properties:
+ default:
+ type: string
+ description:
+ type: string
+ enum:
+ items:
+ type: string
+ type: array
+ globalName:
+ type: string
+ name:
+ type: string
+ value:
+ type: string
+ valueFrom:
+ properties:
+ configMapKeyRef:
+ properties:
+ key:
+ type: string
+ name:
+ type: string
+ optional:
+ type: boolean
+ required:
+ - key
+ type: object
+ default:
+ type: string
+ event:
+ type: string
+ expression:
+ type: string
+ jqFilter:
+ type: string
+ jsonPath:
+ type: string
+ parameter:
+ type: string
+ path:
+ type: string
+ supplied:
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ result:
+ type: string
+ type: object
+ phase:
+ type: string
+ progress:
+ type: string
+ required:
+ - metadata
+ type: object
+ served: true
+ storage: true
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: chaosengines.litmuschaos.io
+spec:
+ group: litmuschaos.io
+ names:
+ kind: ChaosEngine
+ listKind: ChaosEngineList
+ plural: chaosengines
+ singular: chaosengine
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ type: object
+ 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/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ properties:
+ jobCleanUpPolicy:
+ type: string
+ pattern: ^(delete|retain)$
+ # alternate ways to do this in case of complex pattern matches
+ #oneOf:
+ # - pattern: '^delete$'
+ # - pattern: '^retain$'
+ defaultHealthCheck:
+ type: boolean
+ appinfo:
+ type: object
+ properties:
+ appkind:
+ type: string
+ pattern: ^(^$|deployment|statefulset|daemonset|deploymentconfig|rollout)$
+ applabel:
+ type: string
+ appns:
+ type: string
+ selectors:
+ type: object
+ properties:
+ pods:
+ items:
+ properties:
+ names:
+ type: string
+ namespace:
+ type: string
+ required:
+ - names
+ - namespace
+ type: object
+ type: array
+ workloads:
+ items:
+ properties:
+ kind:
+ type: string
+ pattern: ^(^$|deployment|statefulset|daemonset|deploymentconfig|rollout)$
+ labels:
+ type: string
+ names:
+ type: string
+ namespace:
+ type: string
+ oneOf:
+ - required: [ names ]
+ - required: [ labels ]
+ required:
+ - kind
+ - namespace
+ type: object
+ type: array
+ oneOf:
+ - required: [ pods ]
+ - required: [ workloads ]
+ auxiliaryAppInfo:
+ type: string
+ engineState:
+ type: string
+ pattern: ^(active|stop)$
+ chaosServiceAccount:
+ type: string
+ terminationGracePeriodSeconds:
+ type: integer
+ components:
+ type: object
+ properties:
+ sidecar:
+ type: array
+ items:
+ type: object
+ properties:
+ env:
+ description: ENV contains ENV passed to the sidecar container
+ 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 previous 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.
+ The $(VAR_NAME) syntax can be escaped with a double
+ $$, ie: $$(VAR_NAME). Escaped references will never
+ be expanded, regardless of whether the variable
+ exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's
+ value. Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports
+ metadata.name, metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in
+ the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, limits.ephemeral-storage, requests.cpu,
+ requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for
+ volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of
+ the exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the
+ pod's namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or
+ its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ envFrom:
+ description: EnvFrom for the sidecar container
+ items:
+ description: EnvFromSource represents the source of a
+ set of ConfigMaps
+ properties:
+ configMapRef:
+ description: The ConfigMap to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap must
+ be defined
+ type: boolean
+ type: object
+ prefix:
+ description: An optional identifier to prepend to
+ each key in the ConfigMap. Must be a C_IDENTIFIER.
+ type: string
+ secretRef:
+ description: The Secret to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret must be
+ defined
+ type: boolean
+ type: object
+ type: object
+ type: array
+ image:
+ type: string
+ imagePullPolicy:
+ type: string
+ secrets:
+ items:
+ properties:
+ mountPath:
+ type: string
+ name:
+ type: string
+ required:
+ - mountPath
+ - name
+ type: object
+ type: array
+ runner:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ properties:
+ image:
+ type: string
+ type:
+ type: string
+ pattern: ^(go)$
+ runnerAnnotations:
+ type: object
+ runnerLabels:
+ type: object
+ additionalProperties:
+ type: string
+ properties:
+ key:
+ type: string
+ minLength: 1
+ value:
+ type: string
+ minLength: 1
+ tolerations:
+ description: Pod's tolerations.
+ items:
+ description: The pod with this Toleration tolerates any taint matches the using the matching operator .
+ properties:
+ effect:
+ description: Effect to match. Empty means all effects.
+ type: string
+ key:
+ description: Taint key the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists.
+ type: string
+ operator:
+ description: Operators are Exists or Equal. Defaults to Equal.
+ type: string
+ tolerationSeconds:
+ description: Period of time the toleration tolerates the taint.
+ format: int64
+ type: integer
+ value:
+ description: If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ experiments:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ spec:
+ type: object
+ properties:
+ probe:
+ type: array
+ items:
+ type: object
+ required:
+ - name
+ - type
+ - mode
+ - runProperties
+ properties:
+ name:
+ type: string
+ type:
+ type: string
+ minLength: 1
+ pattern: ^(k8sProbe|httpProbe|cmdProbe|promProbe|sloProbe)$
+ k8sProbe/inputs:
+ type: object
+ required:
+ - version
+ - resource
+ - operation
+ properties:
+ group:
+ type: string
+ version:
+ type: string
+ resource:
+ type: string
+ namespace:
+ type: string
+ resourceNames:
+ type: string
+ fieldSelector:
+ type: string
+ labelSelector:
+ type: string
+ operation:
+ type: string
+ pattern: ^(present|absent|create|delete)$
+ minLength: 1
+ cmdProbe/inputs:
+ type: object
+ required:
+ - command
+ - comparator
+ properties:
+ command:
+ type: string
+ minLength: 1
+ comparator:
+ type: object
+ required:
+ - type
+ - criteria
+ - value
+ properties:
+ type:
+ type: string
+ minLength: 1
+ pattern: ^(int|float|string)$
+ criteria:
+ type: string
+ value:
+ type: string
+ source:
+ description: The external pod where we have to run the
+ probe commands. It will run the commands inside the experiment pod itself(inline mode) if source contains a nil value
+ required:
+ - image
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations for the source pod
+ type: object
+ args:
+ description: Args for the source pod
+ items:
+ type: string
+ type: array
+ command:
+ description: Command for the source pod
+ items:
+ type: string
+ type: array
+ env:
+ description: ENVList contains ENV passed to
+ the source pod
+ 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 previous 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. The $(VAR_NAME) syntax can
+ be escaped with a double $$, ie: $$(VAR_NAME).
+ Escaped references will never be expanded,
+ regardless of whether the variable exists
+ or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment
+ variable's value. Cannot be used if
+ value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the
+ ConfigMap or its key must be
+ defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the
+ pod: supports metadata.name, metadata.namespace,
+ metadata.labels, metadata.annotations,
+ spec.nodeName, spec.serviceAccountName,
+ status.hostIP, status.podIP.'
+ properties:
+ apiVersion:
+ description: Version of the schema
+ the FieldPath is written in
+ terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field
+ to select in the specified API
+ version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of
+ the container: only resources limits
+ and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu,
+ requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name:
+ required for volumes, optional
+ for env vars'
+ type: string
+ divisor:
+ description: Specifies the output
+ format of the exposed resources,
+ defaults to "1"
+ type: string
+ resource:
+ description: 'Required: resource
+ to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret
+ in the pod's namespace
+ properties:
+ key:
+ description: The key of the secret
+ to select from. Must be a valid
+ secret key.
+ type: string
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the
+ Secret or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ hostNetwork:
+ description: HostNetwork define the hostNetwork
+ of the external pod it supports boolean values
+ and default value is false
+ type: boolean
+ inheritInputs:
+ description: InheritInputs define to inherit experiment
+ details in probe pod it supports boolean values
+ and default value is false.
+ type: boolean
+ image:
+ description: Image for the source pod
+ type: string
+ imagePullPolicy:
+ description: ImagePullPolicy for the source pod
+ type: string
+ imagePullSecrets:
+ description: ImagePullSecrets for source 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'
+ type: string
+ type: object
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ description: Labels for the source pod
+ type: object
+ nodeSelector:
+ additionalProperties:
+ type: string
+ description: NodeSelector for the source pod
+ type: object
+ privileged:
+ description: Privileged for the source pod
+ type: boolean
+ volumeMount:
+ description: VolumesMount for the source pod
+ 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.
+ type: string
+ name:
+ description: This must match the Name
+ of a Volume.
+ type: string
+ readOnly:
+ description: Mounted read-only if true,
+ read-write otherwise (false or unspecified).
+ Defaults to false.
+ type: boolean
+ subPath:
+ description: Path within the volume from
+ which the container's volume should
+ be mounted. Defaults to "" (volume's
+ root).
+ type: string
+ subPathExpr:
+ description: Expanded path within the
+ volume from which the container's volume
+ should be mounted. Behaves similarly
+ to SubPath but environment variable
+ references $(VAR_NAME) are expanded
+ using the container's environment. Defaults
+ to "" (volume's root). SubPathExpr and
+ SubPath are mutually exclusive. This
+ field is beta in 1.15.
+ type: string
+ required:
+ - mountPath
+ - name
+ type: object
+ type: array
+ volumes:
+ description: Volumes for the source pod
+ items:
+ description: Volume represents a named volume
+ in a pod that may be accessed by any container
+ in the pod.
+ properties:
+ awsElasticBlockStore:
+ description: 'AWSElasticBlockStore represents
+ an AWS Disk resource that is attached
+ to a kubelet''s host machine and then
+ exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ properties:
+ fsType:
+ description: 'Filesystem type of the
+ volume that you want to mount. Tip:
+ Ensure that the filesystem type
+ is supported by the host operating
+ system. Examples: "ext4", "xfs",
+ "ntfs". Implicitly inferred to be
+ "ext4" if unspecified. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ partition:
+ description: 'The partition in the
+ volume that you want to mount. If
+ omitted, the default is to mount
+ by volume name. Examples: For volume
+ /dev/sda1, you specify the partition
+ as "1". Similarly, the volume partition
+ for /dev/sda is "0" (or you can
+ leave the property empty).'
+ format: int32
+ type: integer
+ readOnly:
+ description: 'Specify "true" to force
+ and set the ReadOnly property in
+ VolumeMounts to "true". If omitted,
+ the default is "false". More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ type: boolean
+ volumeID:
+ description: 'Unique ID of the persistent
+ disk resource in AWS (Amazon EBS
+ volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ type: string
+ required:
+ - volumeID
+ type: object
+ azureDisk:
+ description: AzureDisk represents an Azure
+ Data Disk mount on the host and bind
+ mount to the pod.
+ properties:
+ cachingMode:
+ description: 'Host Caching mode: None,
+ Read Only, Read Write.'
+ type: string
+ diskName:
+ description: The Name of the data
+ disk in the blob storage
+ type: string
+ diskURI:
+ description: The URI the data disk
+ in the blob storage
+ type: string
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ type: string
+ kind:
+ description: 'Expected values Shared:
+ multiple blob disks per storage
+ account Dedicated: single blob
+ disk per storage account Managed:
+ azure managed data disk (only in
+ managed availability set). defaults
+ to shared'
+ type: string
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ required:
+ - diskName
+ - diskURI
+ type: object
+ azureFile:
+ description: AzureFile represents an Azure
+ File Service mount on the host and bind
+ mount to the pod.
+ properties:
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ secretName:
+ description: the name of secret that
+ contains Azure Storage Account Name
+ and Key
+ type: string
+ shareName:
+ description: Share Name
+ type: string
+ required:
+ - secretName
+ - shareName
+ type: object
+ cephfs:
+ description: CephFS represents a Ceph
+ FS mount on the host that shares a pod's
+ lifetime
+ properties:
+ monitors:
+ description: 'Required: Monitors is
+ a collection of Ceph monitors More
+ info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ items:
+ type: string
+ type: array
+ path:
+ description: 'Optional: Used as the
+ mounted root, rather than the full
+ Ceph tree, default is /'
+ type: string
+ readOnly:
+ description: 'Optional: Defaults to
+ false (read/write). ReadOnly here
+ will force the ReadOnly setting
+ in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: boolean
+ secretFile:
+ description: 'Optional: SecretFile
+ is the path to key ring for User,
+ default is /etc/ceph/user.secret
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: string
+ secretRef:
+ description: 'Optional: SecretRef
+ is reference to the authentication
+ secret for User, default is empty.
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ user:
+ description: 'Optional: User is the
+ rados user name, default is admin
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: string
+ required:
+ - monitors
+ type: object
+ cinder:
+ description: 'Cinder represents a cinder
+ volume attached and mounted on kubelets
+ host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ properties:
+ fsType:
+ description: 'Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: string
+ readOnly:
+ description: 'Optional: Defaults to
+ false (read/write). ReadOnly here
+ will force the ReadOnly setting
+ in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: boolean
+ secretRef:
+ description: 'Optional: points to
+ a secret object containing parameters
+ used to connect to OpenStack.'
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ volumeID:
+ description: 'volume id used to identify
+ the volume in cinder. More info:
+ https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: string
+ required:
+ - volumeID
+ type: object
+ configMap:
+ description: ConfigMap represents a configMap
+ that should populate this volume
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits
+ to use on created files by default.
+ Must be a value between 0 and 0777.
+ Defaults to 0644. Directories within
+ the path are not affected by this
+ setting. This might be in conflict
+ with other options that affect the
+ file mode, like fsGroup, and the
+ result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: If unspecified, each
+ key-value pair in the Data field
+ of the referenced ConfigMap will
+ be projected into the volume as
+ a file whose name is the key and
+ content is the value. If specified,
+ the listed keys will be projected
+ into the specified paths, and unlisted
+ keys will not be present. If a key
+ is specified which is not present
+ in the ConfigMap, the volume setup
+ will error unless it is marked optional.
+ Paths must be relative and may not
+ contain the '..' path or start with
+ '..'.
+ items:
+ description: Maps a string key to
+ a path within a volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode
+ bits to use on this file,
+ must be a value between 0
+ and 0777. If not specified,
+ the volume defaultMode will
+ be used. This might be in
+ conflict with other options
+ that affect the file mode,
+ like fsGroup, and the result
+ can be other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path
+ of the file to map the key
+ to. May not be an absolute
+ path. May not contain the
+ path element '..'. May not
+ start with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its keys must be defined
+ type: boolean
+ type: object
+ csi:
+ description: CSI (Container Storage Interface)
+ represents storage that is handled by
+ an external CSI driver (Alpha feature).
+ properties:
+ driver:
+ description: Driver is the name of
+ the CSI driver that handles this
+ volume. Consult with your admin
+ for the correct name as registered
+ in the cluster.
+ type: string
+ fsType:
+ description: Filesystem type to mount.
+ Ex. "ext4", "xfs", "ntfs". If not
+ provided, the empty value is passed
+ to the associated CSI driver which
+ will determine the default filesystem
+ to apply.
+ type: string
+ nodePublishSecretRef:
+ description: NodePublishSecretRef
+ is a reference to the secret object
+ containing sensitive information
+ to pass to the CSI driver to complete
+ the CSI NodePublishVolume and NodeUnpublishVolume
+ calls. This field is optional, and may
+ be empty if no secret is required.
+ If the secret object contains more
+ than one secret, all secret references
+ are passed.
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ readOnly:
+ description: Specifies a read-only
+ configuration for the volume. Defaults
+ to false (read/write).
+ type: boolean
+ volumeAttributes:
+ additionalProperties:
+ type: string
+ description: VolumeAttributes stores
+ driver-specific properties that
+ are passed to the CSI driver. Consult
+ your driver's documentation for
+ supported values.
+ type: object
+ required:
+ - driver
+ type: object
+ downwardAPI:
+ description: DownwardAPI represents downward
+ API about the pod that should populate
+ this volume
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits
+ to use on created files by default.
+ Must be a value between 0 and 0777.
+ Defaults to 0644. Directories within
+ the path are not affected by this
+ setting. This might be in conflict
+ with other options that affect the
+ file mode, like fsGroup, and the
+ result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: Items is a list of downward
+ API volume file
+ items:
+ description: DownwardAPIVolumeFile
+ represents information to create
+ the file containing the pod field
+ properties:
+ fieldRef:
+ description: 'Required: Selects
+ a field of the pod: only annotations,
+ labels, name and namespace
+ are supported.'
+ properties:
+ apiVersion:
+ description: Version of
+ the schema the FieldPath
+ is written in terms of,
+ defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the
+ field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ mode:
+ description: 'Optional: mode
+ bits to use on this file,
+ must be a value between 0
+ and 0777. If not specified,
+ the volume defaultMode will
+ be used. This might be in
+ conflict with other options
+ that affect the file mode,
+ like fsGroup, and the result
+ can be other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: 'Required: Path
+ is the relative path name
+ of the file to be created.
+ Must not be absolute or contain
+ the ''..'' path. Must be utf-8
+ encoded. The first item of
+ the relative path must not
+ start with ''..'''
+ type: string
+ resourceFieldRef:
+ description: 'Selects a resource
+ of the container: only resources
+ limits and requests (limits.cpu,
+ limits.memory, requests.cpu
+ and requests.memory) are currently
+ supported.'
+ properties:
+ containerName:
+ description: 'Container
+ name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ description: Specifies the
+ output format of the exposed
+ resources, defaults to
+ "1"
+ type: string
+ resource:
+ description: 'Required:
+ resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ required:
+ - path
+ type: object
+ type: array
+ type: object
+ emptyDir:
+ description: 'EmptyDir represents a temporary
+ directory that shares a pod''s lifetime.
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+ properties:
+ medium:
+ description: 'What type of storage
+ medium should back this directory.
+ The default is "" which means to
+ use the node''s default medium.
+ Must be an empty string (default)
+ or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+ type: string
+ sizeLimit:
+ description: 'Total amount of local
+ storage required for this EmptyDir
+ volume. The size limit is also applicable
+ for memory medium. The maximum usage
+ on memory medium EmptyDir would
+ be the minimum value between the
+ SizeLimit specified here and the
+ sum of memory limits of all containers
+ in a pod. The default is nil which
+ means that the limit is undefined.
+ More info: http://kubernetes.io/docs/user-guide/volumes#emptydir'
+ type: string
+ type: object
+ fc:
+ description: FC represents a Fibre Channel
+ resource that is attached to a kubelet's
+ host machine and then exposed to the
+ pod.
+ properties:
+ fsType:
+ description: 'Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ lun:
+ description: 'Optional: FC target
+ lun number'
+ format: int32
+ type: integer
+ readOnly:
+ description: 'Optional: Defaults to
+ false (read/write). ReadOnly here
+ will force the ReadOnly setting
+ in VolumeMounts.'
+ type: boolean
+ targetWWNs:
+ description: 'Optional: FC target
+ worldwide names (WWNs)'
+ items:
+ type: string
+ type: array
+ wwids:
+ description: 'Optional: FC volume
+ world wide identifiers (wwids) Either
+ wwids or combination of targetWWNs
+ and lun must be set, but not both
+ simultaneously.'
+ items:
+ type: string
+ type: array
+ type: object
+ flexVolume:
+ description: FlexVolume represents a generic
+ volume resource that is provisioned/attached
+ using an exec based plugin.
+ properties:
+ driver:
+ description: Driver is the name of
+ the driver to use for this volume.
+ type: string
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". The default
+ filesystem depends on FlexVolume
+ script.
+ type: string
+ options:
+ additionalProperties:
+ type: string
+ description: 'Optional: Extra command
+ options if any.'
+ type: object
+ readOnly:
+ description: 'Optional: Defaults to
+ false (read/write). ReadOnly here
+ will force the ReadOnly setting
+ in VolumeMounts.'
+ type: boolean
+ secretRef:
+ description: 'Optional: SecretRef
+ is reference to the secret object
+ containing sensitive information
+ to pass to the plugin scripts. This
+ may be empty if no secret object
+ is specified. If the secret object
+ contains more than one secret, all
+ secrets are passed to the plugin
+ scripts.'
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ required:
+ - driver
+ type: object
+ flocker:
+ description: Flocker represents a Flocker
+ volume attached to a kubelet's host
+ machine. This depends on the Flocker
+ control service being running
+ properties:
+ datasetName:
+ description: Name of the dataset stored
+ as metadata -> name on the dataset
+ for Flocker should be considered
+ as deprecated
+ type: string
+ datasetUUID:
+ description: UUID of the dataset.
+ This is unique identifier of a Flocker
+ dataset
+ type: string
+ type: object
+ gcePersistentDisk:
+ description: 'GCEPersistentDisk represents
+ a GCE Disk resource that is attached
+ to a kubelet''s host machine and then
+ exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ properties:
+ fsType:
+ description: 'Filesystem type of the
+ volume that you want to mount. Tip:
+ Ensure that the filesystem type
+ is supported by the host operating
+ system. Examples: "ext4", "xfs",
+ "ntfs". Implicitly inferred to be
+ "ext4" if unspecified. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ partition:
+ description: 'The partition in the
+ volume that you want to mount. If
+ omitted, the default is to mount
+ by volume name. Examples: For volume
+ /dev/sda1, you specify the partition
+ as "1". Similarly, the volume partition
+ for /dev/sda is "0" (or you can
+ leave the property empty). More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ format: int32
+ type: integer
+ pdName:
+ description: 'Unique name of the PD
+ resource in GCE. Used to identify
+ the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force
+ the ReadOnly setting in VolumeMounts.
+ Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ type: boolean
+ required:
+ - pdName
+ type: object
+ gitRepo:
+ description: 'GitRepo represents a git
+ repository at a particular revision.
+ DEPRECATED: GitRepo is deprecated. To
+ provision a container with a git repo,
+ mount an EmptyDir into an InitContainer
+ that clones the repo using git, then
+ mount the EmptyDir into the Pod''s container.'
+ properties:
+ directory:
+ description: Target directory name.
+ Must not contain or start with '..'. If
+ '.' is supplied, the volume directory
+ will be the git repository. Otherwise,
+ if specified, the volume will contain
+ the git repository in the subdirectory
+ with the given name.
+ type: string
+ repository:
+ description: Repository URL
+ type: string
+ revision:
+ description: Commit hash for the specified
+ revision.
+ type: string
+ required:
+ - repository
+ type: object
+ glusterfs:
+ description: 'Glusterfs represents a Glusterfs
+ mount on the host that shares a pod''s
+ lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'
+ properties:
+ endpoints:
+ description: 'EndpointsName is the
+ endpoint name that details Glusterfs
+ topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: string
+ path:
+ description: 'Path is the Glusterfs
+ volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force
+ the Glusterfs volume to be mounted
+ with read-only permissions. Defaults
+ to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: boolean
+ required:
+ - endpoints
+ - path
+ type: object
+ hostPath:
+ description: 'HostPath represents a pre-existing
+ file or directory on the host machine
+ that is directly exposed to the container.
+ This is generally used for system agents
+ or other privileged things that are
+ allowed to see the host machine. Most
+ containers will NOT need this. More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
+ ### TODO(jonesdl) We need to restrict
+ who can use host directory mounts and
+ who can/can not mount host directories
+ as read/write.'
+ properties:
+ path:
+ description: 'Path of the directory
+ on the host. If the path is a symlink,
+ it will follow the link to the real
+ path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+ type: string
+ type:
+ description: 'Type for HostPath Volume
+ Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+ type: string
+ required:
+ - path
+ type: object
+ iscsi:
+ description: 'ISCSI represents an ISCSI
+ Disk resource that is attached to a
+ kubelet''s host machine and then exposed
+ to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'
+ properties:
+ chapAuthDiscovery:
+ description: whether support iSCSI
+ Discovery CHAP authentication
+ type: boolean
+ chapAuthSession:
+ description: whether support iSCSI
+ Session CHAP authentication
+ type: boolean
+ fsType:
+ description: 'Filesystem type of the
+ volume that you want to mount. Tip:
+ Ensure that the filesystem type
+ is supported by the host operating
+ system. Examples: "ext4", "xfs",
+ "ntfs". Implicitly inferred to be
+ "ext4" if unspecified. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#iscsi
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ initiatorName:
+ description: Custom iSCSI Initiator
+ Name. If initiatorName is specified
+ with iscsiInterface simultaneously,
+ new iSCSI interface : will be created for the connection.
+ type: string
+ iqn:
+ description: Target iSCSI Qualified
+ Name.
+ type: string
+ iscsiInterface:
+ description: iSCSI Interface Name
+ that uses an iSCSI transport. Defaults
+ to 'default' (tcp).
+ type: string
+ lun:
+ description: iSCSI Target Lun number.
+ format: int32
+ type: integer
+ portals:
+ description: iSCSI Target Portal List.
+ The portal is either an IP or ip_addr:port
+ if the port is other than default
+ (typically TCP ports 860 and 3260).
+ items:
+ type: string
+ type: array
+ readOnly:
+ description: ReadOnly here will force
+ the ReadOnly setting in VolumeMounts.
+ Defaults to false.
+ type: boolean
+ secretRef:
+ description: CHAP Secret for iSCSI
+ target and initiator authentication
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ targetPortal:
+ description: iSCSI Target Portal.
+ The Portal is either an IP or ip_addr:port
+ if the port is other than default
+ (typically TCP ports 860 and 3260).
+ type: string
+ required:
+ - iqn
+ - lun
+ - targetPortal
+ type: object
+ name:
+ description: 'Volume''s name. Must be
+ a DNS_LABEL and unique within the pod.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ nfs:
+ description: 'NFS represents an NFS mount
+ on the host that shares a pod''s lifetime
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ properties:
+ path:
+ description: 'Path that is exported
+ by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force
+ the NFS export to be mounted with
+ read-only permissions. Defaults
+ to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: boolean
+ server:
+ description: 'Server is the hostname
+ or IP address of the NFS server.
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: string
+ required:
+ - path
+ - server
+ type: object
+ persistentVolumeClaim:
+ description: 'PersistentVolumeClaimVolumeSource
+ represents a reference to a PersistentVolumeClaim
+ in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+ properties:
+ claimName:
+ description: 'ClaimName is the name
+ of a PersistentVolumeClaim in the
+ same namespace as the pod using
+ this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+ type: string
+ readOnly:
+ description: Will force the ReadOnly
+ setting in VolumeMounts. Default
+ false.
+ type: boolean
+ required:
+ - claimName
+ type: object
+ photonPersistentDisk:
+ description: PhotonPersistentDisk represents
+ a PhotonController persistent disk attached
+ and mounted on kubelets host machine
+ properties:
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ type: string
+ pdID:
+ description: ID that identifies Photon
+ Controller persistent disk
+ type: string
+ required:
+ - pdID
+ type: object
+ portworxVolume:
+ description: PortworxVolume represents
+ a portworx volume attached and mounted
+ on kubelets host machine
+ properties:
+ fsType:
+ description: FSType represents the
+ filesystem type to mount Must be
+ a filesystem type supported by the
+ host operating system. Ex. "ext4",
+ "xfs". Implicitly inferred to be
+ "ext4" if unspecified.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ volumeID:
+ description: VolumeID uniquely identifies
+ a Portworx volume
+ type: string
+ required:
+ - volumeID
+ type: object
+ projected:
+ description: Items for all in one resources
+ secrets, configmaps, and downward API
+ properties:
+ defaultMode:
+ description: Mode bits to use on created
+ files by default. Must be a value
+ between 0 and 0777. Directories
+ within the path are not affected
+ by this setting. This might be in
+ conflict with other options that
+ affect the file mode, like fsGroup,
+ and the result can be other mode
+ bits set.
+ format: int32
+ type: integer
+ sources:
+ description: list of volume projections
+ items:
+ description: Projection that may
+ be projected along with other
+ supported volume types
+ properties:
+ configMap:
+ description: information about
+ the configMap data to project
+ properties:
+ items:
+ description: If unspecified,
+ each key-value pair in
+ the Data field of the
+ referenced ConfigMap will
+ be projected into the
+ volume as a file whose
+ name is the key and content
+ is the value. If specified,
+ the listed keys will be
+ projected into the specified
+ paths, and unlisted keys
+ will not be present. If
+ a key is specified which
+ is not present in the
+ ConfigMap, the volume
+ setup will error unless
+ it is marked optional.
+ Paths must be relative
+ and may not contain the
+ '..' path or start with
+ '..'.
+ items:
+ description: Maps a string
+ key to a path within
+ a volume.
+ properties:
+ key:
+ description: The key
+ to project.
+ type: string
+ mode:
+ description: 'Optional:
+ mode bits to use
+ on this file, must
+ be a value between
+ 0 and 0777. If not
+ specified, the volume
+ defaultMode will
+ be used. This might
+ be in conflict with
+ other options that
+ affect the file
+ mode, like fsGroup,
+ and the result can
+ be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative
+ path of the file
+ to map the key to.
+ May not be an absolute
+ path. May not contain
+ the path element
+ '..'. May not start
+ with the string
+ '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the
+ referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful
+ fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether
+ the ConfigMap or its keys
+ must be defined
+ type: boolean
+ type: object
+ downwardAPI:
+ description: information about
+ the downwardAPI data to project
+ properties:
+ items:
+ description: Items is a
+ list of DownwardAPIVolume
+ file
+ items:
+ description: DownwardAPIVolumeFile
+ represents information
+ to create the file containing
+ the pod field
+ properties:
+ fieldRef:
+ description: 'Required:
+ Selects a field
+ of the pod: only
+ annotations, labels,
+ name and namespace
+ are supported.'
+ properties:
+ apiVersion:
+ description: Version
+ of the schema
+ the FieldPath
+ is written in
+ terms of, defaults
+ to "v1".
+ type: string
+ fieldPath:
+ description: Path
+ of the field
+ to select in
+ the specified
+ API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ mode:
+ description: 'Optional:
+ mode bits to use
+ on this file, must
+ be a value between
+ 0 and 0777. If not
+ specified, the volume
+ defaultMode will
+ be used. This might
+ be in conflict with
+ other options that
+ affect the file
+ mode, like fsGroup,
+ and the result can
+ be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: 'Required:
+ Path is the relative
+ path name of the
+ file to be created.
+ Must not be absolute
+ or contain the ''..''
+ path. Must be utf-8
+ encoded. The first
+ item of the relative
+ path must not start
+ with ''..'''
+ type: string
+ resourceFieldRef:
+ description: 'Selects
+ a resource of the
+ container: only
+ resources limits
+ and requests (limits.cpu,
+ limits.memory, requests.cpu
+ and requests.memory)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container
+ name: required
+ for volumes,
+ optional for
+ env vars'
+ type: string
+ divisor:
+ description: Specifies
+ the output format
+ of the exposed
+ resources, defaults
+ to "1"
+ type: string
+ resource:
+ description: 'Required:
+ resource to
+ select'
+ type: string
+ required:
+ - resource
+ type: object
+ required:
+ - path
+ type: object
+ type: array
+ type: object
+ secret:
+ description: information about
+ the secret data to project
+ properties:
+ items:
+ description: If unspecified,
+ each key-value pair in
+ the Data field of the
+ referenced Secret will
+ be projected into the
+ volume as a file whose
+ name is the key and content
+ is the value. If specified,
+ the listed keys will be
+ projected into the specified
+ paths, and unlisted keys
+ will not be present. If
+ a key is specified which
+ is not present in the
+ Secret, the volume setup
+ will error unless it is
+ marked optional. Paths
+ must be relative and may
+ not contain the '..' path
+ or start with '..'.
+ items:
+ description: Maps a string
+ key to a path within
+ a volume.
+ properties:
+ key:
+ description: The key
+ to project.
+ type: string
+ mode:
+ description: 'Optional:
+ mode bits to use
+ on this file, must
+ be a value between
+ 0 and 0777. If not
+ specified, the volume
+ defaultMode will
+ be used. This might
+ be in conflict with
+ other options that
+ affect the file
+ mode, like fsGroup,
+ and the result can
+ be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative
+ path of the file
+ to map the key to.
+ May not be an absolute
+ path. May not contain
+ the path element
+ '..'. May not start
+ with the string
+ '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the
+ referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful
+ fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether
+ the Secret or its key
+ must be defined
+ type: boolean
+ type: object
+ serviceAccountToken:
+ description: information about
+ the serviceAccountToken data
+ to project
+ properties:
+ audience:
+ description: Audience is
+ the intended audience
+ of the token. A recipient
+ of a token must identify
+ itself with an identifier
+ specified in the audience
+ of the token, and otherwise
+ should reject the token.
+ The audience defaults
+ to the identifier of the
+ apiserver.
+ type: string
+ expirationSeconds:
+ description: ExpirationSeconds
+ is the requested duration
+ of validity of the service
+ account token. As the
+ token approaches expiration,
+ the kubelet volume plugin
+ will proactively rotate
+ the service account token.
+ The kubelet will start
+ trying to rotate the token
+ if the token is older
+ than 80 percent of its
+ time to live or if the
+ token is older than 24
+ hours.Defaults to 1 hour
+ and must be at least 10
+ minutes.
+ format: int64
+ type: integer
+ path:
+ description: Path is the
+ path relative to the mount
+ point of the file to project
+ the token into.
+ type: string
+ required:
+ - path
+ type: object
+ type: object
+ type: array
+ required:
+ - sources
+ type: object
+ quobyte:
+ description: Quobyte represents a Quobyte
+ mount on the host that shares a pod's
+ lifetime
+ properties:
+ group:
+ description: Group to map volume access
+ to Default is no group
+ type: string
+ readOnly:
+ description: ReadOnly here will force
+ the Quobyte volume to be mounted
+ with read-only permissions. Defaults
+ to false.
+ type: boolean
+ registry:
+ description: Registry represents a
+ single or multiple Quobyte Registry
+ services specified as a string as
+ host:port pair (multiple entries
+ are separated with commas) which
+ acts as the central registry for
+ volumes
+ type: string
+ tenant:
+ description: Tenant owning the given
+ Quobyte volume in the Backend Used
+ with dynamically provisioned Quobyte
+ volumes, value is set by the plugin
+ type: string
+ user:
+ description: User to map volume access
+ to Defaults to serivceaccount user
+ type: string
+ volume:
+ description: Volume is a string that
+ references an already created Quobyte
+ volume by name.
+ type: string
+ required:
+ - registry
+ - volume
+ type: object
+ rbd:
+ description: 'RBD represents a Rados Block
+ Device mount on the host that shares
+ a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'
+ properties:
+ fsType:
+ description: 'Filesystem type of the
+ volume that you want to mount. Tip:
+ Ensure that the filesystem type
+ is supported by the host operating
+ system. Examples: "ext4", "xfs",
+ "ntfs". Implicitly inferred to be
+ "ext4" if unspecified. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#rbd
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ image:
+ description: 'The rados image name.
+ More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ keyring:
+ description: 'Keyring is the path
+ to key ring for RBDUser. Default
+ is /etc/ceph/keyring. More info:
+ https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ monitors:
+ description: 'A collection of Ceph
+ monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ items:
+ type: string
+ type: array
+ pool:
+ description: 'The rados pool name.
+ Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force
+ the ReadOnly setting in VolumeMounts.
+ Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: boolean
+ secretRef:
+ description: 'SecretRef is name of
+ the authentication secret for RBDUser.
+ If provided overrides keyring. Default
+ is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ user:
+ description: 'The rados user name.
+ Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ required:
+ - image
+ - monitors
+ type: object
+ scaleIO:
+ description: ScaleIO represents a ScaleIO
+ persistent volume attached and mounted
+ on Kubernetes nodes.
+ properties:
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Default is
+ "xfs".
+ type: string
+ gateway:
+ description: The host address of the
+ ScaleIO API Gateway.
+ type: string
+ protectionDomain:
+ description: The name of the ScaleIO
+ Protection Domain for the configured
+ storage.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ secretRef:
+ description: SecretRef references
+ to the secret for ScaleIO user and
+ other sensitive information. If
+ this is not provided, Login operation
+ will fail.
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ sslEnabled:
+ description: Flag to enable/disable
+ SSL communication with Gateway,
+ default false
+ type: boolean
+ storageMode:
+ description: Indicates whether the
+ storage for a volume should be ThickProvisioned
+ or ThinProvisioned. Default is ThinProvisioned.
+ type: string
+ storagePool:
+ description: The ScaleIO Storage Pool
+ associated with the protection domain.
+ type: string
+ system:
+ description: The name of the storage
+ system as configured in ScaleIO.
+ type: string
+ volumeName:
+ description: The name of a volume
+ already created in the ScaleIO system
+ that is associated with this volume
+ source.
+ type: string
+ required:
+ - gateway
+ - secretRef
+ - system
+ type: object
+ secret:
+ description: 'Secret represents a secret
+ that should populate this volume. More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits
+ to use on created files by default.
+ Must be a value between 0 and 0777.
+ Defaults to 0644. Directories within
+ the path are not affected by this
+ setting. This might be in conflict
+ with other options that affect the
+ file mode, like fsGroup, and the
+ result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: If unspecified, each
+ key-value pair in the Data field
+ of the referenced Secret will be
+ projected into the volume as a file
+ whose name is the key and content
+ is the value. If specified, the
+ listed keys will be projected into
+ the specified paths, and unlisted
+ keys will not be present. If a key
+ is specified which is not present
+ in the Secret, the volume setup
+ will error unless it is marked optional.
+ Paths must be relative and may not
+ contain the '..' path or start with
+ '..'.
+ items:
+ description: Maps a string key to
+ a path within a volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode
+ bits to use on this file,
+ must be a value between 0
+ and 0777. If not specified,
+ the volume defaultMode will
+ be used. This might be in
+ conflict with other options
+ that affect the file mode,
+ like fsGroup, and the result
+ can be other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path
+ of the file to map the key
+ to. May not be an absolute
+ path. May not contain the
+ path element '..'. May not
+ start with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ optional:
+ description: Specify whether the Secret
+ or its keys must be defined
+ type: boolean
+ secretName:
+ description: 'Name of the secret in
+ the pod''s namespace to use. More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+ type: string
+ type: object
+ storageos:
+ description: StorageOS represents a StorageOS
+ volume attached and mounted on Kubernetes
+ nodes.
+ properties:
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ secretRef:
+ description: SecretRef specifies the
+ secret to use for obtaining the
+ StorageOS API credentials. If not
+ specified, default values will be
+ attempted.
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ volumeName:
+ description: VolumeName is the human-readable
+ name of the StorageOS volume. Volume
+ names are only unique within a namespace.
+ type: string
+ volumeNamespace:
+ description: VolumeNamespace specifies
+ the scope of the volume within StorageOS. If
+ no namespace is specified then the
+ Pod's namespace will be used. This
+ allows the Kubernetes name scoping
+ to be mirrored within StorageOS
+ for tighter integration. Set VolumeName
+ to any name to override the default
+ behaviour. Set to "default" if you
+ are not using namespaces within
+ StorageOS. Namespaces that do not
+ pre-exist within StorageOS will
+ be created.
+ type: string
+ type: object
+ vsphereVolume:
+ description: VsphereVolume represents
+ a vSphere volume attached and mounted
+ on kubelets host machine
+ properties:
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ type: string
+ storagePolicyID:
+ description: Storage Policy Based
+ Management (SPBM) profile ID associated
+ with the StoragePolicyName.
+ type: string
+ storagePolicyName:
+ description: Storage Policy Based
+ Management (SPBM) profile name.
+ type: string
+ volumePath:
+ description: Path that identifies
+ vSphere volume vmdk
+ type: string
+ required:
+ - volumePath
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ type: object
+ httpProbe/inputs:
+ type: object
+ required:
+ - url
+ - method
+ properties:
+ url:
+ type: string
+ minLength: 1
+ insecureSkipVerify:
+ type: boolean
+ method:
+ type: object
+ minProperties: 1
+ properties:
+ get:
+ type: object
+ required:
+ - criteria
+ - responseCode
+ properties:
+ criteria:
+ type: string
+ minLength: 1
+ responseCode:
+ type: string
+ minLength: 1
+ post:
+ type: object
+ required:
+ - criteria
+ - responseCode
+ properties:
+ contentType:
+ type: string
+ minLength: 1
+ body:
+ type: string
+ bodyPath:
+ type: string
+ criteria:
+ type: string
+ minLength: 1
+ responseCode:
+ type: string
+ minLength: 1
+ promProbe/inputs:
+ type: object
+ required:
+ - endpoint
+ - comparator
+ properties:
+ endpoint:
+ type: string
+ query:
+ type: string
+ queryPath:
+ type: string
+ comparator:
+ type: object
+ required:
+ - criteria
+ - value
+ properties:
+ criteria:
+ type: string
+ value:
+ type: string
+ runProperties:
+ type: object
+ minProperties: 2
+ required:
+ - probeTimeout
+ - interval
+ properties:
+ evaluationTimeout:
+ type: string
+ probeTimeout:
+ type: string
+ interval:
+ type: string
+ retry:
+ type: integer
+ attempt:
+ type: integer
+ probePollingInterval:
+ type: string
+ initialDelaySeconds:
+ type: integer
+ initialDelay:
+ type: string
+ stopOnFailure:
+ type: boolean
+ sloProbe/inputs:
+ description: inputs needed for the SLO probe
+ required:
+ - platformEndpoint
+ - sloIdentifier
+ - sloSourceMetadata
+ - comparator
+ properties:
+ comparator:
+ description: Comparator check for the correctness
+ of the probe output
+ required:
+ - criteria
+ - value
+ properties:
+ criteria:
+ description: Criteria for matching data it
+ supports >=, <=, ==, >, <, != for int and
+ float it supports equal, notEqual, contains
+ for string
+ type: string
+ type:
+ description: Type of data it can be int, float,
+ string
+ type: string
+ value:
+ description: Value contains relative value
+ for criteria
+ type: string
+ type: object
+ evaluationWindow:
+ description: EvaluationWindow is the time period
+ for which the metrics will be evaluated
+ properties:
+ evaluationEndTime:
+ description: End time of evaluation
+ type: integer
+ evaluationStartTime:
+ description: Start time of evaluation
+ type: integer
+ type: object
+ platformEndpoint:
+ description: PlatformEndpoint for the monitoring
+ service endpoint
+ type: string
+ insecureSkipVerify:
+ description: InsecureSkipVerify flag to skip certificate
+ checks
+ type: boolean
+ sloIdentifier:
+ description: SLOIdentifier for fetching the details
+ of the SLO
+ type: string
+ sloSourceMetadata:
+ description: SLOSourceMetadata consists of required
+ metadata details to fetch metric data
+ required:
+ - apiTokenSecret
+ - scope
+ properties:
+ apiTokenSecret:
+ description: APITokenSecret for authenticating
+ with the platform service
+ type: string
+ scope:
+ description: Scope required for fetching details
+ required:
+ - accountIdentifier
+ - orgIdentifier
+ - projectIdentifier
+ properties:
+ accountIdentifier:
+ description: AccountIdentifier for account
+ ID
+ type: string
+ orgIdentifier:
+ description: OrgIdentifier for organization
+ ID
+ type: string
+ projectIdentifier:
+ description: ProjectIdentifier for project
+ ID
+ type: string
+ type: object
+ type: object
+ type: object
+ mode:
+ type: string
+ pattern: ^(SOT|EOT|Edge|Continuous|OnChaos)$
+ minLength: 1
+ data:
+ type: string
+ components:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ properties:
+ statusCheckTimeouts:
+ type: object
+ properties:
+ delay:
+ type: integer
+ timeout:
+ type: integer
+ nodeSelector:
+ type: object
+ additionalProperties:
+ type: string
+ properties:
+ key:
+ type: string
+ minLength: 1
+ allowEmptyValue: false
+ value:
+ type: string
+ minLength: 1
+ allowEmptyValue: false
+ experimentImage:
+ type: string
+ env:
+ type: array
+ 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 previous 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.
+ The $(VAR_NAME) syntax can be escaped with a
+ double $$, ie: $$(VAR_NAME). Escaped references
+ will never be expanded, regardless of whether
+ the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's
+ value. Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod:
+ supports metadata.name, metadata.namespace,
+ metadata.labels, metadata.annotations, spec.nodeName,
+ spec.serviceAccountName, status.hostIP,
+ status.podIP.'
+ properties:
+ apiVersion:
+ description: Version of the schema the
+ FieldPath is written in terms of, defaults
+ to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select
+ in the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, limits.ephemeral-storage,
+ requests.cpu, requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required
+ for volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format
+ of the exposed resources, defaults to
+ "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in
+ the pod's namespace
+ properties:
+ key:
+ description: The key of the secret to
+ select from. Must be a valid secret
+ key.
+ type: string
+ name:
+ description: 'Name of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ configMaps:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ mountPath:
+ type: string
+ secrets:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ mountPath:
+ type: string
+ experimentAnnotations:
+ type: object
+ additionalProperties:
+ type: string
+ properties:
+ key:
+ type: string
+ minLength: 1
+ allowEmptyValue: false
+ value:
+ type: string
+ minLength: 1
+ allowEmptyValue: false
+ tolerations:
+ description: Pod's tolerations.
+ items:
+ description: The pod with this Toleration tolerates any taint matches the using the matching operator .
+ properties:
+ effect:
+ description: Effect to match. Empty means all effects.
+ type: string
+ key:
+ description: Taint key the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists.
+ type: string
+ operator:
+ description: Operators are Exists or Equal. Defaults to Equal.
+ type: string
+ tolerationSeconds:
+ description: Period of time the toleration tolerates the taint.
+ format: int64
+ type: integer
+ value:
+ description: If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+
+ status:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+ conversion:
+ strategy: None
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: chaosexperiments.litmuschaos.io
+spec:
+ group: litmuschaos.io
+ names:
+ kind: ChaosExperiment
+ listKind: ChaosExperimentList
+ plural: chaosexperiments
+ singular: chaosexperiment
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ type: object
+ 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/api-conventions.md#resources'
+ type: string
+ description:
+ type: object
+ additionalProperties:
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ status:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ spec:
+ type: object
+ properties:
+ definition:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ properties:
+ args:
+ type: array
+ items:
+ type: string
+ command:
+ type: array
+ items:
+ type: string
+ env:
+ type: array
+ items:
+ type: object
+ 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 previous 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.
+ The $(VAR_NAME) syntax can be escaped with a
+ double $$, ie: $$(VAR_NAME). Escaped references
+ will never be expanded, regardless of whether
+ the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's
+ value. Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod:
+ supports metadata.name, metadata.namespace,
+ metadata.labels, metadata.annotations, spec.nodeName,
+ spec.serviceAccountName, status.hostIP,
+ status.podIP.'
+ properties:
+ apiVersion:
+ description: Version of the schema the
+ FieldPath is written in terms of, defaults
+ to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select
+ in the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, limits.ephemeral-storage,
+ requests.cpu, requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required
+ for volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format
+ of the exposed resources, defaults to
+ "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in
+ the pod's namespace
+ properties:
+ key:
+ description: The key of the secret to
+ select from. Must be a valid secret
+ key.
+ type: string
+ name:
+ description: 'Name of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ image:
+ type: string
+ imagePullPolicy:
+ type: string
+ labels:
+ type: object
+ additionalProperties:
+ type: string
+ scope:
+ type: string
+ pattern: ^(Namespaced|Cluster)$
+ permissions:
+ type: array
+ items:
+ type: object
+ minProperties: 3
+ required:
+ - apiGroups
+ - resources
+ - verbs
+ properties:
+ apiGroups:
+ type: array
+ items:
+ type: string
+ resources:
+ type: array
+ items:
+ type: string
+ verbs:
+ type: array
+ items:
+ type: string
+ resourceNames:
+ type: array
+ items:
+ type: string
+ nonResourceURLs:
+ type: array
+ items:
+ type: string
+ configMaps:
+ type: array
+ items:
+ type: object
+ minProperties: 2
+ properties:
+ name:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ mountPath:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ secrets:
+ type: array
+ items:
+ type: object
+ minProperties: 2
+ properties:
+ name:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ mountPath:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ hostFileVolumes:
+ type: array
+ items:
+ type: object
+ minProperties: 3
+ properties:
+ name:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ mountPath:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ nodePath:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ securityContext:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ hostPID:
+ type: boolean
+
+ served: true
+ storage: true
+ subresources: {}
+ conversion:
+ strategy: None
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: chaosresults.litmuschaos.io
+spec:
+ group: litmuschaos.io
+ names:
+ kind: ChaosResult
+ listKind: ChaosResultList
+ plural: chaosresults
+ singular: chaosresult
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ type: object
+ 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/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ status:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+ conversion:
+ strategy: None
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.7.0
+ creationTimestamp: null
+ name: eventtrackerpolicies.eventtracker.litmuschaos.io
+spec:
+ group: eventtracker.litmuschaos.io
+ names:
+ kind: EventTrackerPolicy
+ listKind: EventTrackerPolicyList
+ plural: eventtrackerpolicies
+ singular: eventtrackerpolicy
+ scope: Namespaced
+ versions:
+ - name: v1
+ schema:
+ openAPIV3Schema:
+ description: EventTrackerPolicy is the Schema for the eventtrackerpolicies
+ API
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: EventTrackerPolicySpec defines the desired state of EventTrackerPolicy
+ properties:
+ condition_type:
+ type: string
+ conditions:
+ items:
+ properties:
+ key:
+ type: string
+ operator:
+ type: string
+ value:
+ type: string
+ type: object
+ type: array
+ type: object
+ statuses:
+ items:
+ description: EventTrackerPolicyStatus defines the observed state of
+ EventTrackerPolicy
+ properties:
+ is_triggered:
+ type: string
+ resource:
+ type: string
+ resource_name:
+ type: string
+ result:
+ type: string
+ time_stamp:
+ description: 'INSERT ADDITIONAL STATUS FIELD - define observed state
+ of cluster Important: Run "make" to regenerate code after modifying
+ this file'
+ type: string
+ workflow_id:
+ type: string
+ type: object
+ type: array
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
\ No newline at end of file
diff --git a/mkdocs/docs/3.10.0/litmus-without-resources.yaml b/mkdocs/docs/3.10.0/litmus-without-resources.yaml
new file mode 100644
index 00000000000..751c6389bc4
--- /dev/null
+++ b/mkdocs/docs/3.10.0/litmus-without-resources.yaml
@@ -0,0 +1,420 @@
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: litmus-portal-admin-secret
+stringData:
+ DB_USER: "root"
+ DB_PASSWORD: "1234"
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: litmus-portal-admin-config
+data:
+ DB_SERVER: mongodb://my-release-mongodb-0.my-release-mongodb-headless:27017,my-release-mongodb-1.my-release-mongodb-headless:27017,my-release-mongodb-2.my-release-mongodb-headless:27017/admin
+ VERSION: "3.10.0"
+ SKIP_SSL_VERIFY: "false"
+ # Configurations if you are using dex for OAuth
+ DEX_ENABLED: "false"
+ OIDC_ISSUER: "http://:32000"
+ DEX_OAUTH_CALLBACK_URL: "http://:8080/auth/dex/callback"
+ DEX_OAUTH_CLIENT_ID: "LitmusPortalAuthBackend"
+ DEX_OAUTH_CLIENT_SECRET: "ZXhhbXBsZS1hcHAtc2VjcmV0"
+ OAuthJwtSecret: "litmus-oauth@123"
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: litmusportal-frontend-nginx-configuration
+data:
+ nginx.conf: |
+ pid /tmp/nginx.pid;
+
+ events {
+ worker_connections 1024;
+ }
+
+ http {
+ map $http_upgrade $connection_upgrade {
+ default upgrade;
+ '' close;
+ }
+
+ client_body_temp_path /tmp/client_temp;
+ proxy_temp_path /tmp/proxy_temp_path;
+ fastcgi_temp_path /tmp/fastcgi_temp;
+ uwsgi_temp_path /tmp/uwsgi_temp;
+ scgi_temp_path /tmp/scgi_temp;
+
+ sendfile on;
+ tcp_nopush on;
+ tcp_nodelay on;
+ keepalive_timeout 65;
+ types_hash_max_size 2048;
+ server_tokens off;
+
+ include /etc/nginx/mime.types;
+
+ gzip on;
+ gzip_disable "msie6";
+
+ access_log /var/log/nginx/access.log;
+ error_log /var/log/nginx/error.log;
+
+ server {
+ listen 8185 ssl;
+ ssl_certificate /etc/tls/tls.crt;
+ ssl_certificate_key /etc/tls/tls.key;
+ ssl_protocols TLSv1.2 TLSv1.3;
+ ssl_client_certificate /etc/tls/ca.crt;
+ ssl_ciphers HIGH:!aNULL:!MD5;
+ ssl_prefer_server_ciphers on;
+ ssl_session_cache shared:SSL:10m;
+
+ root /opt/chaos;
+
+ location /health {
+ return 200;
+ }
+
+ location / {
+ proxy_http_version 1.1;
+ add_header Cache-Control "no-cache";
+ try_files $uri /index.html;
+ autoindex on;
+ }
+
+ # redirect server error pages to the static page /50x.html
+ #
+ error_page 500 502 503 504 /50x.html;
+ location = /50x.html {
+ root /usr/share/nginx/html;
+ }
+
+ location /auth/ {
+ proxy_ssl_verify off;
+ proxy_ssl_session_reuse on;
+ proxy_http_version 1.1;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_pass "https://litmusportal-auth-server-service:9005/";
+ proxy_ssl_certificate /etc/tls/tls.crt;
+ proxy_ssl_certificate_key /etc/tls/tls.key;
+ }
+
+ location /api/ {
+ proxy_ssl_verify off;
+ proxy_ssl_session_reuse on;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection $connection_upgrade;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_pass "https://litmusportal-server-service:9004/";
+ proxy_ssl_certificate /etc/tls/tls.crt;
+ proxy_ssl_certificate_key /etc/tls/tls.key;
+ }
+ }
+ }
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: litmusportal-frontend
+ labels:
+ component: litmusportal-frontend
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ component: litmusportal-frontend
+ template:
+ metadata:
+ labels:
+ component: litmusportal-frontend
+ spec:
+ automountServiceAccountToken: false
+ containers:
+ - name: litmusportal-frontend
+ image: litmuschaos/litmusportal-frontend:3.10.0
+ # securityContext:
+ # runAsUser: 2000
+ # allowPrivilegeEscalation: false
+ # runAsNonRoot: true
+ imagePullPolicy: Always
+ ports:
+ - containerPort: 8185
+ volumeMounts:
+ - name: nginx-config
+ mountPath: /etc/nginx/nginx.conf
+ subPath: nginx.conf
+ - mountPath: /etc/tls
+ name: tls-secret
+ volumes:
+ - name: nginx-config
+ configMap:
+ name: litmusportal-frontend-nginx-configuration
+ - name: tls-secret
+ secret:
+ secretName: tls-secret
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: litmusportal-frontend-service
+spec:
+ type: NodePort
+ ports:
+ - name: http
+ port: 9091
+ targetPort: 8185
+ selector:
+ component: litmusportal-frontend
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: litmusportal-server
+ labels:
+ component: litmusportal-server
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ component: litmusportal-server
+ template:
+ metadata:
+ labels:
+ component: litmusportal-server
+ spec:
+ automountServiceAccountToken: false
+ volumes:
+ - name: gitops-storage
+ emptyDir: {}
+ - name: hub-storage
+ emptyDir: {}
+ - name: tls-secret
+ secret:
+ secretName: tls-secret
+ containers:
+ - name: graphql-server
+ image: litmuschaos/litmusportal-server:3.10.0
+ volumeMounts:
+ - mountPath: /tmp/
+ name: gitops-storage
+ - mountPath: /tmp/version
+ name: hub-storage
+ - mountPath: /etc/tls
+ name: tls-secret
+ securityContext:
+ runAsUser: 2000
+ allowPrivilegeEscalation: false
+ runAsNonRoot: true
+ readOnlyRootFilesystem: true
+ envFrom:
+ - configMapRef:
+ name: litmus-portal-admin-config
+ - secretRef:
+ name: litmus-portal-admin-secret
+ env:
+ # if self-signed certificate are used pass the base64 tls certificate, to allow agents to use tls for communication
+ - name: TLS_CERT_B64
+ value: ""
+ - name: ENABLE_GQL_INTROSPECTION
+ value: "false"
+ - name: INFRA_DEPLOYMENTS
+ value: '["app=chaos-exporter", "name=chaos-operator", "app=workflow-controller", "app=event-tracker"]'
+ - name: CHAOS_CENTER_UI_ENDPOINT
+ value: ""
+ - name: SUBSCRIBER_IMAGE
+ value: "litmuschaos/litmusportal-subscriber:3.10.0"
+ - name: EVENT_TRACKER_IMAGE
+ value: "litmuschaos/litmusportal-event-tracker:3.10.0"
+ - name: ARGO_WORKFLOW_CONTROLLER_IMAGE
+ value: "litmuschaos/workflow-controller:v3.3.1"
+ - name: ARGO_WORKFLOW_EXECUTOR_IMAGE
+ value: "litmuschaos/argoexec:v3.3.1"
+ - name: LITMUS_CHAOS_OPERATOR_IMAGE
+ value: "litmuschaos/chaos-operator:3.10.0"
+ - name: LITMUS_CHAOS_RUNNER_IMAGE
+ value: "litmuschaos/chaos-runner:3.10.0"
+ - name: LITMUS_CHAOS_EXPORTER_IMAGE
+ value: "litmuschaos/chaos-exporter:3.10.0"
+ - name: CONTAINER_RUNTIME_EXECUTOR
+ value: "k8sapi"
+ - name: DEFAULT_HUB_BRANCH_NAME
+ value: "3.10.x"
+ - name: LITMUS_AUTH_GRPC_ENDPOINT
+ value: "litmusportal-auth-server-service"
+ - name: LITMUS_AUTH_GRPC_PORT
+ value: "3030"
+ - name: WORKFLOW_HELPER_IMAGE_VERSION
+ value: "3.10.0"
+ - name: REMOTE_HUB_MAX_SIZE
+ value: "5000000"
+ - name: INFRA_COMPATIBLE_VERSIONS
+ value: '["3.10.0"]'
+ - name: ALLOWED_ORIGINS
+ value: ".*" #eg: ^(http://|https://|)litmuschaos.io(:[0-9]+|)?,^(http://|https://|)litmusportal-server-service(:[0-9]+|)?
+ - name: ENABLE_INTERNAL_TLS
+ value: "true"
+ - name: TLS_CERT_PATH
+ value: "/etc/tls/tls.crt"
+ - name: TLS_KEY_PATH
+ value: "/etc/tls/tls.key"
+ - name: CA_CERT_TLS_PATH
+ value: "/etc/tls/ca.crt"
+ - name: REST_PORT
+ value: "8081"
+ - name: GRPC_PORT
+ value: "8001"
+ ports:
+ - containerPort: 8081
+ - containerPort: 8001
+ imagePullPolicy: Always
+---
+kind: NetworkPolicy
+apiVersion: networking.k8s.io/v1
+metadata:
+ name: litmusportal-server
+ namespace: litmus
+ labels:
+ component: litmusportal-server
+spec:
+ policyTypes:
+ - Ingress
+ podSelector:
+ matchLabels:
+ component: litmusportal-server
+ ingress:
+ - from:
+ - podSelector:
+ matchLabels:
+ component: litmusportal-frontend
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: litmusportal-server-service
+spec:
+ type: NodePort
+ ports:
+ - name: graphql-server-https
+ port: 9004
+ targetPort: 8081
+ - name: graphql-rpc-server-https
+ port: 8001
+ targetPort: 8001
+ selector:
+ component: litmusportal-server
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: litmusportal-auth-server
+ labels:
+ component: litmusportal-auth-server
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ component: litmusportal-auth-server
+ template:
+ metadata:
+ labels:
+ component: litmusportal-auth-server
+ spec:
+ volumes:
+ - name: tls-secret
+ secret:
+ secretName: tls-secret
+ automountServiceAccountToken: false
+ containers:
+ - name: auth-server
+ volumeMounts:
+ - mountPath: /etc/tls
+ name: tls-secret
+ image: litmuschaos/litmusportal-auth-server:3.10.0
+ securityContext:
+ runAsUser: 2000
+ allowPrivilegeEscalation: false
+ runAsNonRoot: true
+ readOnlyRootFilesystem: true
+ envFrom:
+ - configMapRef:
+ name: litmus-portal-admin-config
+ - secretRef:
+ name: litmus-portal-admin-secret
+ env:
+ - name: STRICT_PASSWORD_POLICY
+ value: "false"
+ - name: ADMIN_USERNAME
+ value: "admin"
+ - name: ADMIN_PASSWORD
+ value: "litmus"
+ - name: LITMUS_GQL_GRPC_ENDPOINT
+ value: "litmusportal-server-service"
+ - name: LITMUS_GQL_GRPC_PORT
+ value: "8000"
+ - name: ALLOWED_ORIGINS
+ value: "^(http://|https://|)litmuschaos.io(:[0-9]+|)?,^(http://|https://|)litmusportal-server-service(:[0-9]+|)?" #ip needs to added here
+ - name: ENABLE_INTERNAL_TLS
+ value: "true"
+ - name: TLS_CERT_PATH
+ value: "/etc/tls/tls.crt"
+ - name: TLS_KEY_PATH
+ value: "/etc/tls/ctls.key"
+ - name: CA_CERT_TLS_PATH
+ value: "/etc/tls/ca.crt"
+ - name: REST_PORT
+ value: "3001"
+ - name: GRPC_PORT
+ value: "3031"
+ ports:
+ - containerPort: 3001
+ - containerPort: 3031
+ imagePullPolicy: Always
+---
+kind: NetworkPolicy
+apiVersion: networking.k8s.io/v1
+metadata:
+ name: litmusportal-auth-server
+ namespace: litmus
+ labels:
+ component: litmusportal-auth-server
+spec:
+ policyTypes:
+ - Ingress
+ podSelector:
+ matchLabels:
+ component: litmusportal-auth-server
+ ingress:
+ - from:
+ - podSelector:
+ matchLabels:
+ component: litmusportal-frontend
+ - from:
+ - podSelector:
+ matchLabels:
+ component: litmusportal-server
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: litmusportal-auth-server-service
+spec:
+ type: NodePort
+ ports:
+ - name: auth-server-https
+ port: 9005
+ targetPort: 3001
+ - name: auth-rpc-server-https
+ port: 3031
+ targetPort: 3031
+ selector:
+ component: litmusportal-auth-server
diff --git a/mkdocs/docs/auth/v3.0.0/auth-api.json b/mkdocs/docs/auth/v3.0.0/auth-api.json
index 896ee957003..737a5b20613 100644
--- a/mkdocs/docs/auth/v3.0.0/auth-api.json
+++ b/mkdocs/docs/auth/v3.0.0/auth-api.json
@@ -4,7 +4,7 @@
"schemes": ["https", "http"],
"info": {
"title": "Litmus Portal Authentication API",
- "version": "2.7.0",
+ "version": "3.0.0",
"description": "Litmus Portal Authentication APIs are used to authenticate the identity of a user and to perform several user-specific tasks like:\n
Update Profile
\n
Change Password
\n
Reset Password
\n
Create new users etc.
\n"
},
"paths": {
diff --git a/mkdocs/docs/auth/v3.9.0/auth-api.json b/mkdocs/docs/auth/v3.9.0/auth-api.json
index 792b86e92c7..272de059a13 100644
--- a/mkdocs/docs/auth/v3.9.0/auth-api.json
+++ b/mkdocs/docs/auth/v3.9.0/auth-api.json
@@ -7,7 +7,7 @@
],
"info": {
"title": "Litmus Portal Authentication API",
- "version": "2.7.0",
+ "version": "3.9.0",
"description": "Litmus Portal Authentication APIs are used to authenticate the identity of a user and to perform several user-specific tasks like:\n
Update Profile
\n
Change Password
\n
Reset Password
\n
Create new users etc.
\n"
},
"paths": {
diff --git a/mkdocs/docs/chaos-scheduler-v3.10.0.yaml b/mkdocs/docs/chaos-scheduler-v3.10.0.yaml
new file mode 100644
index 00000000000..d96b32d1cd6
--- /dev/null
+++ b/mkdocs/docs/chaos-scheduler-v3.10.0.yaml
@@ -0,0 +1,2750 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: litmus
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: scheduler
+ namespace: litmus
+ labels:
+ name: scheduler
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: scheduler
+ labels:
+ name: scheduler
+rules:
+- apiGroups: [""]
+ resources: ["pods","events", "configmaps","services"]
+ verbs: ["create","get","list","delete","update","patch"]
+- apiGroups: ["apps"]
+ resources: ["replicasets","deployments"]
+ verbs: ["get","list"]
+- apiGroups: ["litmuschaos.io"]
+ resources: ["chaosengines","chaosschedules"]
+ verbs: ["get","create","update","patch","delete","list","watch","deletecollection"]
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: scheduler
+ labels:
+ name: scheduler
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: scheduler
+subjects:
+- kind: ServiceAccount
+ name: scheduler
+ namespace: litmus
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: chaos-scheduler
+ namespace: litmus
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ name: chaos-scheduler
+ template:
+ metadata:
+ labels:
+ name: chaos-scheduler
+ spec:
+ serviceAccountName: scheduler
+ containers:
+ - name: chaos-scheduler
+ image: litmuschaos.docker.scarf.sh/litmuschaos/chaos-scheduler:3.10.0
+ command:
+ - chaos-scheduler
+ imagePullPolicy: Always
+ env:
+ - name: WATCH_NAMESPACE
+ - name: POD_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.name
+ - name: OPERATOR_NAME
+ value: "chaos-scheduler"
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: chaosschedules.litmuschaos.io
+spec:
+ group: litmuschaos.io
+ names:
+ kind: ChaosSchedule
+ listKind: ChaosScheduleList
+ plural: chaosschedules
+ singular: chaosschedule
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ type: object
+ 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/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ properties:
+ engineTemplateSpec:
+ type: object
+ properties:
+ jobCleanUpPolicy:
+ type: string
+ pattern: ^(delete|retain)$
+ # alternate ways to do this in case of complex pattern matches
+ #oneOf:
+ # - pattern: '^delete$'
+ # - pattern: '^retain$'
+ defaultHealthCheck:
+ type: boolean
+ appinfo:
+ type: object
+ properties:
+ appkind:
+ type: string
+ pattern: ^(^$|deployment|statefulset|daemonset|deploymentconfig|rollout)$
+ applabel:
+ type: string
+ appns:
+ type: string
+ selectors:
+ type: object
+ properties:
+ pods:
+ items:
+ properties:
+ names:
+ type: string
+ namespace:
+ type: string
+ required:
+ - names
+ - namespace
+ type: object
+ type: array
+ workloads:
+ items:
+ properties:
+ kind:
+ type: string
+ pattern: ^(^$|deployment|statefulset|daemonset|deploymentconfig|rollout)$
+ labels:
+ type: string
+ names:
+ type: string
+ namespace:
+ type: string
+ oneOf:
+ - required: [ names ]
+ - required: [ labels ]
+ required:
+ - kind
+ - namespace
+ type: object
+ type: array
+ oneOf:
+ - required: [ pods ]
+ - required: [ workloads ]
+ auxiliaryAppInfo:
+ type: string
+ engineState:
+ type: string
+ pattern: ^(active|stop)$
+ chaosServiceAccount:
+ type: string
+ terminationGracePeriodSeconds:
+ type: integer
+ components:
+ type: object
+ properties:
+ sidecar:
+ type: array
+ items:
+ type: object
+ properties:
+ env:
+ description: ENV contains ENV passed to the sidecar container
+ 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 previous 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.
+ The $(VAR_NAME) syntax can be escaped with a double
+ $$, ie: $$(VAR_NAME). Escaped references will never
+ be expanded, regardless of whether the variable
+ exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's
+ value. Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports
+ metadata.name, metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in
+ the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, limits.ephemeral-storage, requests.cpu,
+ requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for
+ volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of
+ the exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the
+ pod's namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or
+ its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ envFrom:
+ description: EnvFrom for the sidecar container
+ items:
+ description: EnvFromSource represents the source of a
+ set of ConfigMaps
+ properties:
+ configMapRef:
+ description: The ConfigMap to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap must
+ be defined
+ type: boolean
+ type: object
+ prefix:
+ description: An optional identifier to prepend to
+ each key in the ConfigMap. Must be a C_IDENTIFIER.
+ type: string
+ secretRef:
+ description: The Secret to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret must be
+ defined
+ type: boolean
+ type: object
+ type: object
+ type: array
+ image:
+ type: string
+ imagePullPolicy:
+ type: string
+ secrets:
+ items:
+ properties:
+ mountPath:
+ type: string
+ name:
+ type: string
+ required:
+ - mountPath
+ - name
+ type: object
+ type: array
+ runner:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ properties:
+ image:
+ type: string
+ type:
+ type: string
+ pattern: ^(go)$
+ runnerAnnotations:
+ type: object
+ runnerLabels:
+ type: object
+ additionalProperties:
+ type: string
+ properties:
+ key:
+ type: string
+ minLength: 1
+ value:
+ type: string
+ minLength: 1
+ tolerations:
+ description: Pod's tolerations.
+ items:
+ description: The pod with this Toleration tolerates any taint matches the using the matching operator .
+ properties:
+ effect:
+ description: Effect to match. Empty means all effects.
+ type: string
+ key:
+ description: Taint key the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists.
+ type: string
+ operator:
+ description: Operators are Exists or Equal. Defaults to Equal.
+ type: string
+ tolerationSeconds:
+ description: Period of time the toleration tolerates the taint.
+ format: int64
+ type: integer
+ value:
+ description: If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ experiments:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ spec:
+ type: object
+ properties:
+ probe:
+ type: array
+ items:
+ type: object
+ required:
+ - name
+ - type
+ - mode
+ - runProperties
+ properties:
+ name:
+ type: string
+ type:
+ type: string
+ minLength: 1
+ pattern: ^(k8sProbe|httpProbe|cmdProbe|promProbe|sloProbe)$
+ k8sProbe/inputs:
+ type: object
+ required:
+ - version
+ - resource
+ - operation
+ properties:
+ group:
+ type: string
+ version:
+ type: string
+ resource:
+ type: string
+ namespace:
+ type: string
+ resourceNames:
+ type: string
+ fieldSelector:
+ type: string
+ labelSelector:
+ type: string
+ operation:
+ type: string
+ pattern: ^(present|absent|create|delete)$
+ minLength: 1
+ cmdProbe/inputs:
+ type: object
+ required:
+ - command
+ - comparator
+ properties:
+ command:
+ type: string
+ minLength: 1
+ comparator:
+ type: object
+ required:
+ - type
+ - criteria
+ - value
+ properties:
+ type:
+ type: string
+ minLength: 1
+ pattern: ^(int|float|string)$
+ criteria:
+ type: string
+ value:
+ type: string
+ source:
+ description: The external pod where we have to run the
+ probe commands. It will run the commands inside the experiment pod itself(inline mode) if source contains a nil value
+ required:
+ - image
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations for the source pod
+ type: object
+ args:
+ description: Args for the source pod
+ items:
+ type: string
+ type: array
+ command:
+ description: Command for the source pod
+ items:
+ type: string
+ type: array
+ env:
+ description: ENVList contains ENV passed to
+ the source pod
+ 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 previous 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. The $(VAR_NAME) syntax can
+ be escaped with a double $$, ie: $$(VAR_NAME).
+ Escaped references will never be expanded,
+ regardless of whether the variable exists
+ or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment
+ variable's value. Cannot be used if
+ value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the
+ ConfigMap or its key must be
+ defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the
+ pod: supports metadata.name, metadata.namespace,
+ metadata.labels, metadata.annotations,
+ spec.nodeName, spec.serviceAccountName,
+ status.hostIP, status.podIP.'
+ properties:
+ apiVersion:
+ description: Version of the schema
+ the FieldPath is written in
+ terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field
+ to select in the specified API
+ version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of
+ the container: only resources limits
+ and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu,
+ requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name:
+ required for volumes, optional
+ for env vars'
+ type: string
+ divisor:
+ description: Specifies the output
+ format of the exposed resources,
+ defaults to "1"
+ type: string
+ resource:
+ description: 'Required: resource
+ to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret
+ in the pod's namespace
+ properties:
+ key:
+ description: The key of the secret
+ to select from. Must be a valid
+ secret key.
+ type: string
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the
+ Secret or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ hostNetwork:
+ description: HostNetwork define the hostNetwork
+ of the external pod it supports boolean values
+ and default value is false
+ type: boolean
+ inheritInputs:
+ description: InheritInputs define to inherit experiment
+ details in probe pod it supports boolean values
+ and default value is false.
+ type: boolean
+ image:
+ description: Image for the source pod
+ type: string
+ imagePullPolicy:
+ description: ImagePullPolicy for the source pod
+ type: string
+ imagePullSecrets:
+ description: ImagePullSecrets for source 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'
+ type: string
+ type: object
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ description: Labels for the source pod
+ type: object
+ nodeSelector:
+ additionalProperties:
+ type: string
+ description: NodeSelector for the source pod
+ type: object
+ tolerations:
+ description: Tolerations for the source pod
+ items:
+ description: The pod with this Toleration tolerates any taint matches the using the matching operator .
+ properties:
+ effect:
+ description: Effect to match. Empty means all effects.
+ type: string
+ key:
+ description: Taint key the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists.
+ type: string
+ operator:
+ description: Operators are Exists or Equal. Defaults to Equal.
+ type: string
+ tolerationSeconds:
+ description: Period of time the toleration tolerates the taint.
+ format: int64
+ type: integer
+ value:
+ description: If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ privileged:
+ description: Privileged for the source pod
+ type: boolean
+ volumeMount:
+ description: VolumesMount for the source pod
+ 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.
+ type: string
+ name:
+ description: This must match the Name
+ of a Volume.
+ type: string
+ readOnly:
+ description: Mounted read-only if true,
+ read-write otherwise (false or unspecified).
+ Defaults to false.
+ type: boolean
+ subPath:
+ description: Path within the volume from
+ which the container's volume should
+ be mounted. Defaults to "" (volume's
+ root).
+ type: string
+ subPathExpr:
+ description: Expanded path within the
+ volume from which the container's volume
+ should be mounted. Behaves similarly
+ to SubPath but environment variable
+ references $(VAR_NAME) are expanded
+ using the container's environment. Defaults
+ to "" (volume's root). SubPathExpr and
+ SubPath are mutually exclusive. This
+ field is beta in 1.15.
+ type: string
+ required:
+ - mountPath
+ - name
+ type: object
+ type: array
+ volumes:
+ description: Volumes for the source pod
+ items:
+ description: Volume represents a named volume
+ in a pod that may be accessed by any container
+ in the pod.
+ properties:
+ awsElasticBlockStore:
+ description: 'AWSElasticBlockStore represents
+ an AWS Disk resource that is attached
+ to a kubelet''s host machine and then
+ exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ properties:
+ fsType:
+ description: 'Filesystem type of the
+ volume that you want to mount. Tip:
+ Ensure that the filesystem type
+ is supported by the host operating
+ system. Examples: "ext4", "xfs",
+ "ntfs". Implicitly inferred to be
+ "ext4" if unspecified. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ partition:
+ description: 'The partition in the
+ volume that you want to mount. If
+ omitted, the default is to mount
+ by volume name. Examples: For volume
+ /dev/sda1, you specify the partition
+ as "1". Similarly, the volume partition
+ for /dev/sda is "0" (or you can
+ leave the property empty).'
+ format: int32
+ type: integer
+ readOnly:
+ description: 'Specify "true" to force
+ and set the ReadOnly property in
+ VolumeMounts to "true". If omitted,
+ the default is "false". More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ type: boolean
+ volumeID:
+ description: 'Unique ID of the persistent
+ disk resource in AWS (Amazon EBS
+ volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ type: string
+ required:
+ - volumeID
+ type: object
+ azureDisk:
+ description: AzureDisk represents an Azure
+ Data Disk mount on the host and bind
+ mount to the pod.
+ properties:
+ cachingMode:
+ description: 'Host Caching mode: None,
+ Read Only, Read Write.'
+ type: string
+ diskName:
+ description: The Name of the data
+ disk in the blob storage
+ type: string
+ diskURI:
+ description: The URI the data disk
+ in the blob storage
+ type: string
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ type: string
+ kind:
+ description: 'Expected values Shared:
+ multiple blob disks per storage
+ account Dedicated: single blob
+ disk per storage account Managed:
+ azure managed data disk (only in
+ managed availability set). defaults
+ to shared'
+ type: string
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ required:
+ - diskName
+ - diskURI
+ type: object
+ azureFile:
+ description: AzureFile represents an Azure
+ File Service mount on the host and bind
+ mount to the pod.
+ properties:
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ secretName:
+ description: the name of secret that
+ contains Azure Storage Account Name
+ and Key
+ type: string
+ shareName:
+ description: Share Name
+ type: string
+ required:
+ - secretName
+ - shareName
+ type: object
+ cephfs:
+ description: CephFS represents a Ceph
+ FS mount on the host that shares a pod's
+ lifetime
+ properties:
+ monitors:
+ description: 'Required: Monitors is
+ a collection of Ceph monitors More
+ info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ items:
+ type: string
+ type: array
+ path:
+ description: 'Optional: Used as the
+ mounted root, rather than the full
+ Ceph tree, default is /'
+ type: string
+ readOnly:
+ description: 'Optional: Defaults to
+ false (read/write). ReadOnly here
+ will force the ReadOnly setting
+ in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: boolean
+ secretFile:
+ description: 'Optional: SecretFile
+ is the path to key ring for User,
+ default is /etc/ceph/user.secret
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: string
+ secretRef:
+ description: 'Optional: SecretRef
+ is reference to the authentication
+ secret for User, default is empty.
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ user:
+ description: 'Optional: User is the
+ rados user name, default is admin
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: string
+ required:
+ - monitors
+ type: object
+ cinder:
+ description: 'Cinder represents a cinder
+ volume attached and mounted on kubelets
+ host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ properties:
+ fsType:
+ description: 'Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: string
+ readOnly:
+ description: 'Optional: Defaults to
+ false (read/write). ReadOnly here
+ will force the ReadOnly setting
+ in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: boolean
+ secretRef:
+ description: 'Optional: points to
+ a secret object containing parameters
+ used to connect to OpenStack.'
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ volumeID:
+ description: 'volume id used to identify
+ the volume in cinder. More info:
+ https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: string
+ required:
+ - volumeID
+ type: object
+ configMap:
+ description: ConfigMap represents a configMap
+ that should populate this volume
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits
+ to use on created files by default.
+ Must be a value between 0 and 0777.
+ Defaults to 0644. Directories within
+ the path are not affected by this
+ setting. This might be in conflict
+ with other options that affect the
+ file mode, like fsGroup, and the
+ result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: If unspecified, each
+ key-value pair in the Data field
+ of the referenced ConfigMap will
+ be projected into the volume as
+ a file whose name is the key and
+ content is the value. If specified,
+ the listed keys will be projected
+ into the specified paths, and unlisted
+ keys will not be present. If a key
+ is specified which is not present
+ in the ConfigMap, the volume setup
+ will error unless it is marked optional.
+ Paths must be relative and may not
+ contain the '..' path or start with
+ '..'.
+ items:
+ description: Maps a string key to
+ a path within a volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode
+ bits to use on this file,
+ must be a value between 0
+ and 0777. If not specified,
+ the volume defaultMode will
+ be used. This might be in
+ conflict with other options
+ that affect the file mode,
+ like fsGroup, and the result
+ can be other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path
+ of the file to map the key
+ to. May not be an absolute
+ path. May not contain the
+ path element '..'. May not
+ start with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its keys must be defined
+ type: boolean
+ type: object
+ csi:
+ description: CSI (Container Storage Interface)
+ represents storage that is handled by
+ an external CSI driver (Alpha feature).
+ properties:
+ driver:
+ description: Driver is the name of
+ the CSI driver that handles this
+ volume. Consult with your admin
+ for the correct name as registered
+ in the cluster.
+ type: string
+ fsType:
+ description: Filesystem type to mount.
+ Ex. "ext4", "xfs", "ntfs". If not
+ provided, the empty value is passed
+ to the associated CSI driver which
+ will determine the default filesystem
+ to apply.
+ type: string
+ nodePublishSecretRef:
+ description: NodePublishSecretRef
+ is a reference to the secret object
+ containing sensitive information
+ to pass to the CSI driver to complete
+ the CSI NodePublishVolume and NodeUnpublishVolume
+ calls. This field is optional, and may
+ be empty if no secret is required.
+ If the secret object contains more
+ than one secret, all secret references
+ are passed.
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ readOnly:
+ description: Specifies a read-only
+ configuration for the volume. Defaults
+ to false (read/write).
+ type: boolean
+ volumeAttributes:
+ additionalProperties:
+ type: string
+ description: VolumeAttributes stores
+ driver-specific properties that
+ are passed to the CSI driver. Consult
+ your driver's documentation for
+ supported values.
+ type: object
+ required:
+ - driver
+ type: object
+ downwardAPI:
+ description: DownwardAPI represents downward
+ API about the pod that should populate
+ this volume
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits
+ to use on created files by default.
+ Must be a value between 0 and 0777.
+ Defaults to 0644. Directories within
+ the path are not affected by this
+ setting. This might be in conflict
+ with other options that affect the
+ file mode, like fsGroup, and the
+ result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: Items is a list of downward
+ API volume file
+ items:
+ description: DownwardAPIVolumeFile
+ represents information to create
+ the file containing the pod field
+ properties:
+ fieldRef:
+ description: 'Required: Selects
+ a field of the pod: only annotations,
+ labels, name and namespace
+ are supported.'
+ properties:
+ apiVersion:
+ description: Version of
+ the schema the FieldPath
+ is written in terms of,
+ defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the
+ field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ mode:
+ description: 'Optional: mode
+ bits to use on this file,
+ must be a value between 0
+ and 0777. If not specified,
+ the volume defaultMode will
+ be used. This might be in
+ conflict with other options
+ that affect the file mode,
+ like fsGroup, and the result
+ can be other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: 'Required: Path
+ is the relative path name
+ of the file to be created.
+ Must not be absolute or contain
+ the ''..'' path. Must be utf-8
+ encoded. The first item of
+ the relative path must not
+ start with ''..'''
+ type: string
+ resourceFieldRef:
+ description: 'Selects a resource
+ of the container: only resources
+ limits and requests (limits.cpu,
+ limits.memory, requests.cpu
+ and requests.memory) are currently
+ supported.'
+ properties:
+ containerName:
+ description: 'Container
+ name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ description: Specifies the
+ output format of the exposed
+ resources, defaults to
+ "1"
+ type: string
+ resource:
+ description: 'Required:
+ resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ required:
+ - path
+ type: object
+ type: array
+ type: object
+ emptyDir:
+ description: 'EmptyDir represents a temporary
+ directory that shares a pod''s lifetime.
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+ properties:
+ medium:
+ description: 'What type of storage
+ medium should back this directory.
+ The default is "" which means to
+ use the node''s default medium.
+ Must be an empty string (default)
+ or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+ type: string
+ sizeLimit:
+ description: 'Total amount of local
+ storage required for this EmptyDir
+ volume. The size limit is also applicable
+ for memory medium. The maximum usage
+ on memory medium EmptyDir would
+ be the minimum value between the
+ SizeLimit specified here and the
+ sum of memory limits of all containers
+ in a pod. The default is nil which
+ means that the limit is undefined.
+ More info: http://kubernetes.io/docs/user-guide/volumes#emptydir'
+ type: string
+ type: object
+ fc:
+ description: FC represents a Fibre Channel
+ resource that is attached to a kubelet's
+ host machine and then exposed to the
+ pod.
+ properties:
+ fsType:
+ description: 'Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ lun:
+ description: 'Optional: FC target
+ lun number'
+ format: int32
+ type: integer
+ readOnly:
+ description: 'Optional: Defaults to
+ false (read/write). ReadOnly here
+ will force the ReadOnly setting
+ in VolumeMounts.'
+ type: boolean
+ targetWWNs:
+ description: 'Optional: FC target
+ worldwide names (WWNs)'
+ items:
+ type: string
+ type: array
+ wwids:
+ description: 'Optional: FC volume
+ world wide identifiers (wwids) Either
+ wwids or combination of targetWWNs
+ and lun must be set, but not both
+ simultaneously.'
+ items:
+ type: string
+ type: array
+ type: object
+ flexVolume:
+ description: FlexVolume represents a generic
+ volume resource that is provisioned/attached
+ using an exec based plugin.
+ properties:
+ driver:
+ description: Driver is the name of
+ the driver to use for this volume.
+ type: string
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". The default
+ filesystem depends on FlexVolume
+ script.
+ type: string
+ options:
+ additionalProperties:
+ type: string
+ description: 'Optional: Extra command
+ options if any.'
+ type: object
+ readOnly:
+ description: 'Optional: Defaults to
+ false (read/write). ReadOnly here
+ will force the ReadOnly setting
+ in VolumeMounts.'
+ type: boolean
+ secretRef:
+ description: 'Optional: SecretRef
+ is reference to the secret object
+ containing sensitive information
+ to pass to the plugin scripts. This
+ may be empty if no secret object
+ is specified. If the secret object
+ contains more than one secret, all
+ secrets are passed to the plugin
+ scripts.'
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ required:
+ - driver
+ type: object
+ flocker:
+ description: Flocker represents a Flocker
+ volume attached to a kubelet's host
+ machine. This depends on the Flocker
+ control service being running
+ properties:
+ datasetName:
+ description: Name of the dataset stored
+ as metadata -> name on the dataset
+ for Flocker should be considered
+ as deprecated
+ type: string
+ datasetUUID:
+ description: UUID of the dataset.
+ This is unique identifier of a Flocker
+ dataset
+ type: string
+ type: object
+ gcePersistentDisk:
+ description: 'GCEPersistentDisk represents
+ a GCE Disk resource that is attached
+ to a kubelet''s host machine and then
+ exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ properties:
+ fsType:
+ description: 'Filesystem type of the
+ volume that you want to mount. Tip:
+ Ensure that the filesystem type
+ is supported by the host operating
+ system. Examples: "ext4", "xfs",
+ "ntfs". Implicitly inferred to be
+ "ext4" if unspecified. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ partition:
+ description: 'The partition in the
+ volume that you want to mount. If
+ omitted, the default is to mount
+ by volume name. Examples: For volume
+ /dev/sda1, you specify the partition
+ as "1". Similarly, the volume partition
+ for /dev/sda is "0" (or you can
+ leave the property empty). More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ format: int32
+ type: integer
+ pdName:
+ description: 'Unique name of the PD
+ resource in GCE. Used to identify
+ the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force
+ the ReadOnly setting in VolumeMounts.
+ Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ type: boolean
+ required:
+ - pdName
+ type: object
+ gitRepo:
+ description: 'GitRepo represents a git
+ repository at a particular revision.
+ DEPRECATED: GitRepo is deprecated. To
+ provision a container with a git repo,
+ mount an EmptyDir into an InitContainer
+ that clones the repo using git, then
+ mount the EmptyDir into the Pod''s container.'
+ properties:
+ directory:
+ description: Target directory name.
+ Must not contain or start with '..'. If
+ '.' is supplied, the volume directory
+ will be the git repository. Otherwise,
+ if specified, the volume will contain
+ the git repository in the subdirectory
+ with the given name.
+ type: string
+ repository:
+ description: Repository URL
+ type: string
+ revision:
+ description: Commit hash for the specified
+ revision.
+ type: string
+ required:
+ - repository
+ type: object
+ glusterfs:
+ description: 'Glusterfs represents a Glusterfs
+ mount on the host that shares a pod''s
+ lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'
+ properties:
+ endpoints:
+ description: 'EndpointsName is the
+ endpoint name that details Glusterfs
+ topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: string
+ path:
+ description: 'Path is the Glusterfs
+ volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force
+ the Glusterfs volume to be mounted
+ with read-only permissions. Defaults
+ to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: boolean
+ required:
+ - endpoints
+ - path
+ type: object
+ hostPath:
+ description: 'HostPath represents a pre-existing
+ file or directory on the host machine
+ that is directly exposed to the container.
+ This is generally used for system agents
+ or other privileged things that are
+ allowed to see the host machine. Most
+ containers will NOT need this. More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
+ --- TODO(jonesdl) We need to restrict
+ who can use host directory mounts and
+ who can/can not mount host directories
+ as read/write.'
+ properties:
+ path:
+ description: 'Path of the directory
+ on the host. If the path is a symlink,
+ it will follow the link to the real
+ path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+ type: string
+ type:
+ description: 'Type for HostPath Volume
+ Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+ type: string
+ required:
+ - path
+ type: object
+ iscsi:
+ description: 'ISCSI represents an ISCSI
+ Disk resource that is attached to a
+ kubelet''s host machine and then exposed
+ to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'
+ properties:
+ chapAuthDiscovery:
+ description: whether support iSCSI
+ Discovery CHAP authentication
+ type: boolean
+ chapAuthSession:
+ description: whether support iSCSI
+ Session CHAP authentication
+ type: boolean
+ fsType:
+ description: 'Filesystem type of the
+ volume that you want to mount. Tip:
+ Ensure that the filesystem type
+ is supported by the host operating
+ system. Examples: "ext4", "xfs",
+ "ntfs". Implicitly inferred to be
+ "ext4" if unspecified. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#iscsi
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ initiatorName:
+ description: Custom iSCSI Initiator
+ Name. If initiatorName is specified
+ with iscsiInterface simultaneously,
+ new iSCSI interface : will be created for the connection.
+ type: string
+ iqn:
+ description: Target iSCSI Qualified
+ Name.
+ type: string
+ iscsiInterface:
+ description: iSCSI Interface Name
+ that uses an iSCSI transport. Defaults
+ to 'default' (tcp).
+ type: string
+ lun:
+ description: iSCSI Target Lun number.
+ format: int32
+ type: integer
+ portals:
+ description: iSCSI Target Portal List.
+ The portal is either an IP or ip_addr:port
+ if the port is other than default
+ (typically TCP ports 860 and 3260).
+ items:
+ type: string
+ type: array
+ readOnly:
+ description: ReadOnly here will force
+ the ReadOnly setting in VolumeMounts.
+ Defaults to false.
+ type: boolean
+ secretRef:
+ description: CHAP Secret for iSCSI
+ target and initiator authentication
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ targetPortal:
+ description: iSCSI Target Portal.
+ The Portal is either an IP or ip_addr:port
+ if the port is other than default
+ (typically TCP ports 860 and 3260).
+ type: string
+ required:
+ - iqn
+ - lun
+ - targetPortal
+ type: object
+ name:
+ description: 'Volume''s name. Must be
+ a DNS_LABEL and unique within the pod.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ nfs:
+ description: 'NFS represents an NFS mount
+ on the host that shares a pod''s lifetime
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ properties:
+ path:
+ description: 'Path that is exported
+ by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force
+ the NFS export to be mounted with
+ read-only permissions. Defaults
+ to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: boolean
+ server:
+ description: 'Server is the hostname
+ or IP address of the NFS server.
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: string
+ required:
+ - path
+ - server
+ type: object
+ persistentVolumeClaim:
+ description: 'PersistentVolumeClaimVolumeSource
+ represents a reference to a PersistentVolumeClaim
+ in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+ properties:
+ claimName:
+ description: 'ClaimName is the name
+ of a PersistentVolumeClaim in the
+ same namespace as the pod using
+ this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+ type: string
+ readOnly:
+ description: Will force the ReadOnly
+ setting in VolumeMounts. Default
+ false.
+ type: boolean
+ required:
+ - claimName
+ type: object
+ photonPersistentDisk:
+ description: PhotonPersistentDisk represents
+ a PhotonController persistent disk attached
+ and mounted on kubelets host machine
+ properties:
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ type: string
+ pdID:
+ description: ID that identifies Photon
+ Controller persistent disk
+ type: string
+ required:
+ - pdID
+ type: object
+ portworxVolume:
+ description: PortworxVolume represents
+ a portworx volume attached and mounted
+ on kubelets host machine
+ properties:
+ fsType:
+ description: FSType represents the
+ filesystem type to mount Must be
+ a filesystem type supported by the
+ host operating system. Ex. "ext4",
+ "xfs". Implicitly inferred to be
+ "ext4" if unspecified.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ volumeID:
+ description: VolumeID uniquely identifies
+ a Portworx volume
+ type: string
+ required:
+ - volumeID
+ type: object
+ projected:
+ description: Items for all in one resources
+ secrets, configmaps, and downward API
+ properties:
+ defaultMode:
+ description: Mode bits to use on created
+ files by default. Must be a value
+ between 0 and 0777. Directories
+ within the path are not affected
+ by this setting. This might be in
+ conflict with other options that
+ affect the file mode, like fsGroup,
+ and the result can be other mode
+ bits set.
+ format: int32
+ type: integer
+ sources:
+ description: list of volume projections
+ items:
+ description: Projection that may
+ be projected along with other
+ supported volume types
+ properties:
+ configMap:
+ description: information about
+ the configMap data to project
+ properties:
+ items:
+ description: If unspecified,
+ each key-value pair in
+ the Data field of the
+ referenced ConfigMap will
+ be projected into the
+ volume as a file whose
+ name is the key and content
+ is the value. If specified,
+ the listed keys will be
+ projected into the specified
+ paths, and unlisted keys
+ will not be present. If
+ a key is specified which
+ is not present in the
+ ConfigMap, the volume
+ setup will error unless
+ it is marked optional.
+ Paths must be relative
+ and may not contain the
+ '..' path or start with
+ '..'.
+ items:
+ description: Maps a string
+ key to a path within
+ a volume.
+ properties:
+ key:
+ description: The key
+ to project.
+ type: string
+ mode:
+ description: 'Optional:
+ mode bits to use
+ on this file, must
+ be a value between
+ 0 and 0777. If not
+ specified, the volume
+ defaultMode will
+ be used. This might
+ be in conflict with
+ other options that
+ affect the file
+ mode, like fsGroup,
+ and the result can
+ be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative
+ path of the file
+ to map the key to.
+ May not be an absolute
+ path. May not contain
+ the path element
+ '..'. May not start
+ with the string
+ '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the
+ referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful
+ fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether
+ the ConfigMap or its keys
+ must be defined
+ type: boolean
+ type: object
+ downwardAPI:
+ description: information about
+ the downwardAPI data to project
+ properties:
+ items:
+ description: Items is a
+ list of DownwardAPIVolume
+ file
+ items:
+ description: DownwardAPIVolumeFile
+ represents information
+ to create the file containing
+ the pod field
+ properties:
+ fieldRef:
+ description: 'Required:
+ Selects a field
+ of the pod: only
+ annotations, labels,
+ name and namespace
+ are supported.'
+ properties:
+ apiVersion:
+ description: Version
+ of the schema
+ the FieldPath
+ is written in
+ terms of, defaults
+ to "v1".
+ type: string
+ fieldPath:
+ description: Path
+ of the field
+ to select in
+ the specified
+ API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ mode:
+ description: 'Optional:
+ mode bits to use
+ on this file, must
+ be a value between
+ 0 and 0777. If not
+ specified, the volume
+ defaultMode will
+ be used. This might
+ be in conflict with
+ other options that
+ affect the file
+ mode, like fsGroup,
+ and the result can
+ be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: 'Required:
+ Path is the relative
+ path name of the
+ file to be created.
+ Must not be absolute
+ or contain the ''..''
+ path. Must be utf-8
+ encoded. The first
+ item of the relative
+ path must not start
+ with ''..'''
+ type: string
+ resourceFieldRef:
+ description: 'Selects
+ a resource of the
+ container: only
+ resources limits
+ and requests (limits.cpu,
+ limits.memory, requests.cpu
+ and requests.memory)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container
+ name: required
+ for volumes,
+ optional for
+ env vars'
+ type: string
+ divisor:
+ description: Specifies
+ the output format
+ of the exposed
+ resources, defaults
+ to "1"
+ type: string
+ resource:
+ description: 'Required:
+ resource to
+ select'
+ type: string
+ required:
+ - resource
+ type: object
+ required:
+ - path
+ type: object
+ type: array
+ type: object
+ secret:
+ description: information about
+ the secret data to project
+ properties:
+ items:
+ description: If unspecified,
+ each key-value pair in
+ the Data field of the
+ referenced Secret will
+ be projected into the
+ volume as a file whose
+ name is the key and content
+ is the value. If specified,
+ the listed keys will be
+ projected into the specified
+ paths, and unlisted keys
+ will not be present. If
+ a key is specified which
+ is not present in the
+ Secret, the volume setup
+ will error unless it is
+ marked optional. Paths
+ must be relative and may
+ not contain the '..' path
+ or start with '..'.
+ items:
+ description: Maps a string
+ key to a path within
+ a volume.
+ properties:
+ key:
+ description: The key
+ to project.
+ type: string
+ mode:
+ description: 'Optional:
+ mode bits to use
+ on this file, must
+ be a value between
+ 0 and 0777. If not
+ specified, the volume
+ defaultMode will
+ be used. This might
+ be in conflict with
+ other options that
+ affect the file
+ mode, like fsGroup,
+ and the result can
+ be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative
+ path of the file
+ to map the key to.
+ May not be an absolute
+ path. May not contain
+ the path element
+ '..'. May not start
+ with the string
+ '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the
+ referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful
+ fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether
+ the Secret or its key
+ must be defined
+ type: boolean
+ type: object
+ serviceAccountToken:
+ description: information about
+ the serviceAccountToken data
+ to project
+ properties:
+ audience:
+ description: Audience is
+ the intended audience
+ of the token. A recipient
+ of a token must identify
+ itself with an identifier
+ specified in the audience
+ of the token, and otherwise
+ should reject the token.
+ The audience defaults
+ to the identifier of the
+ apiserver.
+ type: string
+ expirationSeconds:
+ description: ExpirationSeconds
+ is the requested duration
+ of validity of the service
+ account token. As the
+ token approaches expiration,
+ the kubelet volume plugin
+ will proactively rotate
+ the service account token.
+ The kubelet will start
+ trying to rotate the token
+ if the token is older
+ than 80 percent of its
+ time to live or if the
+ token is older than 24
+ hours.Defaults to 1 hour
+ and must be at least 10
+ minutes.
+ format: int64
+ type: integer
+ path:
+ description: Path is the
+ path relative to the mount
+ point of the file to project
+ the token into.
+ type: string
+ required:
+ - path
+ type: object
+ type: object
+ type: array
+ required:
+ - sources
+ type: object
+ quobyte:
+ description: Quobyte represents a Quobyte
+ mount on the host that shares a pod's
+ lifetime
+ properties:
+ group:
+ description: Group to map volume access
+ to Default is no group
+ type: string
+ readOnly:
+ description: ReadOnly here will force
+ the Quobyte volume to be mounted
+ with read-only permissions. Defaults
+ to false.
+ type: boolean
+ registry:
+ description: Registry represents a
+ single or multiple Quobyte Registry
+ services specified as a string as
+ host:port pair (multiple entries
+ are separated with commas) which
+ acts as the central registry for
+ volumes
+ type: string
+ tenant:
+ description: Tenant owning the given
+ Quobyte volume in the Backend Used
+ with dynamically provisioned Quobyte
+ volumes, value is set by the plugin
+ type: string
+ user:
+ description: User to map volume access
+ to Defaults to serivceaccount user
+ type: string
+ volume:
+ description: Volume is a string that
+ references an already created Quobyte
+ volume by name.
+ type: string
+ required:
+ - registry
+ - volume
+ type: object
+ rbd:
+ description: 'RBD represents a Rados Block
+ Device mount on the host that shares
+ a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'
+ properties:
+ fsType:
+ description: 'Filesystem type of the
+ volume that you want to mount. Tip:
+ Ensure that the filesystem type
+ is supported by the host operating
+ system. Examples: "ext4", "xfs",
+ "ntfs". Implicitly inferred to be
+ "ext4" if unspecified. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#rbd
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ image:
+ description: 'The rados image name.
+ More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ keyring:
+ description: 'Keyring is the path
+ to key ring for RBDUser. Default
+ is /etc/ceph/keyring. More info:
+ https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ monitors:
+ description: 'A collection of Ceph
+ monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ items:
+ type: string
+ type: array
+ pool:
+ description: 'The rados pool name.
+ Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force
+ the ReadOnly setting in VolumeMounts.
+ Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: boolean
+ secretRef:
+ description: 'SecretRef is name of
+ the authentication secret for RBDUser.
+ If provided overrides keyring. Default
+ is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ user:
+ description: 'The rados user name.
+ Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ required:
+ - image
+ - monitors
+ type: object
+ scaleIO:
+ description: ScaleIO represents a ScaleIO
+ persistent volume attached and mounted
+ on Kubernetes nodes.
+ properties:
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Default is
+ "xfs".
+ type: string
+ gateway:
+ description: The host address of the
+ ScaleIO API Gateway.
+ type: string
+ protectionDomain:
+ description: The name of the ScaleIO
+ Protection Domain for the configured
+ storage.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ secretRef:
+ description: SecretRef references
+ to the secret for ScaleIO user and
+ other sensitive information. If
+ this is not provided, Login operation
+ will fail.
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ sslEnabled:
+ description: Flag to enable/disable
+ SSL communication with Gateway,
+ default false
+ type: boolean
+ storageMode:
+ description: Indicates whether the
+ storage for a volume should be ThickProvisioned
+ or ThinProvisioned. Default is ThinProvisioned.
+ type: string
+ storagePool:
+ description: The ScaleIO Storage Pool
+ associated with the protection domain.
+ type: string
+ system:
+ description: The name of the storage
+ system as configured in ScaleIO.
+ type: string
+ volumeName:
+ description: The name of a volume
+ already created in the ScaleIO system
+ that is associated with this volume
+ source.
+ type: string
+ required:
+ - gateway
+ - secretRef
+ - system
+ type: object
+ secret:
+ description: 'Secret represents a secret
+ that should populate this volume. More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits
+ to use on created files by default.
+ Must be a value between 0 and 0777.
+ Defaults to 0644. Directories within
+ the path are not affected by this
+ setting. This might be in conflict
+ with other options that affect the
+ file mode, like fsGroup, and the
+ result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: If unspecified, each
+ key-value pair in the Data field
+ of the referenced Secret will be
+ projected into the volume as a file
+ whose name is the key and content
+ is the value. If specified, the
+ listed keys will be projected into
+ the specified paths, and unlisted
+ keys will not be present. If a key
+ is specified which is not present
+ in the Secret, the volume setup
+ will error unless it is marked optional.
+ Paths must be relative and may not
+ contain the '..' path or start with
+ '..'.
+ items:
+ description: Maps a string key to
+ a path within a volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode
+ bits to use on this file,
+ must be a value between 0
+ and 0777. If not specified,
+ the volume defaultMode will
+ be used. This might be in
+ conflict with other options
+ that affect the file mode,
+ like fsGroup, and the result
+ can be other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path
+ of the file to map the key
+ to. May not be an absolute
+ path. May not contain the
+ path element '..'. May not
+ start with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ optional:
+ description: Specify whether the Secret
+ or its keys must be defined
+ type: boolean
+ secretName:
+ description: 'Name of the secret in
+ the pod''s namespace to use. More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+ type: string
+ type: object
+ storageos:
+ description: StorageOS represents a StorageOS
+ volume attached and mounted on Kubernetes
+ nodes.
+ properties:
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ secretRef:
+ description: SecretRef specifies the
+ secret to use for obtaining the
+ StorageOS API credentials. If not
+ specified, default values will be
+ attempted.
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ volumeName:
+ description: VolumeName is the human-readable
+ name of the StorageOS volume. Volume
+ names are only unique within a namespace.
+ type: string
+ volumeNamespace:
+ description: VolumeNamespace specifies
+ the scope of the volume within StorageOS. If
+ no namespace is specified then the
+ Pod's namespace will be used. This
+ allows the Kubernetes name scoping
+ to be mirrored within StorageOS
+ for tighter integration. Set VolumeName
+ to any name to override the default
+ behaviour. Set to "default" if you
+ are not using namespaces within
+ StorageOS. Namespaces that do not
+ pre-exist within StorageOS will
+ be created.
+ type: string
+ type: object
+ vsphereVolume:
+ description: VsphereVolume represents
+ a vSphere volume attached and mounted
+ on kubelets host machine
+ properties:
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ type: string
+ storagePolicyID:
+ description: Storage Policy Based
+ Management (SPBM) profile ID associated
+ with the StoragePolicyName.
+ type: string
+ storagePolicyName:
+ description: Storage Policy Based
+ Management (SPBM) profile name.
+ type: string
+ volumePath:
+ description: Path that identifies
+ vSphere volume vmdk
+ type: string
+ required:
+ - volumePath
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ type: object
+ httpProbe/inputs:
+ type: object
+ required:
+ - url
+ - method
+ properties:
+ url:
+ type: string
+ minLength: 1
+ insecureSkipVerify:
+ type: boolean
+ method:
+ type: object
+ minProperties: 1
+ properties:
+ get:
+ type: object
+ required:
+ - criteria
+ - responseCode
+ properties:
+ criteria:
+ type: string
+ minLength: 1
+ responseCode:
+ type: string
+ minLength: 1
+ post:
+ type: object
+ required:
+ - criteria
+ - responseCode
+ properties:
+ contentType:
+ type: string
+ minLength: 1
+ body:
+ type: string
+ bodyPath:
+ type: string
+ criteria:
+ type: string
+ minLength: 1
+ responseCode:
+ type: string
+ minLength: 1
+ promProbe/inputs:
+ type: object
+ required:
+ - endpoint
+ - comparator
+ properties:
+ endpoint:
+ type: string
+ query:
+ type: string
+ queryPath:
+ type: string
+ comparator:
+ type: object
+ required:
+ - criteria
+ - value
+ properties:
+ criteria:
+ type: string
+ value:
+ type: string
+ runProperties:
+ type: object
+ minProperties: 2
+ required:
+ - probeTimeout
+ - interval
+ properties:
+ evaluationTimeout:
+ type: string
+ probeTimeout:
+ type: string
+ interval:
+ type: string
+ retry:
+ type: integer
+ attempt:
+ type: integer
+ probePollingInterval:
+ type: string
+ initialDelaySeconds:
+ type: integer
+ initialDelay:
+ type: string
+ verbosity:
+ type: string
+ stopOnFailure:
+ type: boolean
+ sloProbe/inputs:
+ description: inputs needed for the SLO probe
+ required:
+ - platformEndpoint
+ - sloIdentifier
+ - sloSourceMetadata
+ - comparator
+ properties:
+ comparator:
+ description: Comparator check for the correctness
+ of the probe output
+ required:
+ - criteria
+ - value
+ properties:
+ criteria:
+ description: Criteria for matching data it
+ supports >=, <=, ==, >, <, != for int and
+ float it supports equal, notEqual, contains
+ for string
+ type: string
+ type:
+ description: Type of data it can be int, float,
+ string
+ type: string
+ value:
+ description: Value contains relative value
+ for criteria
+ type: string
+ type: object
+ evaluationWindow:
+ description: EvaluationWindow is the time period
+ for which the metrics will be evaluated
+ properties:
+ evaluationEndTime:
+ description: End time of evaluation
+ type: integer
+ evaluationStartTime:
+ description: Start time of evaluation
+ type: integer
+ type: object
+ platformEndpoint:
+ description: PlatformEndpoint for the monitoring
+ service endpoint
+ type: string
+ insecureSkipVerify:
+ description: InsecureSkipVerify flag to skip certificate
+ checks
+ type: boolean
+ sloIdentifier:
+ description: SLOIdentifier for fetching the details
+ of the SLO
+ type: string
+ sloSourceMetadata:
+ description: SLOSourceMetadata consists of required
+ metadata details to fetch metric data
+ required:
+ - apiTokenSecret
+ - scope
+ properties:
+ apiTokenSecret:
+ description: APITokenSecret for authenticating
+ with the platform service
+ type: string
+ scope:
+ description: Scope required for fetching details
+ required:
+ - accountIdentifier
+ - orgIdentifier
+ - projectIdentifier
+ properties:
+ accountIdentifier:
+ description: AccountIdentifier for account
+ ID
+ type: string
+ orgIdentifier:
+ description: OrgIdentifier for organization
+ ID
+ type: string
+ projectIdentifier:
+ description: ProjectIdentifier for project
+ ID
+ type: string
+ type: object
+ type: object
+ type: object
+ mode:
+ type: string
+ pattern: ^(SOT|EOT|Edge|Continuous|OnChaos)$
+ minLength: 1
+ data:
+ type: string
+ components:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ properties:
+ statusCheckTimeouts:
+ type: object
+ properties:
+ delay:
+ type: integer
+ timeout:
+ type: integer
+ nodeSelector:
+ type: object
+ additionalProperties:
+ type: string
+ properties:
+ key:
+ type: string
+ minLength: 1
+ allowEmptyValue: false
+ value:
+ type: string
+ minLength: 1
+ allowEmptyValue: false
+ experimentImage:
+ type: string
+ env:
+ type: array
+ 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 previous 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.
+ The $(VAR_NAME) syntax can be escaped with a
+ double $$, ie: $$(VAR_NAME). Escaped references
+ will never be expanded, regardless of whether
+ the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's
+ value. Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod:
+ supports metadata.name, metadata.namespace,
+ metadata.labels, metadata.annotations, spec.nodeName,
+ spec.serviceAccountName, status.hostIP,
+ status.podIP.'
+ properties:
+ apiVersion:
+ description: Version of the schema the
+ FieldPath is written in terms of, defaults
+ to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select
+ in the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, limits.ephemeral-storage,
+ requests.cpu, requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required
+ for volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format
+ of the exposed resources, defaults to
+ "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in
+ the pod's namespace
+ properties:
+ key:
+ description: The key of the secret to
+ select from. Must be a valid secret
+ key.
+ type: string
+ name:
+ description: 'Name of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ configMaps:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ mountPath:
+ type: string
+ secrets:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ mountPath:
+ type: string
+ experimentAnnotations:
+ type: object
+ additionalProperties:
+ type: string
+ properties:
+ key:
+ type: string
+ minLength: 1
+ allowEmptyValue: false
+ value:
+ type: string
+ minLength: 1
+ allowEmptyValue: false
+ tolerations:
+ description: Pod's tolerations.
+ items:
+ description: The pod with this Toleration tolerates any taint matches the using the matching operator .
+ properties:
+ effect:
+ description: Effect to match. Empty means all effects.
+ type: string
+ key:
+ description: Taint key the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists.
+ type: string
+ operator:
+ description: Operators are Exists or Equal. Defaults to Equal.
+ type: string
+ tolerationSeconds:
+ description: Period of time the toleration tolerates the taint.
+ format: int64
+ type: integer
+ value:
+ description: If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ concurrencyPolicy:
+ type: string
+ scheduleState:
+ type: string
+ schedule:
+ oneOf:
+ - required:
+ - now
+ - required:
+ - once
+ - required:
+ - repeat
+ properties:
+ now:
+ type: boolean
+ once:
+ properties:
+ executionTime:
+ format: date-time
+ type: string
+ type: object
+ repeat:
+ properties:
+ timeRange:
+ properties:
+ endTime:
+ format: date-time
+ type: string
+ startTime:
+ format: date-time
+ type: string
+ type: object
+ workHours:
+ properties:
+ includedHours:
+ type: string
+ type: object
+ required:
+ - includedHours
+ workDays:
+ properties:
+ includedDays:
+ pattern: ((Mon|Tue|Wed|Thu|Fri|Sat|Sun)(,))*(Mon|Tue|Wed|Thu|Fri|Sat|Sun)
+ type: string
+ type: object
+ required:
+ - includedDays
+ properties:
+ properties:
+ minChaosInterval:
+ properties:
+ hour:
+ properties:
+ everyNthHour:
+ type: integer
+ minuteOfTheHour:
+ type: integer
+ type: object
+ minute:
+ properties:
+ everyNthMinute:
+ type: integer
+ type: object
+ type: object
+ minProperties: 1
+ maxProperties: 1
+ random:
+ type: boolean
+ type: object
+ required:
+ - minChaosInterval
+ type: object
+ required:
+ - properties
+ type: object
+ status:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+ conversion:
+ strategy: None
diff --git a/mkdocs/docs/experiments/categories/aws/AWS-experiments-tunables.md b/mkdocs/docs/experiments/categories/aws/AWS-experiments-tunables.md
index cc15c760ccc..1ef80eaebf4 100644
--- a/mkdocs/docs/experiments/categories/aws/AWS-experiments-tunables.md
+++ b/mkdocs/docs/experiments/categories/aws/AWS-experiments-tunables.md
@@ -31,7 +31,7 @@ spec:
- name: REGION
value: ''
# tag of the ec2 instance
- - name: INSTANCE_TAG
+ - name: EC2_INSTANCE_TAG
value: 'key:value'
- name: TOTAL_CHAOS_DURATION
value: '60'
@@ -67,7 +67,7 @@ spec:
value: '60'
- name: REGION
value: ''
- - name: INSTANCE_TAG
+ - name: EC2_INSTANCE_TAG
value: 'key:value'
```
diff --git a/mkdocs/docs/experiments/categories/aws/common/chaos-interval.yaml b/mkdocs/docs/experiments/categories/aws/common/chaos-interval.yaml
index ea64a56c653..0d1ed988d5f 100644
--- a/mkdocs/docs/experiments/categories/aws/common/chaos-interval.yaml
+++ b/mkdocs/docs/experiments/categories/aws/common/chaos-interval.yaml
@@ -12,7 +12,7 @@ spec:
spec:
components:
env:
- # delay between each iteration of chaos
+ # delay between each iteration of chaos
- name: CHAOS_INTERVAL
value: '15'
# time duration for the chaos execution
@@ -20,6 +20,6 @@ spec:
value: '60'
- name: REGION
value: ''
- - name: INSTANCE_TAG
+ - name: EC2_INSTANCE_TAG
value: 'key:value'
-
\ No newline at end of file
+
diff --git a/mkdocs/docs/experiments/categories/aws/common/managed-nodegroup.yaml b/mkdocs/docs/experiments/categories/aws/common/managed-nodegroup.yaml
index e36984f453e..f463ffe806e 100644
--- a/mkdocs/docs/experiments/categories/aws/common/managed-nodegroup.yaml
+++ b/mkdocs/docs/experiments/categories/aws/common/managed-nodegroup.yaml
@@ -21,7 +21,7 @@ spec:
- name: REGION
value: ''
# tag of the ec2 instance
- - name: INSTANCE_TAG
+ - name: EC2_INSTANCE_TAG
value: 'key:value'
- name: TOTAL_CHAOS_DURATION
value: '60'
diff --git a/mkdocs/docs/experiments/categories/aws/ec2-stop-by-tag.md b/mkdocs/docs/experiments/categories/aws/ec2-stop-by-tag.md
index a3b8b6b2154..1e7cb1aa7c6 100644
--- a/mkdocs/docs/experiments/categories/aws/ec2-stop-by-tag.md
+++ b/mkdocs/docs/experiments/categories/aws/ec2-stop-by-tag.md
@@ -137,9 +137,9 @@ When the MANAGED_NODEGROUP is enable then the experiment will not try to start t
Notes
-
INSTANCE_TAG
+
EC2_INSTANCE_TAG
Instance Tag to filter the target ec2 instance.
-
The INSTANCE_TAG should be provided as key:value ex: team:devops
+
The EC2_INSTANCE_TAG should be provided as key:value ex: team:devops
REGION
@@ -196,7 +196,7 @@ Refer the [common attributes](../common/common-tunables-for-all-experiments.md)
### Target single instance
-It will stop a random single ec2 instance with the given `INSTANCE_TAG` tag and the `REGION` region.
+It will stop a random single ec2 instance with the given `EC2_INSTANCE_TAG` tag and the `REGION` region.
Use the following example to tune this:
@@ -217,7 +217,7 @@ spec:
components:
env:
# tag of the ec2 instance
- - name: INSTANCE_TAG
+ - name: EC2_INSTANCE_TAG
value: 'key:value'
# region for the ec2 instance
- name: REGION
@@ -228,7 +228,7 @@ spec:
### Target Percent of instances
-It will stop the `INSTANCE_AFFECTED_PERC` percentage of ec2 instances with the given `INSTANCE_TAG` tag and `REGION` region.
+It will stop the `INSTANCE_AFFECTED_PERC` percentage of ec2 instances with the given `EC2_INSTANCE_TAG` tag and `REGION` region.
Use the following example to tune this:
@@ -252,7 +252,7 @@ spec:
- name: INSTANCE_AFFECTED_PERC
value: '100'
# tag of the ec2 instance
- - name: INSTANCE_TAG
+ - name: EC2_INSTANCE_TAG
value: 'key:value'
# region for the ec2 instance
- name: REGION
diff --git a/mkdocs/docs/experiments/categories/aws/ec2-stop-by-tag/instance-affected-percentage.yaml b/mkdocs/docs/experiments/categories/aws/ec2-stop-by-tag/instance-affected-percentage.yaml
index a6b97b60b86..ae19b56954f 100644
--- a/mkdocs/docs/experiments/categories/aws/ec2-stop-by-tag/instance-affected-percentage.yaml
+++ b/mkdocs/docs/experiments/categories/aws/ec2-stop-by-tag/instance-affected-percentage.yaml
@@ -16,7 +16,7 @@ spec:
- name: INSTANCE_AFFECTED_PERC
value: '100'
# tag of the ec2 instance
- - name: INSTANCE_TAG
+ - name: EC2_INSTANCE_TAG
value: 'key:value'
# region for the ec2 instance
- name: REGION
diff --git a/mkdocs/docs/experiments/categories/aws/ec2-stop-by-tag/instance-tag.yaml b/mkdocs/docs/experiments/categories/aws/ec2-stop-by-tag/instance-tag.yaml
index b862483106c..4c8772d79ed 100644
--- a/mkdocs/docs/experiments/categories/aws/ec2-stop-by-tag/instance-tag.yaml
+++ b/mkdocs/docs/experiments/categories/aws/ec2-stop-by-tag/instance-tag.yaml
@@ -13,7 +13,7 @@ spec:
components:
env:
# tag of the ec2 instance
- - name: INSTANCE_TAG
+ - name: EC2_INSTANCE_TAG
value: 'key:value'
# region for the ec2 instance
- name: REGION
diff --git a/mkdocs/docs/experiments/faq/install.md b/mkdocs/docs/experiments/faq/install.md
index 6b99ac13af3..6dd89eec7af 100644
--- a/mkdocs/docs/experiments/faq/install.md
+++ b/mkdocs/docs/experiments/faq/install.md
@@ -28,19 +28,19 @@ hide:
### I encountered the concept of namespace and cluster scope during the installation. What is meant by the scopes, and how does it affect experiments to be performed outside or inside the litmus Namespace?
-The scope of control plane (portal) installation can be tuned by the env PORTAL_SCOPE in the litmusportal-server deployment. Its value can be kept as a “namespace” if you want to provide restricted access to litmus. It is useful in strictly multi-tenant environments in which users have namespace-level permissions and need to set up their own chaos-center instances. This is also the case in certain popular SaaS environments like Okteto cloud.
+The scope of control plane (portal) installation can be tuned by the env 'PORTAL_SCOPE' in the 'litmusportal-server' deployment. Its value can be kept as a “namespace” if you want to provide restricted access to litmus. It is useful in strictly multi-tenant environments in which users have namespace-level permissions and need to set up their own chaos-center instances. This is also the case in certain popular SaaS environments like Okteto cloud.
-This setting can be used in combination with a flag, AGENT_SCOPE in the litmus-portal-admin-config configmap to limit the purview of the corresponding self-agent (the execution plane pods on the cluster/namespace where the control plane is installed) to the current namespace, which means the user can perform chaos experiments only in chose installation namespace. By default, both are set up for cluster-wide access, by which microservices across the cluster can be subjected to chaos.
+This setting can be used in combination with a flag, 'AGENT_SCOPE' in the 'litmus-portal-admin-config' ConfigMap to limit the purview of the corresponding self-agent (the execution plane pods on the cluster/namespace where the control plane is installed) to the current namespace, which means the user can perform chaos experiments only in chosen installation namespace. By default, both are set up for cluster-wide access, by which microservices across the cluster can be subjected to chaos.
-In case of external-agents, i.e., the targets being connected to the chaos-center, you can choose the agent’s scope to either cluster or namespace via a litmusctl flag (when using it in non-interactive mode) or by providing the appropriate input (in interactive mode).
+In case of external-agents, i.e., the targets being connected to the chaos-center, you can choose the agent’s scope to either cluster or namespace via a 'litmusctl' flag (when using it in non-interactive mode) or by providing the appropriate input (in interactive mode).
### Does Litmus 2.0 maintain backward compatibility with Kubernetes?
-Yes Litmus maintains a separate CRD manifest to support backward compatibility.
+Yes, Litmus maintains a separate CRD manifest to support backward compatibility.
### Can I run LitmusChaos Outside of my Kubernetes clusters?
-You can run the chaos experiments outside of the k8s cluster(as a container) which is dockerized. But other components such as chaos-operator,chaos-exporter, and runner are Kubernetes native. They require k8s cluster to run on it.
+You can run the chaos experiments outside of the k8s cluster as a dockerized container. However, other components such as chaos-operator,chaos-exporter, and runner are Kubernetes native. They require k8s cluster to run on it.
### What is the minimum system requirement to run Portal and agent together?
@@ -48,11 +48,11 @@ To run LitmusPortal you need to have a minimum of 1 GiB memory and 1 core of CPU
### Can I use LitmusChaos in Production?
-Yes, you can use Litmuschaos in production. Litmus has a wide variety of experiments and is designed as per the principles of chaos. But, if you are new to Chaos Engineering, we would recommend you to first try Litmus on your dev environment, and then after getting the confidence, you should use it in Production.
+Yes, you can use Litmuschaos in production. Litmus has a wide variety of experiments and is designed according to the principles of chaos engineering. However, if you are new to Chaos Engineering, we would recommend you to first try Litmus on your dev environment, and then after getting the confidence, you should use it in Production.
### Why should I use Litmus? What is its distinctive feature?
-Litmus is a toolset to do cloud-native Chaos Engineering. Litmus provides tools to orchestrate chaos on Kubernetes to help developers and SREs find weaknesses in their application deployments. Litmus can be used to run chaos experiments initially in the staging environment and eventually in production to find bugs, vulnerabilities. Fixing the weaknesses leads to increased resilience of the system. Litmus adopts a “Kubernetes-native” approach to define chaos intent in a declarative manner via custom resources.
+Litmus is a toolset for performing cloud-native Chaos Engineering. Litmus provides tools to orchestrate chaos on Kubernetes to help developers and SREs find weaknesses in their application deployments. Litmus can be used to run chaos experiments initially in the staging environment and eventually in production to find bugs and vulnerabilities. Fixing the weaknesses leads to increased resilience of the system. Litmus adopts a “Kubernetes-native” approach to define chaos intent in a declarative manner via custom resources.
### What licensing model does Litmus use?
@@ -60,7 +60,7 @@ Litmus is developed under Apache License 2.0 license at the project level. Some
### What are the prerequisites to get started with Litmus?
-For getting started with Litmus the only prerequisites is to have Kubernetes 1.11+ cluster. While most pod/container level experiments are supported on any Kubernetes platform, some of the infrastructure chaos experiments are supported on specific platforms. To find the list of supported platforms for an experiment, view the "Platforms" section on the sidebar in the experiment page.
+To get started with Litmus, the only prerequisites is to have Kubernetes 1.11+ cluster. While most pod/container level experiments are supported on any Kubernetes platform, some of the infrastructure chaos experiments are supported on specific platforms. To find the list of supported platforms for an experiment, view the "Platforms" section on the sidebar in the experiment page.
### How to Install Litmus on the Kubernetes Cluster?
diff --git a/mkdocs/docs/litmus-namespaced-scope/litmus-namespaced-operator.yaml b/mkdocs/docs/litmus-namespaced-scope/litmus-namespaced-operator.yaml
index 49772fe413f..4f8cc1a5741 100644
--- a/mkdocs/docs/litmus-namespaced-scope/litmus-namespaced-operator.yaml
+++ b/mkdocs/docs/litmus-namespaced-scope/litmus-namespaced-operator.yaml
@@ -7,7 +7,7 @@ metadata:
app.kubernetes.io/name: litmus
# provide unique instance-id if applicable
# app.kubernetes.io/instance: litmus-abcxzy
- app.kubernetes.io/version: v3.9.0
+ app.kubernetes.io/version: v3.10.0
app.kubernetes.io/component: operator-serviceaccount
app.kubernetes.io/part-of: litmus
app.kubernetes.io/managed-by: kubectl
@@ -22,7 +22,7 @@ metadata:
app.kubernetes.io/name: litmus
# provide unique instance-id if applicable
# app.kubernetes.io/instance: litmus-abcxzy
- app.kubernetes.io/version: v3.9.0
+ app.kubernetes.io/version: v3.10.0
app.kubernetes.io/component: operator-role
app.kubernetes.io/part-of: litmus
app.kubernetes.io/managed-by: kubectl
@@ -59,7 +59,7 @@ metadata:
app.kubernetes.io/name: litmus
# provide unique instance-id if applicable
# app.kubernetes.io/instance: litmus-abcxzy
- app.kubernetes.io/version: v3.9.0
+ app.kubernetes.io/version: v3.10.0
app.kubernetes.io/component: operator-rolebinding
app.kubernetes.io/part-of: litmus
app.kubernetes.io/managed-by: kubectl
@@ -81,7 +81,7 @@ metadata:
app.kubernetes.io/name: litmus
# provide unique instance-id if applicable
# app.kubernetes.io/instance: litmus-abcxzy
- app.kubernetes.io/version: v3.9.0
+ app.kubernetes.io/version: v3.10.0
app.kubernetes.io/component: operator
app.kubernetes.io/part-of: litmus
app.kubernetes.io/managed-by: kubectl
@@ -97,7 +97,7 @@ spec:
app.kubernetes.io/name: litmus
# provide unique instance-id if applicable
# app.kubernetes.io/instance: litmus-abcxzy
- app.kubernetes.io/version: v3.9.0
+ app.kubernetes.io/version: v3.10.0
app.kubernetes.io/component: operator
app.kubernetes.io/part-of: litmus
app.kubernetes.io/managed-by: kubectl
@@ -106,13 +106,13 @@ spec:
serviceAccountName: litmus
containers:
- name: chaos-operator
- image: litmuschaos.docker.scarf.sh/litmuschaos/chaos-operator:3.9.0
+ image: litmuschaos.docker.scarf.sh/litmuschaos/chaos-operator:3.10.0
command:
- chaos-operator
imagePullPolicy: Always
env:
- name: CHAOS_RUNNER_IMAGE
- value: "litmuschaos.docker.scarf.sh/litmuschaos/chaos-runner:3.9.0"
+ value: "litmuschaos.docker.scarf.sh/litmuschaos/chaos-runner:3.10.0"
- name: WATCH_NAMESPACE
valueFrom:
fieldRef:
diff --git a/mkdocs/docs/litmus-namespaced-scope/litmus-namespaced-scheduler.yaml b/mkdocs/docs/litmus-namespaced-scope/litmus-namespaced-scheduler.yaml
index 326fdfee6b5..da50ba05d7c 100644
--- a/mkdocs/docs/litmus-namespaced-scope/litmus-namespaced-scheduler.yaml
+++ b/mkdocs/docs/litmus-namespaced-scope/litmus-namespaced-scheduler.yaml
@@ -16,7 +16,7 @@ spec:
containers:
- name: chaos-scheduler
# Replace this with the built image name
- image: litmuschaos.docker.scarf.sh/litmuschaos/chaos-scheduler:3.9.0
+ image: litmuschaos.docker.scarf.sh/litmuschaos/chaos-scheduler:3.10.0
command:
- chaos-scheduler
imagePullPolicy: IfNotPresent
diff --git a/mkdocs/docs/litmus-namespaced-scope/litmus-ns-experiment-rbac.yaml b/mkdocs/docs/litmus-namespaced-scope/litmus-ns-experiment-rbac.yaml
index 0fd357eb2aa..3ecf1121214 100644
--- a/mkdocs/docs/litmus-namespaced-scope/litmus-ns-experiment-rbac.yaml
+++ b/mkdocs/docs/litmus-namespaced-scope/litmus-ns-experiment-rbac.yaml
@@ -7,7 +7,7 @@ metadata:
app.kubernetes.io/name: litmus
# provide unique instance-id if applicable
# app.kubernetes.io/instance: litmus-abcxzy
- app.kubernetes.io/version: v3.9.0
+ app.kubernetes.io/version: v3.10.0
app.kubernetes.io/component: operator-serviceaccount
app.kubernetes.io/part-of: litmus
app.kubernetes.io/managed-by: kubectl
@@ -22,7 +22,7 @@ metadata:
app.kubernetes.io/name: litmus
# provide unique instance-id if applicable
# app.kubernetes.io/instance: litmus-abcxzy
- app.kubernetes.io/version: v3.9.0
+ app.kubernetes.io/version: v3.10.0
app.kubernetes.io/component: operator-role
app.kubernetes.io/part-of: litmus
app.kubernetes.io/managed-by: kubectl
@@ -59,7 +59,7 @@ metadata:
app.kubernetes.io/name: litmus
# provide unique instance-id if applicable
# app.kubernetes.io/instance: litmus-abcxzy
- app.kubernetes.io/version: v3.9.0
+ app.kubernetes.io/version: v3.10.0
app.kubernetes.io/component: operator-rolebinding
app.kubernetes.io/part-of: litmus
app.kubernetes.io/managed-by: kubectl
diff --git a/mkdocs/docs/litmus-namespaced-scope/litmus-ns-rbac.yaml b/mkdocs/docs/litmus-namespaced-scope/litmus-ns-rbac.yaml
index 79959c367f7..825d538c651 100644
--- a/mkdocs/docs/litmus-namespaced-scope/litmus-ns-rbac.yaml
+++ b/mkdocs/docs/litmus-namespaced-scope/litmus-ns-rbac.yaml
@@ -7,7 +7,7 @@ metadata:
app.kubernetes.io/name: litmus
# provide unique instance-id if applicable
# app.kubernetes.io/instance: litmus-abcxzy
- app.kubernetes.io/version: v3.9.0
+ app.kubernetes.io/version: v3.10.0
app.kubernetes.io/component: operator-serviceaccount
app.kubernetes.io/part-of: litmus
app.kubernetes.io/managed-by: kubectl
@@ -22,7 +22,7 @@ metadata:
app.kubernetes.io/name: litmus
# provide unique instance-id if applicable
# app.kubernetes.io/instance: litmus-abcxzy
- app.kubernetes.io/version: v3.9.0
+ app.kubernetes.io/version: v3.10.0
app.kubernetes.io/component: operator-role
app.kubernetes.io/part-of: litmus
app.kubernetes.io/managed-by: kubectl
@@ -62,7 +62,7 @@ metadata:
app.kubernetes.io/name: litmus
# provide unique instance-id if applicable
# app.kubernetes.io/instance: litmus-abcxzy
- app.kubernetes.io/version: v3.9.0
+ app.kubernetes.io/version: v3.10.0
app.kubernetes.io/component: operator-rolebinding
app.kubernetes.io/part-of: litmus
app.kubernetes.io/managed-by: kubectl
diff --git a/mkdocs/docs/litmus-operator-v3.10.0.yaml b/mkdocs/docs/litmus-operator-v3.10.0.yaml
new file mode 100644
index 00000000000..f939926bece
--- /dev/null
+++ b/mkdocs/docs/litmus-operator-v3.10.0.yaml
@@ -0,0 +1,3004 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: litmus
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: litmus
+ namespace: litmus
+ labels:
+ app.kubernetes.io/name: litmus
+ # provide unique instance-id if applicable
+ # app.kubernetes.io/instance: litmus-abcxzy
+ app.kubernetes.io/version: v3.10.0
+ app.kubernetes.io/component: operator-serviceaccount
+ app.kubernetes.io/part-of: litmus
+ app.kubernetes.io/managed-by: kubectl
+ name: litmus
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: litmus
+ labels:
+ app.kubernetes.io/name: litmus
+ # provide unique instance-id if applicable
+ # app.kubernetes.io/instance: litmus-abcxzy
+ app.kubernetes.io/version: v3.10.0
+ app.kubernetes.io/component: operator-clusterrole
+ app.kubernetes.io/part-of: litmus
+ app.kubernetes.io/managed-by: kubectl
+ name: litmus
+rules:
+ # *******************************************************************
+ # Permissions needed for creation and discovery of chaos component
+ # *******************************************************************
+
+# for checking app parent resources if they are eligible chaos candidates
+- apiGroups: [""]
+ resources: ["replicationcontrollers"]
+ verbs: ["get","list"]
+
+# for checking app parent resources if they are eligible chaos candidates
+- apiGroups: [""]
+ resources: ["secrets"]
+ verbs: ["get","list"]
+
+# for checking (openshift) app parent resources if they are eligible chaos candidates
+- apiGroups: ["apps.openshift.io"]
+ resources: ["deploymentconfigs"]
+ verbs: ["get","list"]
+
+# for operator to perform asset discovery of available resources on the cluster which can be picked as a target for chaos
+- apiGroups: ["apps"]
+ resources: ["deployments", "daemonsets", "replicasets", "statefulsets"]
+ verbs: ["get","list"]
+
+# for operator to perform asset discovery of experiment jobs
+- apiGroups: ["batch"]
+ resources: ["jobs"]
+ verbs: ["get","list"]
+
+# for checking (argo) app parent resources if they are eligible chaos candidates
+- apiGroups: ["argoproj.io"]
+ resources: ["rollouts"]
+ verbs: ["get","list"]
+
+# for creating and monitoring the chaos-runner pods
+- apiGroups: [""]
+ resources: ["pods","events"]
+ verbs: ["get","create","update","patch","delete","list","watch","deletecollection"]
+
+# for operator to create or get the service for mertics
+- apiGroups: [""]
+ resources: ["services"]
+ verbs: ["create","update","get","list","watch","delete"]
+
+# for operator to create and manage configmap to handle race condition
+- apiGroups: [""]
+ resources: ["configmaps"]
+ verbs: ["create","update","get","list","watch","delete"]
+
+# for operator to perform removal of experiment jobs
+- apiGroups: ["batch"]
+ resources: ["jobs"]
+ verbs: ["delete","deletecollection"]
+
+# for creation, status polling and deletion of litmus chaos resources used within an experiment
+- apiGroups: ["litmuschaos.io"]
+ resources: ["chaosengines","chaosexperiments","chaosresults"]
+ verbs: ["get","create","update","patch","delete","list","watch","deletecollection"]
+
+# for validation of existance of chaosresult crd
+- apiGroups: ["apiextensions.k8s.io"]
+ resources: ["customresourcedefinitions"]
+ verbs: ["list","get"]
+
+# for managing litmus resource deletion
+- apiGroups: ["litmuschaos.io"]
+ resources: ["chaosengines/finalizers"]
+ verbs: ["update"]
+
+# for leader election in case of multireplica
+- apiGroups: ["coordination.k8s.io"]
+ resources: ["leases"]
+ verbs: ["get","create","list","update","delete"]
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: litmus
+ labels:
+ app.kubernetes.io/name: litmus
+ # provide unique instance-id if applicable
+ # app.kubernetes.io/instance: litmus-abcxzy
+ app.kubernetes.io/version: v3.10.0
+ app.kubernetes.io/component: operator-clusterrolebinding
+ app.kubernetes.io/part-of: litmus
+ app.kubernetes.io/managed-by: kubectl
+ name: litmus
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: litmus
+subjects:
+- kind: ServiceAccount
+ name: litmus
+ namespace: litmus
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ labels:
+ app.kubernetes.io/name: litmus
+ # provide unique instance-id if applicable
+ # app.kubernetes.io/instance: litmus-abcxzy
+ app.kubernetes.io/version: v3.10.0
+ app.kubernetes.io/component: operator
+ app.kubernetes.io/part-of: litmus
+ app.kubernetes.io/managed-by: kubectl
+ name: litmus
+ name: chaos-operator-ce
+ namespace: litmus
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ name: chaos-operator
+ template:
+ metadata:
+ labels:
+ app.kubernetes.io/name: litmus
+ # provide unique instance-id if applicable
+ # app.kubernetes.io/instance: litmus-abcxzy
+ app.kubernetes.io/version: v3.10.0
+ app.kubernetes.io/component: operator
+ app.kubernetes.io/part-of: litmus
+ app.kubernetes.io/managed-by: kubectl
+ name: chaos-operator
+ spec:
+ serviceAccountName: litmus
+ containers:
+ - name: chaos-operator
+ image: litmuschaos.docker.scarf.sh/litmuschaos/chaos-operator:3.10.0
+ command:
+ - chaos-operator
+ args:
+ - -leader-elect=true
+ imagePullPolicy: Always
+ env:
+ - name: CHAOS_RUNNER_IMAGE
+ value: "litmuschaos.docker.scarf.sh/litmuschaos/chaos-runner:3.10.0"
+ - name: WATCH_NAMESPACE
+ value: ""
+ - name: POD_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.name
+ - name: POD_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: OPERATOR_NAME
+ value: "chaos-operator"
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: chaosengines.litmuschaos.io
+spec:
+ group: litmuschaos.io
+ names:
+ kind: ChaosEngine
+ listKind: ChaosEngineList
+ plural: chaosengines
+ singular: chaosengine
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ type: object
+ 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/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ properties:
+ jobCleanUpPolicy:
+ type: string
+ pattern: ^(delete|retain)$
+ # alternate ways to do this in case of complex pattern matches
+ #oneOf:
+ # - pattern: '^delete$'
+ # - pattern: '^retain$'
+ defaultHealthCheck:
+ type: boolean
+ appinfo:
+ type: object
+ properties:
+ appkind:
+ type: string
+ pattern: ^(^$|deployment|statefulset|daemonset|deploymentconfig|rollout)$
+ applabel:
+ type: string
+ appns:
+ type: string
+ selectors:
+ type: object
+ properties:
+ pods:
+ items:
+ properties:
+ names:
+ type: string
+ namespace:
+ type: string
+ required:
+ - names
+ - namespace
+ type: object
+ type: array
+ workloads:
+ items:
+ properties:
+ kind:
+ type: string
+ pattern: ^(^$|deployment|statefulset|daemonset|deploymentconfig|rollout)$
+ labels:
+ type: string
+ names:
+ type: string
+ namespace:
+ type: string
+ oneOf:
+ - required: [ names ]
+ - required: [ labels ]
+ required:
+ - kind
+ - namespace
+ type: object
+ type: array
+ oneOf:
+ - required: [ pods ]
+ - required: [ workloads ]
+ auxiliaryAppInfo:
+ type: string
+ engineState:
+ type: string
+ pattern: ^(active|stop)$
+ chaosServiceAccount:
+ type: string
+ terminationGracePeriodSeconds:
+ type: integer
+ components:
+ type: object
+ properties:
+ sidecar:
+ type: array
+ items:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ properties:
+ env:
+ description: ENV contains ENV passed to the sidecar container
+ 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 previous 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.
+ The $(VAR_NAME) syntax can be escaped with a double
+ $$, ie: $$(VAR_NAME). Escaped references will never
+ be expanded, regardless of whether the variable
+ exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's
+ value. Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod: supports
+ metadata.name, metadata.namespace, `metadata.labels['''']`,
+ `metadata.annotations['''']`, spec.nodeName,
+ spec.serviceAccountName, status.hostIP, status.podIP,
+ status.podIPs.'
+ properties:
+ apiVersion:
+ description: Version of the schema the FieldPath
+ is written in terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select in
+ the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, limits.ephemeral-storage, requests.cpu,
+ requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required for
+ volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format of
+ the exposed resources, defaults to "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in the
+ pod's namespace
+ properties:
+ key:
+ description: The key of the secret to select
+ from. Must be a valid secret key.
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret or
+ its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ envFrom:
+ description: EnvFrom for the sidecar container
+ items:
+ description: EnvFromSource represents the source of a
+ set of ConfigMaps
+ properties:
+ configMapRef:
+ description: The ConfigMap to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap must
+ be defined
+ type: boolean
+ type: object
+ prefix:
+ description: An optional identifier to prepend to
+ each key in the ConfigMap. Must be a C_IDENTIFIER.
+ type: string
+ secretRef:
+ description: The Secret to select from
+ properties:
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret must be
+ defined
+ type: boolean
+ type: object
+ type: object
+ type: array
+ image:
+ type: string
+ imagePullPolicy:
+ type: string
+ secrets:
+ items:
+ properties:
+ mountPath:
+ type: string
+ name:
+ type: string
+ required:
+ - mountPath
+ - name
+ type: object
+ type: array
+ runner:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ properties:
+ image:
+ type: string
+ type:
+ type: string
+ pattern: ^(go)$
+ runnerAnnotations:
+ type: object
+ runnerLabels:
+ type: object
+ additionalProperties:
+ type: string
+ properties:
+ key:
+ type: string
+ minLength: 1
+ value:
+ type: string
+ minLength: 1
+ tolerations:
+ description: Pod's tolerations.
+ items:
+ description: The pod with this Toleration tolerates any taint matches the using the matching operator .
+ properties:
+ effect:
+ description: Effect to match. Empty means all effects.
+ type: string
+ key:
+ description: Taint key the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists.
+ type: string
+ operator:
+ description: Operators are Exists or Equal. Defaults to Equal.
+ type: string
+ tolerationSeconds:
+ description: Period of time the toleration tolerates the taint.
+ format: int64
+ type: integer
+ value:
+ description: If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ experiments:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ spec:
+ type: object
+ properties:
+ probe:
+ type: array
+ items:
+ type: object
+ required:
+ - name
+ - type
+ - mode
+ - runProperties
+ properties:
+ name:
+ type: string
+ type:
+ type: string
+ minLength: 1
+ pattern: ^(k8sProbe|httpProbe|cmdProbe|promProbe)$
+ k8sProbe/inputs:
+ type: object
+ required:
+ - version
+ - resource
+ - operation
+ properties:
+ group:
+ type: string
+ version:
+ type: string
+ resource:
+ type: string
+ namespace:
+ type: string
+ resourceNames:
+ type: string
+ fieldSelector:
+ type: string
+ labelSelector:
+ type: string
+ operation:
+ type: string
+ pattern: ^(present|absent|create|delete)$
+ minLength: 1
+ cmdProbe/inputs:
+ type: object
+ required:
+ - command
+ - comparator
+ properties:
+ command:
+ type: string
+ minLength: 1
+ comparator:
+ type: object
+ required:
+ - type
+ - criteria
+ - value
+ properties:
+ type:
+ type: string
+ minLength: 1
+ pattern: ^(int|float|string)$
+ criteria:
+ type: string
+ value:
+ type: string
+ source:
+ description: The external pod where we have to run the
+ probe commands. It will run the commands inside the experiment pod itself(inline mode) if source contains a nil value
+ required:
+ - image
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ description: Annotations for the source pod
+ type: object
+ args:
+ description: Args for the source pod
+ items:
+ type: string
+ type: array
+ command:
+ description: Command for the source pod
+ items:
+ type: string
+ type: array
+ env:
+ description: ENVList contains ENV passed to
+ the source pod
+ 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 previous 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. The $(VAR_NAME) syntax can
+ be escaped with a double $$, ie: $$(VAR_NAME).
+ Escaped references will never be expanded,
+ regardless of whether the variable exists
+ or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment
+ variable's value. Cannot be used if
+ value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the
+ ConfigMap or its key must be
+ defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the
+ pod: supports metadata.name, metadata.namespace,
+ metadata.labels, metadata.annotations,
+ spec.nodeName, spec.serviceAccountName,
+ status.hostIP, status.podIP.'
+ properties:
+ apiVersion:
+ description: Version of the schema
+ the FieldPath is written in
+ terms of, defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field
+ to select in the specified API
+ version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of
+ the container: only resources limits
+ and requests (limits.cpu, limits.memory,
+ limits.ephemeral-storage, requests.cpu,
+ requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name:
+ required for volumes, optional
+ for env vars'
+ type: string
+ divisor:
+ description: Specifies the output
+ format of the exposed resources,
+ defaults to "1"
+ type: string
+ resource:
+ description: 'Required: resource
+ to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret
+ in the pod's namespace
+ properties:
+ key:
+ description: The key of the secret
+ to select from. Must be a valid
+ secret key.
+ type: string
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the
+ Secret or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ hostNetwork:
+ description: HostNetwork define the hostNetwork
+ of the external pod it supports boolean values
+ and default value is false
+ type: boolean
+ inheritInputs:
+ description: InheritInputs define to inherit experiment
+ details in probe pod it supports boolean values
+ and default value is false.
+ type: boolean
+ image:
+ description: Image for the source pod
+ type: string
+ imagePullPolicy:
+ description: ImagePullPolicy for the source pod
+ type: string
+ imagePullSecrets:
+ description: ImagePullSecrets for source 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'
+ type: string
+ type: object
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ description: Labels for the source pod
+ type: object
+ nodeSelector:
+ additionalProperties:
+ type: string
+ description: NodeSelector for the source pod
+ type: object
+ tolerations:
+ description: Tolerations for the source pod
+ items:
+ description: The pod with this Toleration tolerates any taint matches the using the matching operator .
+ properties:
+ effect:
+ description: Effect to match. Empty means all effects.
+ type: string
+ key:
+ description: Taint key the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists.
+ type: string
+ operator:
+ description: Operators are Exists or Equal. Defaults to Equal.
+ type: string
+ tolerationSeconds:
+ description: Period of time the toleration tolerates the taint.
+ format: int64
+ type: integer
+ value:
+ description: If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+ privileged:
+ description: Privileged for the source pod
+ type: boolean
+ volumeMount:
+ description: VolumesMount for the source pod
+ 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.
+ type: string
+ name:
+ description: This must match the Name
+ of a Volume.
+ type: string
+ readOnly:
+ description: Mounted read-only if true,
+ read-write otherwise (false or unspecified).
+ Defaults to false.
+ type: boolean
+ subPath:
+ description: Path within the volume from
+ which the container's volume should
+ be mounted. Defaults to "" (volume's
+ root).
+ type: string
+ subPathExpr:
+ description: Expanded path within the
+ volume from which the container's volume
+ should be mounted. Behaves similarly
+ to SubPath but environment variable
+ references $(VAR_NAME) are expanded
+ using the container's environment. Defaults
+ to "" (volume's root). SubPathExpr and
+ SubPath are mutually exclusive. This
+ field is beta in 1.15.
+ type: string
+ required:
+ - mountPath
+ - name
+ type: object
+ type: array
+ volumes:
+ description: Volumes for the source pod
+ items:
+ description: Volume represents a named volume
+ in a pod that may be accessed by any container
+ in the pod.
+ properties:
+ awsElasticBlockStore:
+ description: 'AWSElasticBlockStore represents
+ an AWS Disk resource that is attached
+ to a kubelet''s host machine and then
+ exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ properties:
+ fsType:
+ description: 'Filesystem type of the
+ volume that you want to mount. Tip:
+ Ensure that the filesystem type
+ is supported by the host operating
+ system. Examples: "ext4", "xfs",
+ "ntfs". Implicitly inferred to be
+ "ext4" if unspecified. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ partition:
+ description: 'The partition in the
+ volume that you want to mount. If
+ omitted, the default is to mount
+ by volume name. Examples: For volume
+ /dev/sda1, you specify the partition
+ as "1". Similarly, the volume partition
+ for /dev/sda is "0" (or you can
+ leave the property empty).'
+ format: int32
+ type: integer
+ readOnly:
+ description: 'Specify "true" to force
+ and set the ReadOnly property in
+ VolumeMounts to "true". If omitted,
+ the default is "false". More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ type: boolean
+ volumeID:
+ description: 'Unique ID of the persistent
+ disk resource in AWS (Amazon EBS
+ volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+ type: string
+ required:
+ - volumeID
+ type: object
+ azureDisk:
+ description: AzureDisk represents an Azure
+ Data Disk mount on the host and bind
+ mount to the pod.
+ properties:
+ cachingMode:
+ description: 'Host Caching mode: None,
+ Read Only, Read Write.'
+ type: string
+ diskName:
+ description: The Name of the data
+ disk in the blob storage
+ type: string
+ diskURI:
+ description: The URI the data disk
+ in the blob storage
+ type: string
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ type: string
+ kind:
+ description: 'Expected values Shared:
+ multiple blob disks per storage
+ account Dedicated: single blob
+ disk per storage account Managed:
+ azure managed data disk (only in
+ managed availability set). defaults
+ to shared'
+ type: string
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ required:
+ - diskName
+ - diskURI
+ type: object
+ azureFile:
+ description: AzureFile represents an Azure
+ File Service mount on the host and bind
+ mount to the pod.
+ properties:
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ secretName:
+ description: the name of secret that
+ contains Azure Storage Account Name
+ and Key
+ type: string
+ shareName:
+ description: Share Name
+ type: string
+ required:
+ - secretName
+ - shareName
+ type: object
+ cephfs:
+ description: CephFS represents a Ceph
+ FS mount on the host that shares a pod's
+ lifetime
+ properties:
+ monitors:
+ description: 'Required: Monitors is
+ a collection of Ceph monitors More
+ info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ items:
+ type: string
+ type: array
+ path:
+ description: 'Optional: Used as the
+ mounted root, rather than the full
+ Ceph tree, default is /'
+ type: string
+ readOnly:
+ description: 'Optional: Defaults to
+ false (read/write). ReadOnly here
+ will force the ReadOnly setting
+ in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: boolean
+ secretFile:
+ description: 'Optional: SecretFile
+ is the path to key ring for User,
+ default is /etc/ceph/user.secret
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: string
+ secretRef:
+ description: 'Optional: SecretRef
+ is reference to the authentication
+ secret for User, default is empty.
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ user:
+ description: 'Optional: User is the
+ rados user name, default is admin
+ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+ type: string
+ required:
+ - monitors
+ type: object
+ cinder:
+ description: 'Cinder represents a cinder
+ volume attached and mounted on kubelets
+ host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ properties:
+ fsType:
+ description: 'Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Examples:
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: string
+ readOnly:
+ description: 'Optional: Defaults to
+ false (read/write). ReadOnly here
+ will force the ReadOnly setting
+ in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: boolean
+ secretRef:
+ description: 'Optional: points to
+ a secret object containing parameters
+ used to connect to OpenStack.'
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ volumeID:
+ description: 'volume id used to identify
+ the volume in cinder. More info:
+ https://examples.k8s.io/mysql-cinder-pd/README.md'
+ type: string
+ required:
+ - volumeID
+ type: object
+ configMap:
+ description: ConfigMap represents a configMap
+ that should populate this volume
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits
+ to use on created files by default.
+ Must be a value between 0 and 0777.
+ Defaults to 0644. Directories within
+ the path are not affected by this
+ setting. This might be in conflict
+ with other options that affect the
+ file mode, like fsGroup, and the
+ result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: If unspecified, each
+ key-value pair in the Data field
+ of the referenced ConfigMap will
+ be projected into the volume as
+ a file whose name is the key and
+ content is the value. If specified,
+ the listed keys will be projected
+ into the specified paths, and unlisted
+ keys will not be present. If a key
+ is specified which is not present
+ in the ConfigMap, the volume setup
+ will error unless it is marked optional.
+ Paths must be relative and may not
+ contain the '..' path or start with
+ '..'.
+ items:
+ description: Maps a string key to
+ a path within a volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode
+ bits to use on this file,
+ must be a value between 0
+ and 0777. If not specified,
+ the volume defaultMode will
+ be used. This might be in
+ conflict with other options
+ that affect the file mode,
+ like fsGroup, and the result
+ can be other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path
+ of the file to map the key
+ to. May not be an absolute
+ path. May not contain the
+ path element '..'. May not
+ start with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its keys must be defined
+ type: boolean
+ type: object
+ csi:
+ description: CSI (Container Storage Interface)
+ represents storage that is handled by
+ an external CSI driver (Alpha feature).
+ properties:
+ driver:
+ description: Driver is the name of
+ the CSI driver that handles this
+ volume. Consult with your admin
+ for the correct name as registered
+ in the cluster.
+ type: string
+ fsType:
+ description: Filesystem type to mount.
+ Ex. "ext4", "xfs", "ntfs". If not
+ provided, the empty value is passed
+ to the associated CSI driver which
+ will determine the default filesystem
+ to apply.
+ type: string
+ nodePublishSecretRef:
+ description: NodePublishSecretRef
+ is a reference to the secret object
+ containing sensitive information
+ to pass to the CSI driver to complete
+ the CSI NodePublishVolume and NodeUnpublishVolume
+ calls. This field is optional, and may
+ be empty if no secret is required.
+ If the secret object contains more
+ than one secret, all secret references
+ are passed.
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ readOnly:
+ description: Specifies a read-only
+ configuration for the volume. Defaults
+ to false (read/write).
+ type: boolean
+ volumeAttributes:
+ additionalProperties:
+ type: string
+ description: VolumeAttributes stores
+ driver-specific properties that
+ are passed to the CSI driver. Consult
+ your driver's documentation for
+ supported values.
+ type: object
+ required:
+ - driver
+ type: object
+ downwardAPI:
+ description: DownwardAPI represents downward
+ API about the pod that should populate
+ this volume
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits
+ to use on created files by default.
+ Must be a value between 0 and 0777.
+ Defaults to 0644. Directories within
+ the path are not affected by this
+ setting. This might be in conflict
+ with other options that affect the
+ file mode, like fsGroup, and the
+ result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: Items is a list of downward
+ API volume file
+ items:
+ description: DownwardAPIVolumeFile
+ represents information to create
+ the file containing the pod field
+ properties:
+ fieldRef:
+ description: 'Required: Selects
+ a field of the pod: only annotations,
+ labels, name and namespace
+ are supported.'
+ properties:
+ apiVersion:
+ description: Version of
+ the schema the FieldPath
+ is written in terms of,
+ defaults to "v1".
+ type: string
+ fieldPath:
+ description: Path of the
+ field to select in the
+ specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ mode:
+ description: 'Optional: mode
+ bits to use on this file,
+ must be a value between 0
+ and 0777. If not specified,
+ the volume defaultMode will
+ be used. This might be in
+ conflict with other options
+ that affect the file mode,
+ like fsGroup, and the result
+ can be other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: 'Required: Path
+ is the relative path name
+ of the file to be created.
+ Must not be absolute or contain
+ the ''..'' path. Must be utf-8
+ encoded. The first item of
+ the relative path must not
+ start with ''..'''
+ type: string
+ resourceFieldRef:
+ description: 'Selects a resource
+ of the container: only resources
+ limits and requests (limits.cpu,
+ limits.memory, requests.cpu
+ and requests.memory) are currently
+ supported.'
+ properties:
+ containerName:
+ description: 'Container
+ name: required for volumes,
+ optional for env vars'
+ type: string
+ divisor:
+ description: Specifies the
+ output format of the exposed
+ resources, defaults to
+ "1"
+ type: string
+ resource:
+ description: 'Required:
+ resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ required:
+ - path
+ type: object
+ type: array
+ type: object
+ emptyDir:
+ description: 'EmptyDir represents a temporary
+ directory that shares a pod''s lifetime.
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+ properties:
+ medium:
+ description: 'What type of storage
+ medium should back this directory.
+ The default is "" which means to
+ use the node''s default medium.
+ Must be an empty string (default)
+ or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+ type: string
+ sizeLimit:
+ description: 'Total amount of local
+ storage required for this EmptyDir
+ volume. The size limit is also applicable
+ for memory medium. The maximum usage
+ on memory medium EmptyDir would
+ be the minimum value between the
+ SizeLimit specified here and the
+ sum of memory limits of all containers
+ in a pod. The default is nil which
+ means that the limit is undefined.
+ More info: http://kubernetes.io/docs/user-guide/volumes#emptydir'
+ type: string
+ type: object
+ fc:
+ description: FC represents a Fibre Channel
+ resource that is attached to a kubelet's
+ host machine and then exposed to the
+ pod.
+ properties:
+ fsType:
+ description: 'Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ lun:
+ description: 'Optional: FC target
+ lun number'
+ format: int32
+ type: integer
+ readOnly:
+ description: 'Optional: Defaults to
+ false (read/write). ReadOnly here
+ will force the ReadOnly setting
+ in VolumeMounts.'
+ type: boolean
+ targetWWNs:
+ description: 'Optional: FC target
+ worldwide names (WWNs)'
+ items:
+ type: string
+ type: array
+ wwids:
+ description: 'Optional: FC volume
+ world wide identifiers (wwids) Either
+ wwids or combination of targetWWNs
+ and lun must be set, but not both
+ simultaneously.'
+ items:
+ type: string
+ type: array
+ type: object
+ flexVolume:
+ description: FlexVolume represents a generic
+ volume resource that is provisioned/attached
+ using an exec based plugin.
+ properties:
+ driver:
+ description: Driver is the name of
+ the driver to use for this volume.
+ type: string
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". The default
+ filesystem depends on FlexVolume
+ script.
+ type: string
+ options:
+ additionalProperties:
+ type: string
+ description: 'Optional: Extra command
+ options if any.'
+ type: object
+ readOnly:
+ description: 'Optional: Defaults to
+ false (read/write). ReadOnly here
+ will force the ReadOnly setting
+ in VolumeMounts.'
+ type: boolean
+ secretRef:
+ description: 'Optional: SecretRef
+ is reference to the secret object
+ containing sensitive information
+ to pass to the plugin scripts. This
+ may be empty if no secret object
+ is specified. If the secret object
+ contains more than one secret, all
+ secrets are passed to the plugin
+ scripts.'
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ required:
+ - driver
+ type: object
+ flocker:
+ description: Flocker represents a Flocker
+ volume attached to a kubelet's host
+ machine. This depends on the Flocker
+ control service being running
+ properties:
+ datasetName:
+ description: Name of the dataset stored
+ as metadata -> name on the dataset
+ for Flocker should be considered
+ as deprecated
+ type: string
+ datasetUUID:
+ description: UUID of the dataset.
+ This is unique identifier of a Flocker
+ dataset
+ type: string
+ type: object
+ gcePersistentDisk:
+ description: 'GCEPersistentDisk represents
+ a GCE Disk resource that is attached
+ to a kubelet''s host machine and then
+ exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ properties:
+ fsType:
+ description: 'Filesystem type of the
+ volume that you want to mount. Tip:
+ Ensure that the filesystem type
+ is supported by the host operating
+ system. Examples: "ext4", "xfs",
+ "ntfs". Implicitly inferred to be
+ "ext4" if unspecified. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ partition:
+ description: 'The partition in the
+ volume that you want to mount. If
+ omitted, the default is to mount
+ by volume name. Examples: For volume
+ /dev/sda1, you specify the partition
+ as "1". Similarly, the volume partition
+ for /dev/sda is "0" (or you can
+ leave the property empty). More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ format: int32
+ type: integer
+ pdName:
+ description: 'Unique name of the PD
+ resource in GCE. Used to identify
+ the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force
+ the ReadOnly setting in VolumeMounts.
+ Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+ type: boolean
+ required:
+ - pdName
+ type: object
+ gitRepo:
+ description: 'GitRepo represents a git
+ repository at a particular revision.
+ DEPRECATED: GitRepo is deprecated. To
+ provision a container with a git repo,
+ mount an EmptyDir into an InitContainer
+ that clones the repo using git, then
+ mount the EmptyDir into the Pod''s container.'
+ properties:
+ directory:
+ description: Target directory name.
+ Must not contain or start with '..'. If
+ '.' is supplied, the volume directory
+ will be the git repository. Otherwise,
+ if specified, the volume will contain
+ the git repository in the subdirectory
+ with the given name.
+ type: string
+ repository:
+ description: Repository URL
+ type: string
+ revision:
+ description: Commit hash for the specified
+ revision.
+ type: string
+ required:
+ - repository
+ type: object
+ glusterfs:
+ description: 'Glusterfs represents a Glusterfs
+ mount on the host that shares a pod''s
+ lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md'
+ properties:
+ endpoints:
+ description: 'EndpointsName is the
+ endpoint name that details Glusterfs
+ topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: string
+ path:
+ description: 'Path is the Glusterfs
+ volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force
+ the Glusterfs volume to be mounted
+ with read-only permissions. Defaults
+ to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+ type: boolean
+ required:
+ - endpoints
+ - path
+ type: object
+ hostPath:
+ description: 'HostPath represents a pre-existing
+ file or directory on the host machine
+ that is directly exposed to the container.
+ This is generally used for system agents
+ or other privileged things that are
+ allowed to see the host machine. Most
+ containers will NOT need this. More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
+ --- TODO(jonesdl) We need to restrict
+ who can use host directory mounts and
+ who can/can not mount host directories
+ as read/write.'
+ properties:
+ path:
+ description: 'Path of the directory
+ on the host. If the path is a symlink,
+ it will follow the link to the real
+ path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+ type: string
+ type:
+ description: 'Type for HostPath Volume
+ Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+ type: string
+ required:
+ - path
+ type: object
+ iscsi:
+ description: 'ISCSI represents an ISCSI
+ Disk resource that is attached to a
+ kubelet''s host machine and then exposed
+ to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'
+ properties:
+ chapAuthDiscovery:
+ description: whether support iSCSI
+ Discovery CHAP authentication
+ type: boolean
+ chapAuthSession:
+ description: whether support iSCSI
+ Session CHAP authentication
+ type: boolean
+ fsType:
+ description: 'Filesystem type of the
+ volume that you want to mount. Tip:
+ Ensure that the filesystem type
+ is supported by the host operating
+ system. Examples: "ext4", "xfs",
+ "ntfs". Implicitly inferred to be
+ "ext4" if unspecified. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#iscsi
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ initiatorName:
+ description: Custom iSCSI Initiator
+ Name. If initiatorName is specified
+ with iscsiInterface simultaneously,
+ new iSCSI interface : will be created for the connection.
+ type: string
+ iqn:
+ description: Target iSCSI Qualified
+ Name.
+ type: string
+ iscsiInterface:
+ description: iSCSI Interface Name
+ that uses an iSCSI transport. Defaults
+ to 'default' (tcp).
+ type: string
+ lun:
+ description: iSCSI Target Lun number.
+ format: int32
+ type: integer
+ portals:
+ description: iSCSI Target Portal List.
+ The portal is either an IP or ip_addr:port
+ if the port is other than default
+ (typically TCP ports 860 and 3260).
+ items:
+ type: string
+ type: array
+ readOnly:
+ description: ReadOnly here will force
+ the ReadOnly setting in VolumeMounts.
+ Defaults to false.
+ type: boolean
+ secretRef:
+ description: CHAP Secret for iSCSI
+ target and initiator authentication
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ targetPortal:
+ description: iSCSI Target Portal.
+ The Portal is either an IP or ip_addr:port
+ if the port is other than default
+ (typically TCP ports 860 and 3260).
+ type: string
+ required:
+ - iqn
+ - lun
+ - targetPortal
+ type: object
+ name:
+ description: 'Volume''s name. Must be
+ a DNS_LABEL and unique within the pod.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ nfs:
+ description: 'NFS represents an NFS mount
+ on the host that shares a pod''s lifetime
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ properties:
+ path:
+ description: 'Path that is exported
+ by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force
+ the NFS export to be mounted with
+ read-only permissions. Defaults
+ to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: boolean
+ server:
+ description: 'Server is the hostname
+ or IP address of the NFS server.
+ More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+ type: string
+ required:
+ - path
+ - server
+ type: object
+ persistentVolumeClaim:
+ description: 'PersistentVolumeClaimVolumeSource
+ represents a reference to a PersistentVolumeClaim
+ in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+ properties:
+ claimName:
+ description: 'ClaimName is the name
+ of a PersistentVolumeClaim in the
+ same namespace as the pod using
+ this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+ type: string
+ readOnly:
+ description: Will force the ReadOnly
+ setting in VolumeMounts. Default
+ false.
+ type: boolean
+ required:
+ - claimName
+ type: object
+ photonPersistentDisk:
+ description: PhotonPersistentDisk represents
+ a PhotonController persistent disk attached
+ and mounted on kubelets host machine
+ properties:
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ type: string
+ pdID:
+ description: ID that identifies Photon
+ Controller persistent disk
+ type: string
+ required:
+ - pdID
+ type: object
+ portworxVolume:
+ description: PortworxVolume represents
+ a portworx volume attached and mounted
+ on kubelets host machine
+ properties:
+ fsType:
+ description: FSType represents the
+ filesystem type to mount Must be
+ a filesystem type supported by the
+ host operating system. Ex. "ext4",
+ "xfs". Implicitly inferred to be
+ "ext4" if unspecified.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ volumeID:
+ description: VolumeID uniquely identifies
+ a Portworx volume
+ type: string
+ required:
+ - volumeID
+ type: object
+ projected:
+ description: Items for all in one resources
+ secrets, configmaps, and downward API
+ properties:
+ defaultMode:
+ description: Mode bits to use on created
+ files by default. Must be a value
+ between 0 and 0777. Directories
+ within the path are not affected
+ by this setting. This might be in
+ conflict with other options that
+ affect the file mode, like fsGroup,
+ and the result can be other mode
+ bits set.
+ format: int32
+ type: integer
+ sources:
+ description: list of volume projections
+ items:
+ description: Projection that may
+ be projected along with other
+ supported volume types
+ properties:
+ configMap:
+ description: information about
+ the configMap data to project
+ properties:
+ items:
+ description: If unspecified,
+ each key-value pair in
+ the Data field of the
+ referenced ConfigMap will
+ be projected into the
+ volume as a file whose
+ name is the key and content
+ is the value. If specified,
+ the listed keys will be
+ projected into the specified
+ paths, and unlisted keys
+ will not be present. If
+ a key is specified which
+ is not present in the
+ ConfigMap, the volume
+ setup will error unless
+ it is marked optional.
+ Paths must be relative
+ and may not contain the
+ '..' path or start with
+ '..'.
+ items:
+ description: Maps a string
+ key to a path within
+ a volume.
+ properties:
+ key:
+ description: The key
+ to project.
+ type: string
+ mode:
+ description: 'Optional:
+ mode bits to use
+ on this file, must
+ be a value between
+ 0 and 0777. If not
+ specified, the volume
+ defaultMode will
+ be used. This might
+ be in conflict with
+ other options that
+ affect the file
+ mode, like fsGroup,
+ and the result can
+ be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative
+ path of the file
+ to map the key to.
+ May not be an absolute
+ path. May not contain
+ the path element
+ '..'. May not start
+ with the string
+ '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the
+ referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful
+ fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether
+ the ConfigMap or its keys
+ must be defined
+ type: boolean
+ type: object
+ downwardAPI:
+ description: information about
+ the downwardAPI data to project
+ properties:
+ items:
+ description: Items is a
+ list of DownwardAPIVolume
+ file
+ items:
+ description: DownwardAPIVolumeFile
+ represents information
+ to create the file containing
+ the pod field
+ properties:
+ fieldRef:
+ description: 'Required:
+ Selects a field
+ of the pod: only
+ annotations, labels,
+ name and namespace
+ are supported.'
+ properties:
+ apiVersion:
+ description: Version
+ of the schema
+ the FieldPath
+ is written in
+ terms of, defaults
+ to "v1".
+ type: string
+ fieldPath:
+ description: Path
+ of the field
+ to select in
+ the specified
+ API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ mode:
+ description: 'Optional:
+ mode bits to use
+ on this file, must
+ be a value between
+ 0 and 0777. If not
+ specified, the volume
+ defaultMode will
+ be used. This might
+ be in conflict with
+ other options that
+ affect the file
+ mode, like fsGroup,
+ and the result can
+ be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: 'Required:
+ Path is the relative
+ path name of the
+ file to be created.
+ Must not be absolute
+ or contain the ''..''
+ path. Must be utf-8
+ encoded. The first
+ item of the relative
+ path must not start
+ with ''..'''
+ type: string
+ resourceFieldRef:
+ description: 'Selects
+ a resource of the
+ container: only
+ resources limits
+ and requests (limits.cpu,
+ limits.memory, requests.cpu
+ and requests.memory)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container
+ name: required
+ for volumes,
+ optional for
+ env vars'
+ type: string
+ divisor:
+ description: Specifies
+ the output format
+ of the exposed
+ resources, defaults
+ to "1"
+ type: string
+ resource:
+ description: 'Required:
+ resource to
+ select'
+ type: string
+ required:
+ - resource
+ type: object
+ required:
+ - path
+ type: object
+ type: array
+ type: object
+ secret:
+ description: information about
+ the secret data to project
+ properties:
+ items:
+ description: If unspecified,
+ each key-value pair in
+ the Data field of the
+ referenced Secret will
+ be projected into the
+ volume as a file whose
+ name is the key and content
+ is the value. If specified,
+ the listed keys will be
+ projected into the specified
+ paths, and unlisted keys
+ will not be present. If
+ a key is specified which
+ is not present in the
+ Secret, the volume setup
+ will error unless it is
+ marked optional. Paths
+ must be relative and may
+ not contain the '..' path
+ or start with '..'.
+ items:
+ description: Maps a string
+ key to a path within
+ a volume.
+ properties:
+ key:
+ description: The key
+ to project.
+ type: string
+ mode:
+ description: 'Optional:
+ mode bits to use
+ on this file, must
+ be a value between
+ 0 and 0777. If not
+ specified, the volume
+ defaultMode will
+ be used. This might
+ be in conflict with
+ other options that
+ affect the file
+ mode, like fsGroup,
+ and the result can
+ be other mode bits
+ set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative
+ path of the file
+ to map the key to.
+ May not be an absolute
+ path. May not contain
+ the path element
+ '..'. May not start
+ with the string
+ '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ name:
+ description: 'Name of the
+ referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful
+ fields. apiVersion, kind,
+ uid?'
+ type: string
+ optional:
+ description: Specify whether
+ the Secret or its key
+ must be defined
+ type: boolean
+ type: object
+ serviceAccountToken:
+ description: information about
+ the serviceAccountToken data
+ to project
+ properties:
+ audience:
+ description: Audience is
+ the intended audience
+ of the token. A recipient
+ of a token must identify
+ itself with an identifier
+ specified in the audience
+ of the token, and otherwise
+ should reject the token.
+ The audience defaults
+ to the identifier of the
+ apiserver.
+ type: string
+ expirationSeconds:
+ description: ExpirationSeconds
+ is the requested duration
+ of validity of the service
+ account token. As the
+ token approaches expiration,
+ the kubelet volume plugin
+ will proactively rotate
+ the service account token.
+ The kubelet will start
+ trying to rotate the token
+ if the token is older
+ than 80 percent of its
+ time to live or if the
+ token is older than 24
+ hours.Defaults to 1 hour
+ and must be at least 10
+ minutes.
+ format: int64
+ type: integer
+ path:
+ description: Path is the
+ path relative to the mount
+ point of the file to project
+ the token into.
+ type: string
+ required:
+ - path
+ type: object
+ type: object
+ type: array
+ required:
+ - sources
+ type: object
+ quobyte:
+ description: Quobyte represents a Quobyte
+ mount on the host that shares a pod's
+ lifetime
+ properties:
+ group:
+ description: Group to map volume access
+ to Default is no group
+ type: string
+ readOnly:
+ description: ReadOnly here will force
+ the Quobyte volume to be mounted
+ with read-only permissions. Defaults
+ to false.
+ type: boolean
+ registry:
+ description: Registry represents a
+ single or multiple Quobyte Registry
+ services specified as a string as
+ host:port pair (multiple entries
+ are separated with commas) which
+ acts as the central registry for
+ volumes
+ type: string
+ tenant:
+ description: Tenant owning the given
+ Quobyte volume in the Backend Used
+ with dynamically provisioned Quobyte
+ volumes, value is set by the plugin
+ type: string
+ user:
+ description: User to map volume access
+ to Defaults to serivceaccount user
+ type: string
+ volume:
+ description: Volume is a string that
+ references an already created Quobyte
+ volume by name.
+ type: string
+ required:
+ - registry
+ - volume
+ type: object
+ rbd:
+ description: 'RBD represents a Rados Block
+ Device mount on the host that shares
+ a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md'
+ properties:
+ fsType:
+ description: 'Filesystem type of the
+ volume that you want to mount. Tip:
+ Ensure that the filesystem type
+ is supported by the host operating
+ system. Examples: "ext4", "xfs",
+ "ntfs". Implicitly inferred to be
+ "ext4" if unspecified. More info:
+ https://kubernetes.io/docs/concepts/storage/volumes#rbd
+ TODO: how do we prevent errors in
+ the filesystem from compromising
+ the machine'
+ type: string
+ image:
+ description: 'The rados image name.
+ More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ keyring:
+ description: 'Keyring is the path
+ to key ring for RBDUser. Default
+ is /etc/ceph/keyring. More info:
+ https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ monitors:
+ description: 'A collection of Ceph
+ monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ items:
+ type: string
+ type: array
+ pool:
+ description: 'The rados pool name.
+ Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ readOnly:
+ description: 'ReadOnly here will force
+ the ReadOnly setting in VolumeMounts.
+ Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: boolean
+ secretRef:
+ description: 'SecretRef is name of
+ the authentication secret for RBDUser.
+ If provided overrides keyring. Default
+ is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ user:
+ description: 'The rados user name.
+ Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+ type: string
+ required:
+ - image
+ - monitors
+ type: object
+ scaleIO:
+ description: ScaleIO represents a ScaleIO
+ persistent volume attached and mounted
+ on Kubernetes nodes.
+ properties:
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Default is
+ "xfs".
+ type: string
+ gateway:
+ description: The host address of the
+ ScaleIO API Gateway.
+ type: string
+ protectionDomain:
+ description: The name of the ScaleIO
+ Protection Domain for the configured
+ storage.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ secretRef:
+ description: SecretRef references
+ to the secret for ScaleIO user and
+ other sensitive information. If
+ this is not provided, Login operation
+ will fail.
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ sslEnabled:
+ description: Flag to enable/disable
+ SSL communication with Gateway,
+ default false
+ type: boolean
+ storageMode:
+ description: Indicates whether the
+ storage for a volume should be ThickProvisioned
+ or ThinProvisioned. Default is ThinProvisioned.
+ type: string
+ storagePool:
+ description: The ScaleIO Storage Pool
+ associated with the protection domain.
+ type: string
+ system:
+ description: The name of the storage
+ system as configured in ScaleIO.
+ type: string
+ volumeName:
+ description: The name of a volume
+ already created in the ScaleIO system
+ that is associated with this volume
+ source.
+ type: string
+ required:
+ - gateway
+ - secretRef
+ - system
+ type: object
+ secret:
+ description: 'Secret represents a secret
+ that should populate this volume. More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+ properties:
+ defaultMode:
+ description: 'Optional: mode bits
+ to use on created files by default.
+ Must be a value between 0 and 0777.
+ Defaults to 0644. Directories within
+ the path are not affected by this
+ setting. This might be in conflict
+ with other options that affect the
+ file mode, like fsGroup, and the
+ result can be other mode bits set.'
+ format: int32
+ type: integer
+ items:
+ description: If unspecified, each
+ key-value pair in the Data field
+ of the referenced Secret will be
+ projected into the volume as a file
+ whose name is the key and content
+ is the value. If specified, the
+ listed keys will be projected into
+ the specified paths, and unlisted
+ keys will not be present. If a key
+ is specified which is not present
+ in the Secret, the volume setup
+ will error unless it is marked optional.
+ Paths must be relative and may not
+ contain the '..' path or start with
+ '..'.
+ items:
+ description: Maps a string key to
+ a path within a volume.
+ properties:
+ key:
+ description: The key to project.
+ type: string
+ mode:
+ description: 'Optional: mode
+ bits to use on this file,
+ must be a value between 0
+ and 0777. If not specified,
+ the volume defaultMode will
+ be used. This might be in
+ conflict with other options
+ that affect the file mode,
+ like fsGroup, and the result
+ can be other mode bits set.'
+ format: int32
+ type: integer
+ path:
+ description: The relative path
+ of the file to map the key
+ to. May not be an absolute
+ path. May not contain the
+ path element '..'. May not
+ start with the string '..'.
+ type: string
+ required:
+ - key
+ - path
+ type: object
+ type: array
+ optional:
+ description: Specify whether the Secret
+ or its keys must be defined
+ type: boolean
+ secretName:
+ description: 'Name of the secret in
+ the pod''s namespace to use. More
+ info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+ type: string
+ type: object
+ storageos:
+ description: StorageOS represents a StorageOS
+ volume attached and mounted on Kubernetes
+ nodes.
+ properties:
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ type: string
+ readOnly:
+ description: Defaults to false (read/write).
+ ReadOnly here will force the ReadOnly
+ setting in VolumeMounts.
+ type: boolean
+ secretRef:
+ description: SecretRef specifies the
+ secret to use for obtaining the
+ StorageOS API credentials. If not
+ specified, default values will be
+ attempted.
+ properties:
+ name:
+ description: 'Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields.
+ apiVersion, kind, uid?'
+ type: string
+ type: object
+ volumeName:
+ description: VolumeName is the human-readable
+ name of the StorageOS volume. Volume
+ names are only unique within a namespace.
+ type: string
+ volumeNamespace:
+ description: VolumeNamespace specifies
+ the scope of the volume within StorageOS. If
+ no namespace is specified then the
+ Pod's namespace will be used. This
+ allows the Kubernetes name scoping
+ to be mirrored within StorageOS
+ for tighter integration. Set VolumeName
+ to any name to override the default
+ behaviour. Set to "default" if you
+ are not using namespaces within
+ StorageOS. Namespaces that do not
+ pre-exist within StorageOS will
+ be created.
+ type: string
+ type: object
+ vsphereVolume:
+ description: VsphereVolume represents
+ a vSphere volume attached and mounted
+ on kubelets host machine
+ properties:
+ fsType:
+ description: Filesystem type to mount.
+ Must be a filesystem type supported
+ by the host operating system. Ex.
+ "ext4", "xfs", "ntfs". Implicitly
+ inferred to be "ext4" if unspecified.
+ type: string
+ storagePolicyID:
+ description: Storage Policy Based
+ Management (SPBM) profile ID associated
+ with the StoragePolicyName.
+ type: string
+ storagePolicyName:
+ description: Storage Policy Based
+ Management (SPBM) profile name.
+ type: string
+ volumePath:
+ description: Path that identifies
+ vSphere volume vmdk
+ type: string
+ required:
+ - volumePath
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ type: object
+ httpProbe/inputs:
+ type: object
+ required:
+ - url
+ - method
+ properties:
+ url:
+ type: string
+ minLength: 1
+ insecureSkipVerify:
+ type: boolean
+ method:
+ type: object
+ minProperties: 1
+ properties:
+ get:
+ type: object
+ required:
+ - criteria
+ - responseCode
+ properties:
+ criteria:
+ type: string
+ minLength: 1
+ responseCode:
+ type: string
+ minLength: 1
+ post:
+ type: object
+ required:
+ - criteria
+ - responseCode
+ properties:
+ contentType:
+ type: string
+ minLength: 1
+ body:
+ type: string
+ bodyPath:
+ type: string
+ criteria:
+ type: string
+ minLength: 1
+ responseCode:
+ type: string
+ minLength: 1
+ promProbe/inputs:
+ type: object
+ required:
+ - endpoint
+ - comparator
+ properties:
+ endpoint:
+ type: string
+ query:
+ type: string
+ queryPath:
+ type: string
+ comparator:
+ type: object
+ required:
+ - criteria
+ - value
+ properties:
+ criteria:
+ type: string
+ value:
+ type: string
+ runProperties:
+ type: object
+ minProperties: 2
+ required:
+ - probeTimeout
+ - interval
+ properties:
+ probeTimeout:
+ type: string
+ interval:
+ type: string
+ retry:
+ type: integer
+ attempt:
+ type: integer
+ probePollingInterval:
+ type: string
+ initialDelay:
+ type: string
+ verbosity:
+ type: string
+ initialDelaySeconds:
+ type: integer
+ stopOnFailure:
+ type: boolean
+ mode:
+ type: string
+ pattern: ^(SOT|EOT|Edge|Continuous|OnChaos)$
+ minLength: 1
+ data:
+ type: string
+ components:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ properties:
+ statusCheckTimeouts:
+ type: object
+ properties:
+ delay:
+ type: integer
+ timeout:
+ type: integer
+ nodeSelector:
+ type: object
+ additionalProperties:
+ type: string
+ properties:
+ key:
+ type: string
+ minLength: 1
+ allowEmptyValue: false
+ value:
+ type: string
+ minLength: 1
+ allowEmptyValue: false
+ experimentImage:
+ type: string
+ env:
+ type: array
+ 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 previous 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.
+ The $(VAR_NAME) syntax can be escaped with a
+ double $$, ie: $$(VAR_NAME). Escaped references
+ will never be expanded, regardless of whether
+ the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's
+ value. Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod:
+ supports metadata.name, metadata.namespace,
+ metadata.labels, metadata.annotations, spec.nodeName,
+ spec.serviceAccountName, status.hostIP,
+ status.podIP.'
+ properties:
+ apiVersion:
+ description: Version of the schema the
+ FieldPath is written in terms of, defaults
+ to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select
+ in the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, limits.ephemeral-storage,
+ requests.cpu, requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required
+ for volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format
+ of the exposed resources, defaults to
+ "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in
+ the pod's namespace
+ properties:
+ key:
+ description: The key of the secret to
+ select from. Must be a valid secret
+ key.
+ type: string
+ name:
+ description: 'Name of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ type: object
+ configMaps:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ mountPath:
+ type: string
+ secrets:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ mountPath:
+ type: string
+ experimentAnnotations:
+ type: object
+ additionalProperties:
+ type: string
+ properties:
+ key:
+ type: string
+ minLength: 1
+ allowEmptyValue: false
+ value:
+ type: string
+ minLength: 1
+ allowEmptyValue: false
+ tolerations:
+ description: Pod's tolerations.
+ items:
+ description: The pod with this Toleration tolerates any taint matches the using the matching operator .
+ properties:
+ effect:
+ description: Effect to match. Empty means all effects.
+ type: string
+ key:
+ description: Taint key the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists.
+ type: string
+ operator:
+ description: Operators are Exists or Equal. Defaults to Equal.
+ type: string
+ tolerationSeconds:
+ description: Period of time the toleration tolerates the taint.
+ format: int64
+ type: integer
+ value:
+ description: If the operator is Exists, the value should be empty, otherwise just a regular string.
+ type: string
+ type: object
+ type: array
+
+ status:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+ conversion:
+ strategy: None
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: chaosexperiments.litmuschaos.io
+spec:
+ group: litmuschaos.io
+ names:
+ kind: ChaosExperiment
+ listKind: ChaosExperimentList
+ plural: chaosexperiments
+ singular: chaosexperiment
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ type: object
+ 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/api-conventions.md#resources'
+ type: string
+ description:
+ type: object
+ additionalProperties:
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ status:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ spec:
+ type: object
+ properties:
+ definition:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ properties:
+ args:
+ type: array
+ items:
+ type: string
+ command:
+ type: array
+ items:
+ type: string
+ env:
+ type: array
+ items:
+ type: object
+ 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 previous 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.
+ The $(VAR_NAME) syntax can be escaped with a
+ double $$, ie: $$(VAR_NAME). Escaped references
+ will never be expanded, regardless of whether
+ the variable exists or not. Defaults to "".'
+ type: string
+ valueFrom:
+ description: Source for the environment variable's
+ value. Cannot be used if value is not empty.
+ properties:
+ configMapKeyRef:
+ description: Selects a key of a ConfigMap.
+ properties:
+ key:
+ description: The key to select.
+ type: string
+ name:
+ description: 'Name of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the ConfigMap
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ fieldRef:
+ description: 'Selects a field of the pod:
+ supports metadata.name, metadata.namespace,
+ metadata.labels, metadata.annotations, spec.nodeName,
+ spec.serviceAccountName, status.hostIP,
+ status.podIP.'
+ properties:
+ apiVersion:
+ description: Version of the schema the
+ FieldPath is written in terms of, defaults
+ to "v1".
+ type: string
+ fieldPath:
+ description: Path of the field to select
+ in the specified API version.
+ type: string
+ required:
+ - fieldPath
+ type: object
+ resourceFieldRef:
+ description: 'Selects a resource of the container:
+ only resources limits and requests (limits.cpu,
+ limits.memory, limits.ephemeral-storage,
+ requests.cpu, requests.memory and requests.ephemeral-storage)
+ are currently supported.'
+ properties:
+ containerName:
+ description: 'Container name: required
+ for volumes, optional for env vars'
+ type: string
+ divisor:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Specifies the output format
+ of the exposed resources, defaults to
+ "1"
+ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+ x-kubernetes-int-or-string: true
+ resource:
+ description: 'Required: resource to select'
+ type: string
+ required:
+ - resource
+ type: object
+ secretKeyRef:
+ description: Selects a key of a secret in
+ the pod's namespace
+ properties:
+ key:
+ description: The key of the secret to
+ select from. Must be a valid secret
+ key.
+ type: string
+ name:
+ description: 'Name of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion,
+ kind, uid?'
+ type: string
+ optional:
+ description: Specify whether the Secret
+ or its key must be defined
+ type: boolean
+ required:
+ - key
+ type: object
+ type: object
+ required:
+ - name
+ image:
+ type: string
+ imagePullPolicy:
+ type: string
+ labels:
+ type: object
+ additionalProperties:
+ type: string
+ scope:
+ type: string
+ pattern: ^(Namespaced|Cluster)$
+ permissions:
+ type: array
+ items:
+ type: object
+ minProperties: 3
+ required:
+ - apiGroups
+ - resources
+ - verbs
+ properties:
+ apiGroups:
+ type: array
+ items:
+ type: string
+ resources:
+ type: array
+ items:
+ type: string
+ verbs:
+ type: array
+ items:
+ type: string
+ resourceNames:
+ type: array
+ items:
+ type: string
+ nonResourceURLs:
+ type: array
+ items:
+ type: string
+ configMaps:
+ type: array
+ items:
+ type: object
+ minProperties: 2
+ properties:
+ name:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ mountPath:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ secrets:
+ type: array
+ items:
+ type: object
+ minProperties: 2
+ properties:
+ name:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ mountPath:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ hostFileVolumes:
+ type: array
+ items:
+ type: object
+ minProperties: 3
+ properties:
+ name:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ mountPath:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ nodePath:
+ type: string
+ allowEmptyValue: false
+ minLength: 1
+ securityContext:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ hostPID:
+ type: boolean
+
+ served: true
+ storage: true
+ subresources: {}
+ conversion:
+ strategy: None
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: chaosresults.litmuschaos.io
+spec:
+ group: litmuschaos.io
+ names:
+ kind: ChaosResult
+ listKind: ChaosResultList
+ plural: chaosresults
+ singular: chaosresult
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ type: object
+ 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/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ status:
+ x-kubernetes-preserve-unknown-fields: true
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+ conversion:
+ strategy: None
\ No newline at end of file
diff --git a/translations/README-chn.md b/translations/README-chn.md
index 33d52e49058..64a94136c25 100644
--- a/translations/README-chn.md
+++ b/translations/README-chn.md
@@ -70,7 +70,7 @@ Check out the
- CNCF Landscape
+ CNCF Landscape
diff --git a/translations/README-es.md b/translations/README-es.md
index 51ce4dcd4cd..9e54e713285 100644
--- a/translations/README-es.md
+++ b/translations/README-es.md
@@ -76,7 +76,7 @@ Litmos está licenciado bajo la Licencia Apache, versión 2.0. Ver el texto comp
Litmus Chaos forma parte de los projectos CNCF.
-[![CNCF](https://github.com/cncf/artwork/blob/master/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
+[![CNCF](https://github.com/cncf/artwork/blob/main/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
## Communidad
@@ -97,5 +97,5 @@ Recursos de la comunidad:
- CNCF Landscape
+ CNCF Landscape
diff --git a/translations/README-fr.md b/translations/README-fr.md
index d01095340ba..85fa48ddfca 100644
--- a/translations/README-fr.md
+++ b/translations/README-fr.md
@@ -75,7 +75,7 @@ Litmus est concédé sous licence Apache, version 2.0. Voir [LICENCE](./LICENSE)
Litmus Chaos fait partie des projets CNCF.
-[![CNCF](https://github.com/cncf/artwork/blob/master/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
+[![CNCF](https://github.com/cncf/artwork/blob/main/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
## Communauté
@@ -95,5 +95,5 @@ Ressources communautaires:
- Paysage CNCF
+ Paysage CNCF
diff --git a/translations/README-ge.md b/translations/README-ge.md
index db2f4bd48fc..6d0388edcfb 100644
--- a/translations/README-ge.md
+++ b/translations/README-ge.md
@@ -98,7 +98,7 @@ Bitte schaue bei den jeweiligen Projekt nach.
Litmus Chaos ist Teil der CNCF Projekte.
-[![CNCF](https://github.com/cncf/artwork/blob/master/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
+[![CNCF](https://github.com/cncf/artwork/blob/main/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
## Gemeinschaft
@@ -120,5 +120,5 @@ Kommunikationskanäle zum Austausch und für weitere Informationen:
- CNCF Landscape
+ CNCF Landscape
diff --git a/translations/README-hi.md b/translations/README-hi.md
index e248fcf1f29..6c1fd6f7dea 100644
--- a/translations/README-hi.md
+++ b/translations/README-hi.md
@@ -74,7 +74,7 @@
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Flitmuschaos%2Flitmus.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Flitmuschaos%2Flitmus?ref=badge_large)
लिटमस कैओस सीएनसीएफ परियोजनाओं का हिस्सा है।
-[![CNCF](https://github.com/cncf/artwork/blob/master/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
+[![CNCF](https://github.com/cncf/artwork/blob/main/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
## समुदाय
@@ -95,5 +95,5 @@
- सीएनसीएफ लैंडस्केप
+ सीएनसीएफ लैंडस्केप
diff --git a/translations/README-ja.md b/translations/README-ja.md
index fac31d83f66..9abf0bab16e 100644
--- a/translations/README-ja.md
+++ b/translations/README-ja.md
@@ -73,7 +73,7 @@ Litmus は Apache License, Version 2.0 の下でライセンスされていま
Litmus Chaos はCNCFプロジェクトの一部です。
-[![CNCF](https://github.com/cncf/artwork/blob/master/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
+[![CNCF](https://github.com/cncf/artwork/blob/main/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
## コミュニティ
@@ -94,5 +94,5 @@ Litmusコミュニティミーティングは毎月第3水曜日の10:00PM IST/9
- CNCF Landscape
+ CNCF Landscape
diff --git a/translations/README-ko.md b/translations/README-ko.md
index 94a142d6bfc..c473baa882b 100644
--- a/translations/README-ko.md
+++ b/translations/README-ko.md
@@ -158,5 +158,5 @@ LitmusChaos는 CNCF 프로젝트의 일부입니다.
- CNCF Landscape
+ CNCF Landscape
diff --git a/translations/README-pt-br.md b/translations/README-pt-br.md
index 01c8f85748f..05c591c9110 100644
--- a/translations/README-pt-br.md
+++ b/translations/README-pt-br.md
@@ -72,7 +72,7 @@ Litmus é licenciado através da Apache License, Version 2.0. Veja [LICENSE](../
Litmus Chaos faz parte dos projetos CNCF.
-[![CNCF](https://github.com/cncf/artwork/blob/master/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
+[![CNCF](https://github.com/cncf/artwork/blob/main/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
## Comunidade
@@ -95,5 +95,5 @@ Recursos da comunidade:
- CNCF Landscape
+ CNCF Landscape
diff --git a/translations/README-ru.md b/translations/README-ru.md
index 707af6d6aca..223f62394f1 100644
--- a/translations/README-ru.md
+++ b/translations/README-ru.md
@@ -70,7 +70,7 @@ Litmus находится под Apache License, Version 2.0. Полный те
Litmus Chaos является частью проектов CNCF.
-[![CNCF](https://github.com/cncf/artwork/blob/master/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
+[![CNCF](https://github.com/cncf/artwork/blob/main/other/cncf/horizontal/color/cncf-color.png)](https://landscape.cncf.io/selected=litmus)
## Комьюнити
@@ -91,5 +91,5 @@ Litmus Chaos является частью проектов CNCF.
- CNCF Landscape
+ CNCF Landscape